Агуулгын хүснэгт:

6502 Minimal Computer (Arduino MEGA -тай хамт) 1 -р хэсэг: 7 алхам
6502 Minimal Computer (Arduino MEGA -тай хамт) 1 -р хэсэг: 7 алхам

Видео: 6502 Minimal Computer (Arduino MEGA -тай хамт) 1 -р хэсэг: 7 алхам

Видео: 6502 Minimal Computer (Arduino MEGA -тай хамт) 1 -р хэсэг: 7 алхам
Видео: Arduino Mega 6502 - Work in Progress #1 2024, Долдугаар сарын
Anonim
6502 Хамгийн бага компьютер (Arduino MEGA -тай хамт) 1 -р хэсэг
6502 Хамгийн бага компьютер (Arduino MEGA -тай хамт) 1 -р хэсэг

6502 микропроцессор анх 1975 онд гарч ирсэн бөгөөд үүнийг MOS технологийн Чак Педдлээр ахлуулсан жижиг баг зохион бүтээжээ. Тухайн үед үүнийг видео консол, гэрийн компьютер, Atari, Apple II, Nintendo Entertainment System, BBC Micro, Commodore VIC20, 64 зэрэгт ашигладаг байсан. Тухайн үед энэ нь зах зээл дээр хамгийн хямд байсан. Энэ нь хэзээ ч алга болоогүй бөгөөд одоо үүнийг хобби сонирхогчид болон мэргэжлийн хүмүүс олон хэрэглээнд ашигладаг.

Миний ашиглаж байгаа хувилбар бол W65C02S6TPG-14 бөгөөд Баруун дизайны төвд хийгдсэн бөгөөд анхны хувилбараасаа арав дахин бага хүч зарцуулдаг. Энэ нь анхны чип шиг 1 МГц давтамжтай ажиллах шаардлагагүй гэдгээрээ онцлог юм. Энэ нь хамаагүй удаан ажиллах боломжтой эсвэл програмыг нэг алхам хийхэд ашиглаж болох бөгөөд 14 МГц хүртэл давтамжтай болно. Чипийн мэдээллийн хуудас нь түүний чадварыг тайлбарладаг. Бусад 6502 чипүүд ийм чадваргүй бөгөөд ийм байдлаар ажиллахгүй. Чипсийг одоогоор Ebay болон бусад эх сурвалжаас авах боломжтой.

Хангамж

Ашигласан бүх эд ангиудыг одоогоор Ebay, AliExpress болон бусад дээрээс авах боломжтой.

Алхам 1: Үзэл баримтлал

Би YouTube -д 6502 болон компьютер, хэлхээ бүтээх бусад олон талаар хэд хэдэн видео бичлэг хийсэн Бен Итерээс урам зориг авсан. Хөтөлбөрийг анх өөрөө бичсэн бөгөөд би энэ болон түүний зарим загварыг энэхүү зааварчилгааг гаргахын тулд өөрчилсөн. Надад урам зориг өгсөн өөр нэг хүн бол GitHub дээр 6502 -ийг удирдахын тулд PIC микро ашигладаг хэсэг бүхий Эндрю Жэйкобс байв.

Бен шиг би 6502 -ийг хянахын тулд Arduino MEGA ашиглаж байна. Би Бенээс ялгаатай цагийн дохиог хангахын тулд MEGA -ийг ашиглаж байна. Одоогийн байдлаар би EEPROM эсвэл RAM ашигладаггүй.

Алхам 2: Шаардлага

Шаардлага
Шаардлага

Энэхүү "компьютерийг" бүтээхийн тулд эд зүйлсийн жагсаалт дараах байдалтай байна.

1 x Arduino MEGA

1 x Баруун дизайны төв W65C02S6TPG-14

1 x 74HC00N IC (2 оролттой NAND хаалга) эсвэл үүнтэй төстэй

1 x 74HC373N IC (Octal D хэлбэрийн тунгалаг түгжээ) эсвэл үүнтэй төстэй

2 х 830 нүхтэй талхны хавтан (1 чимхээр)

Төрөл бүрийн Дюпон эрэгтэй - эрэгтэй утас, холболтын утас

2 x LED (5мм цэнхэр өнгийг ашигласан тул та резисторгүй бол зугтаж чадна)

1 х 12 мм -ийн түр зуурын хүрэлцэх товчлуурыг ПХБ -д суурилуулсан SPST эсвэл үүнтэй төстэй

1 x 1K эсэргүүцэл

2 x 0.1 uF керамик конденсатор

1 x 8 Way Water Light Marquee 5mm улаан LED (дээрх шиг) эсвэл 8 LED ба резистор

ТАЙЛБАР: Хэрэв та зарагдаагүй иж бүрдэл авбал LED -ийг буруу эргүүлж, нийтлэг катод болгож болно. Би хаа нэгтээ амархан холбогдож болохын тулд ялаа хар тугалга (зүүний оронд) холбодог. VCC одоо Ground болно. Мэдээжийн хэрэг та LED-ийг эргүүлж (угсарсан зүйл дээр) дахин гагнах боломжтой, гэхдээ энэ бол маш их зүйл юм! Одоогоор AliExpress дээр иж бүрдэл байгаа.

Алхам 3: Үүнийг нэгтгэх

Үүнийг хамтад нь оруулах
Үүнийг хамтад нь оруулах
Үүнийг хамтад нь оруулах
Үүнийг хамтад нь оруулах

Хаяг болон өгөгдлийн автобусанд туузнаасаа салгаагүй шинэ DuPont утас ашиглах нь надад илүү хялбар болсон.

6502 -ийн 9 (A0) зүүг MEGA -ийн 52 -р зүүтэй холбоно уу.

6502 -ийн 10 (A1) зүү 50 хүртэл зүү хүртэл …

хүртэл

6502 -ийн 25 (A15) зүүг MEGA -ийн 22 -р зүүтэй холбоно уу.

Одоогийн байдлаар 16 холболт байна.

Үүнтэй адил

6502 -ийн 26 (D7) зүүг MEGA -ийн 39 -р зүүтэй холбоно уу.

6502 -ийн 27 (D6) зүү 41 -р зүү гэх мэт …

хүртэл

6502 -ийн 33 (D0) зүүг MEGA -ийн 53 -р зүүтэй холбоно уу.

Өөр 8 холболт.

8 -р зүү (VDD) -ийг MEGA дээрх 5v -т холбоно уу.

Талхны тавцангийн 8 -р цэгээс Gnd хүртэл холбогдсон 0.1uF конденсатор энд ашигтай байж магадгүй, гэхдээ шаардлагагүй.

21 -р зүүг (VSS) MEGA дээрх Gnd руу холбоно уу.

2, 4, 6, 36, 38 -р зүүг 5v -д холбож болно

37 -р зүү (Clock) -ийг MEGA -ийн 2 ба 7 -р зүү рүү холбоно уу.

34 -р зүү (RWB) -ийг MEGA -ийн 3 -р зүү рүү холбоно уу.

40 -р зүүг (Дахин тохируулах) дээрх диаграммын дагуу холбоно уу.

Алхам 4: Хэлхээг шалгах

Цахилгаан хэлхээг туршиж байна
Цахилгаан хэлхээг туршиж байна

Энэ үе шатанд 6502 ажиллах бөгөөд програм1 -ийг ашиглах боломжтой болно. Хэрэв та 8 талын маркийг ашиглаж байгаа бол (дээрх шиг) үүнийг талхны самбар дээр шууд холбож, залгуурыг газарт холбож болно, эсвэл 8 LED ба резистор ашиглаж болно. LED нь өгөгдлийн шугам дээр юу байгааг харуулах болно.

Энэ үе шатанд Loop () дэх саатлыг 500 ба түүнээс дээш болгож, юу болж байгааг дагах нь зүйтэй юм.

Та дээрх шиг сериал монитор дээр ижил төстэй гаралтыг авах ёстой. Дахин тохируулах товчлуур дээр дарахад процессор 7 мөчлөгийг давж, $ FFFC ба $ FFFD байршлуудад програмын эхлэлийг хайж олох болно. 6502 -г унших физик хаяг байхгүй тул бид тэдгээрийг MEGA -аас нийлүүлэх ёстой.

Дээрх гаралт дээр 6502 нь $ FFFC ба $ FFFD -ийг уншиж, 00 ба 10 доллар (Бага байт, Өндөр байт) авдаг бөгөөд энэ нь програмын эхлэл нь 1000 доллар юм. Дараа нь процессор програмыг $ 1000 байршилд ажиллуулж эхэлдэг (дээрх шиг). Энэ тохиолдолд $ A9 ба $ 55 гэж уншдаг, өөрөөр хэлбэл LDA#55 $ (85 -ийг аккумляторт ачаална уу). Дахин санах ойн байршил байхгүй тул MEGA нь өгөгдлийн автобуснаас уншсан зүйлийг дуурайдаг.

$ 55 (85) нь 01010101 хоёртын загварыг өгөх ба 1 бит зүүн эргүүлэхэд $ AA (170) 10101010 өгнө.

Хөтөлбөр нь процессор зөв ажиллаж байгаа боловч удалгүй жаахан уйтгартай болж байгааг харуулж байна.

Алхам 5: Дараагийн алхам

Дараагийн алхам
Дараагийн алхам
Дараагийн алхам
Дараагийн алхам

Дээрх "спагетти овоолго" нь энэ үе шат дууссаны дараа танд ямар байх бол гэх мэт зүйл байж магадгүй юм.

Дараа нь та 74HC373N ба 74HC00N IC -ийг талхны самбар дээр нэмэх хэрэгтэй.

Харамсалтай нь 373 -ийн тээглүүр нь өгөгдлийн автобусанд нийцдэггүй тул утсаар холбох шаардлагатай болно.

5V -ийг 20 -р зүү рүү холбоно уу.

Ground -ийг 10 -р зүү рүү холбоно уу.

6502 -ийн 33 (D0) зүүг 74HC373N -ийн 3 (D0) зүүтэй холбоно уу

мөн D1 -ээс D7 хүртэлх зүүгээр.

Q0 - Q7 бол гаралт бөгөөд эдгээрийг LED марк эсвэл бие даасан LED ба резистортой холбох шаардлагатай болно.

74HC00 -ийн хувьд зөвхөн 2 хаалга хэрэгтэй болно

5V -ийг 14 -р зүү рүү холбоно уу.

Ground -ийг 7 -р зүү рүү холбоно уу.

6502 -ийн 17 (A8) зүүг 74HC00 -ийн 1 (1А) зүүтэй холбоно уу

6502 -ийн 25 (A15) зүүг 74HC00 -ийн 2 (1B) зүүтэй холбоно уу

6502 -ийн 34 (R/W) зүүг 74HC00 -ийн 5 (2B) зүүтэй холбоно уу

74HC00 -ийн 3 (1Y) зүүг 74HC00 -ийн 4 (2A) зүүтэй холбоно уу

74HC00 -ийн 6 (2Y) зүүг 74HC373N -ийн 11 (LE) зүүтэй холбоно уу.

74HC373N -ийн 11 -р зүүг (LE) 74HC373N -ийн 1 -р зүүтэй (OE) холбоно уу.

Та цэнхэр LED -ийг 1Y, газардуулга, мөн 2Y -ийг газардуу холбож болох бөгөөд энэ нь хаалга идэвхжсэн байгааг харуулна.

Эцэст нь onClock процедурын мөрийг program1 -ээс program2 болгон өөрчилнө үү

setDataPins (program2 [offset]);

Алхам 6: Хөтөлбөр

Хөтөлбөр
Хөтөлбөр
Хөтөлбөр
Хөтөлбөр

6502-Monitor програм нь дээр дурдсан 6502 гэсэн хоёр горимыг агуулдаг.

Хөтөлбөрийг боловсруулж байгаа бөгөөд жаахан эмх цэгцгүй байна.

Program2 -ийг ажиллуулахдаа давталтын () саатал 50 ба түүнээс бага байж, бүрмөсөн арилгаж болно. Serial.print () мөрүүдийг тайлбарлах нь 6502 -ийг илүү хурдан ажиллуулдаг. 373 -ийн 1 -р зүү (OE) -ийг 11 -р зүү (LE) -ээс салгахад өөр өөр үр дүн гардаг. NAND хаалганаас 373 -ийн 1 -р зүү, 11 -р зүүг салгах нь өгөгдлийн автобусанд юу байгааг цаг бүрийн мөчлөг бүрт харах боломжийг олгодог.

Хэрэв энэ зүү өндөр байвал 8 гаралтын шугамыг идэвхгүй болгосон тул OE -ийг хөвөхөөс илүүтэй газартай холбох шаардлагатай байж магадгүй юм. LE зүү өндөр байх үед гаралтын тээглүүр нь оролттой ижил байна. LE зүүг бага авснаар гаралт түгжигдэнэ, өөрөөр хэлбэл оролтын зүү өөрчлөгдвөл гаралт хэвээр үлдэнэ.

Би ойлгоход хялбар болгохын тулд програмыг аль болох энгийн байлгахыг хичээсэн.

Цаг хугацааны хоцролтыг туршиж үзэх нь 6502 -ийн хийж буй зүйлийг яг таг дагах боломжийг танд олгоно.

6502 Assembler дээрх хоёр програм (хоёулаа $ 1000 хаягаар ажилладаг) доор байна.

хөтөлбөр1

LDA#55 доллар

ҮГҮЙ

ROL

STA $ 1010

JMP $ 1000

ROL нь аккумляторын агуулгыг нэг бит зүүн тийш эргүүлдэг бөгөөд энэ нь 55 доллар нь одоо $ AA болно гэсэн үг юм.

Машины кодонд (зургаан өнцөгт): A9 55 EA 2A 8D 10 10 4C 00 10

хөтөлбөр2

LDA#01 доллар

СТА 8100 доллар

ADC#03 доллар

STA 8100 доллар

JMP 1005 доллар

Машины кодонд (зургаан өнцөгт): A9 01 8D 00 81 69 03 8D 00 81 4C 05 10

Програм2 -д одоо 8100 долларын физик хаяг байгаа бөгөөд 74HC373 нь хаягийн автобусанд байрладаг.

өөрөөр хэлбэл 6502 -ийн A15 нь 32768 ($ 8000), A8 нь 256 ($ 0100) = 33024 ($ 8100) байна.

Тиймээс 6502 нь 8100 $ (STA $ 8100) руу бичих үед 6502 -ийн R/W бага, 373 LE буурах үед 6502 өгөгдлийн автобусны өгөгдөл түгжигддэг. 74HC00 NAND Gate -ийн ачаар дохио эргэж ирдэг.

Дээрх дэлгэц дээр хоёр дахь бичээсийг 3 -аар (ADC#$ 03) нэмэгдүүлж $ 7F -аас $ 82 болгон хэвлэв.

Бодит байдал дээр 373 -ийн тодорхой байршилд хаягийн автобусны 2 -оос дээш шугамыг ашиглах болно. Энэ нь боломжтой 65536 хаягаас цорын ганц физик хаяг тул хаягийн автобус хэрхэн ажилладагийг харуулж байна. Та өөр өөр хаягийн тээглүүр ашиглан туршилт хийж, өөр газар байрлуулж болно. Мэдээжийн хэрэг, та СТА операндуудыг шинэ байршилд өөрчлөх хэрэгтэй болно. жишээ нь Хэрэв та A15 ба A9 хаягийн мөрүүдийг ашигласан бол хаяг нь $ 8200 (32768 + 512) байх болно.

Алхам 7: Дүгнэлт

Дүгнэлт
Дүгнэлт

Би 6502 -ийг ажиллуулах нь хичнээн хялбар болохыг харуулахыг хичээсэн.

Би энэ чиглэлээр мэргэшсэн хүн биш тул аливаа бүтээлч сэтгэгдэл, мэдээллийг хүлээж авах болно.

Та үүнийг цаашид хөгжүүлэхийг урьж байна, би таны хийсэн зүйлийг сонирхож байна.

Би төсөлд EEPROM, SRAM, 6522 -ийг нэмж, туузан самбар дээр байрлуулах бодолтой байна.

Зөвлөмж болгож буй: