Tartalomjegyzék:

6502 Minimális számítógép (Arduino MEGA -val) 1. rész: 7 lépés
6502 Minimális számítógép (Arduino MEGA -val) 1. rész: 7 lépés

Videó: 6502 Minimális számítógép (Arduino MEGA -val) 1. rész: 7 lépés

Videó: 6502 Minimális számítógép (Arduino MEGA -val) 1. rész: 7 lépés
Videó: Home made 6502 breadboard computer playing chess 2024, November
Anonim
6502 Minimális számítógép (Arduino MEGA -val) 1. rész
6502 Minimális számítógép (Arduino MEGA -val) 1. rész

A 6502 mikroprocesszor először 1975 -ben jelent meg, és egy kis csapat tervezte, Chuck Peddle vezetésével a MOS Technology számára. Akkoriban videokonzolokon és otthoni számítógépeken használták, beleértve az Atarit, az Apple II -t, a Nintendo Entertainment System -et, a BBC Micro -t, a Commodore VIC20 -at és a 64 -et. Akkoriban ez volt az egyik legolcsóbb a piacon. Soha nem szűnt meg igazán, és most hobbisták és szakemberek használják számos alkalmazáshoz.

Az általam használt verzió a W65C02S6TPG-14, amelyet a Western Design Center készített, és tízszer kevesebb energiát fogyaszt, mint az eredeti. Különlegessége, hogy nem kell 1 MHz -en futnia, mint az eredeti chipnek. Sokkal lassabban is futtatható, vagy egyetlen lépésben használható egy programon, és akár 14 MHz -ig is fokozható. A chip adatlapja elmagyarázza a képességeit. Más 6502 chipek nem rendelkeznek ezzel a képességgel, és nem fognak így futni. A chipek jelenleg az Ebay -en és más forrásokban is elérhetők.

Kellékek

Az összes használt alkatrész jelenleg elérhető az Ebay -en, az AliExpress -en és másokon.

1. lépés: A koncepció

Az inspirációt Ben Eater -től kaptam, aki számos videót készített a YouTube -on a 6502 -ről és a számítógépek és áramkörök építésének számos más aspektusáról. A programot eredetileg ő írta, és ezt és néhány tervét módosítottam, hogy elkészítsem ezt az Instructable -t. Egy másik személy, aki inspirált, Andrew Jacobs volt, akinek van egy GitHub -szekciója, ahol egy PIC mikro segítségével vezérli 6502 -jét.

Benhez hasonlóan én is egy Arduino MEGA -t használok a 6502 monitorozásához. Én is a MEGA -t használom az órajel biztosítására, ellentétben Bennel. Jelenleg sem EEPROM -okat, sem RAM -ot nem használok.

2. lépés: Követelmények

Követelmények
Követelmények

Ennek a "számítógépnek" az elkészítéséhez az elemek listája a következő:

1 x Arduino MEGA

1 x Western Design Center W65C02S6TPG-14

1 x 74HC00N IC (négy bemenetű NAND kapu) vagy hasonló

1 x 74HC373N IC (Octal D típusú átlátszó retesz) vagy hasonló

2 x 830 lyukú kenyérlap (1 csipetnyi)

Különböző Dupont dugó - férfi vezetékek és összekötő vezetékek

2 x LED (én 5 mm -es kéket használtam, mivel ellenállások nélkül megúszhatja)

1 x 12 mm -es pillanatnyi tapintható nyomógombos kapcsoló NYÁK -ra szerelt SPST vagy hasonló

1 x 1K ellenállás

2 x 0,1 uF kerámia kondenzátor

1 x 8 -utas vízfény sátor 5 mm -es piros LED (mint fent) vagy 8 LED és ellenállás

MEGJEGYZÉS: Ha megkapja a nem forrasztott készletet, akkor a LED -eket rossz irányba helyezheti be, így azok közös katódok. Rögzítek egy légyvezetéket (a csap helyett), hogy könnyen összeköthessem máshol. A VCC mostantól Ground lesz. Természetesen megfordíthatja a LED-eket (egy összeszerelt elemen) és újra forraszthatja őket, de ez sok faff! A készletek jelenleg az AliExpressen érhetők el.

3. lépés: Összerakás

Összerakása
Összerakása
Összerakása
Összerakása

Könnyebbnek találtam az új DuPont vezetékek használatát, amelyeket nem választottak el a szalagtól a cím- és adatbuszokhoz.

Csatlakoztassa a 6502 9. tűjét (A0) a MEGA 52. tűjéhez, a 6502 10 -es csapja (A1) az 50 -es csaphoz stb …

amíg

Csatlakoztassa a 6502 25. tűjét (A15) a MEGA 22. tűjéhez.

Eddig 16 kapcsolat.

Hasonlóképpen

Csatlakoztassa a 6502 26. tűjét (D7) a MEGA 39. tűjéhez, a 6502 27. csapja (D6) a 41 -es csaphoz stb.

amíg

Csatlakoztassa a 6502 33. (D0) tűjét a MEGA 53. tűjéhez.

8 további kapcsolat.

Csatlakoztassa a 8. tüskét (VDD) az 5 V -hoz a MEGA -n.

Ebben az esetben hasznos lehet egy 0,1uF kondenzátor, amely a kenyértábla 8 -as érintkezőjéhez és Gnd -jéhez van csatlakoztatva.

Csatlakoztassa a 21 -es csapot (VSS) a GEG -hez a MEGA -n.

A 2, 4, 6, 36 és 38 csapok 5v -ra köthetők

Csatlakoztassa a 37. tűt (óra) a MEGA 2. és 7. tűjéhez.

Csatlakoztassa a 34. tűt (RWB) a MEGA 3. tűjéhez.

Csatlakoztassa a 40 -es csapot (Reset) a fenti ábra szerint.

4. lépés: Az áramkör tesztelése

Az áramkör tesztelése
Az áramkör tesztelése

Ebben a szakaszban a 6502 működik, és a program1 használható. Ha a nyolcirányú sátrat használja (a fentiek szerint), akkor egyenesen behelyezhető a kenyértáblába, és a légyvezeték a földhöz csatlakoztatható, vagy használhat 8 LED -et és ellenállást. A LED -ek megmutatják, hogy mi van az adatbuszon.

Ebben a szakaszban a Loop () késleltetését is 500 -ra vagy többre kell állítani, hogy követni lehessen a történéseket.

A soros monitoron hasonló kimenetet kell kapnia, mint a fenti. Amikor megnyomja a Reset gombot, a processzor 7 cikluson megy keresztül, majd megkeresi a program kezdetét a $ FFFC és $ FFFD helyeken. Mivel a 6502 -nek nincs fizikai olvasható címe, ezeket a MEGA -ból kell megadnunk.

A fenti kimeneten a 6502 $ FFFC és $ FFFD értékeket olvas, és 00 és 10 dollárt (Alacsony bájt, Magas bájt) kap, ami a program kezdete 1000 dollárnál. A processzor ezután elkezdi végrehajtani a programot $ 1000 helyen (a fentiek szerint). Ebben az esetben $ A9 és $ 55, azaz LDA#$ 55 (85 -ös betöltése az akkumulátorba). Ismét, mivel nincs fizikai memóriahely, a MEGA szimulálja az adatbuszon olvasottakat.

$ 55 (85) a 01010101 bináris mintát adja, és 1 bit balra forgatva $ AA (170) 10101010 értéket ad.

A program azt mutatja, hogy a processzor megfelelően működik, de hamarosan unalmassá válik, így tovább a következő részhez.

5. lépés: Következő lépés

Következő lépés
Következő lépés
Következő lépés
Következő lépés

A fenti "spagettihalom" valószínűleg valami hasonló lesz ahhoz, ami a szakasz után lesz.

Ezután hozzá kell adnia a 74HC373N és 74HC00N IC -ket a kenyértáblához.

Sajnos a 373 csapjai nem egyeznek az adat busszal, ezért vezetékekkel kell bekötni.

Csatlakoztassa az 5V -ot a 20 -as érintkezőhöz.

Csatlakoztassa a földet a 10 -es tűhöz.

Csatlakoztassa a 6502 -es 33 -as (D0) tüskét a 74HC373N 3 -as (D0) -hoz

és hasonlóképpen a D1 -D7 csapokkal.

A Q0 -tól a Q7 -ig terjedő kimenetek a kimenetek, amelyeket csatlakoztatni kell a LED -sátorhoz vagy az egyes LED -ekhez és ellenállásokhoz.

A 74HC00 csak két kapujára van szükség

Csatlakoztassa az 5V -ot a 14 -es tűhöz.

Csatlakoztassa a földet a 7 -es érintkezőhöz.

Csatlakoztassa a 6502 17. (A8) tüskéjét a 74HC00 1. tűjéhez (1A)

Csatlakoztassa a 6502 25. tűjét (A15) a 74HC00 2. tűjéhez (1B)

Csatlakoztassa a 6502 34. (R/W) érintkezőjét a 74HC00 5. (2B) tűjéhez

Csatlakoztassa a 74HC00 3. tűjét (1Y) a 74HC00 4. tűjéhez (2A)

Csatlakoztassa a 74HC00 6. tűjét (2Y) a 74HC373N 11. tűjéhez (LE)

Csatlakoztassa a 74HC373N 11. tűjét (LE) a 74HC373N 1. tűjéhez (OE)

Kék LED -et csatlakoztathat az 1Y és a földeléshez, valamint a 2Y a földhöz, ez jelzi, amikor a kapu aktív.

Végül változtassa meg az onClock eljárás sorát program1 -ről program2 -re

setDataPins (program2 [eltolás]);

6. lépés: A program

A program
A program
A program
A program

A 6502-monitor program tartalmazza a fent leírt két 6502 rutinot.

A program még fejlesztés alatt áll, és egy kicsit rendezetlen.

A program2 futtatásakor a ciklus () késleltetése legfeljebb 50 lehet, és akár teljesen megszüntethető. A Serial.print () sorok megjegyzése szintén gyorsítja a 6502 futását. A 373 -as első csapjának (OE) leválasztása a 11 -es tűről (LE) különböző eredményeket eredményez. A 373 -as 1. és 11. csapjának leválasztása a NAND -kapukról lehetővé teszi, hogy minden órajel alatt láthassa, mi van az adatbuszon.

Előfordulhat, hogy az OE -t a földhöz kell kötnie, ahelyett, hogy lebegne, mivel a 8 kimeneti vonal le van tiltva, ha ez a csap magas lesz. Ha a LE csap magas, a kimeneti csapok megegyeznek a bemenetekkel. Ha az LE csapot alacsonyan tartja, rögzíti a kimeneteket, azaz ha a bemeneti csapok megváltoznak, a kimenetek változatlanok maradnak.

Megpróbáltam a programot a lehető legegyszerűbbé tenni, hogy könnyebben érthető legyen.

Az időkésleltetéssel végzett kísérletezés lehetővé teszi, hogy pontosan kövesse a 6502 munkáját.

Az alábbiakban bemutatjuk a 6502 Assembler két programját (mindkettő 1000 dolláros címen fut):

program1

LDA#55 dollár

NOP

ROL

1010 USD

1000 JMP

A ROL egy bitnyit elforgatja az akkumulátor tartalmát, ami azt jelenti, hogy az 55 dollár most AA dollár lesz.

Gépkódban (hexadecimális): A9 55 EA 2A 8D 10 10 4C 00 10

program2

LDA#$ 01

8100 USD

ADC#$ 03

8100 USD

1005 JMP dollár

Gépkódban (hexadecimális): A9 01 8D 00 81 69 03 8D 00 81 4C 05 10

A program2 -ben már van egy fizikai cím $ 8100, ahol a 74HC373 található a címbuszon.

azaz a 6502 -ből A15 32768 (8000 USD), az A8 pedig 256 (0100 USD) = 33024 (8100 USD).

Tehát amikor a 6502 8100 dollárra ír (STA $ 8100), a 6502 R/W értéke alacsony, és a 6502 -es adatbuszon lévő adatok reteszelnek, amikor a 373 LE alacsony. A 74HC00 NAND kapu miatt a jelek megfordulnak.

A fenti szitanyomaton a második írás 3 -mal nőtt (ADC#$ 03) - 7F dollárról 82 USD -ra nőtt.

A valóságban a címbusz több mint 2 sorát használnák a 373 -as készülék konkrét helyére. Mivel ez az egyetlen fizikai cím a lehetséges 65536 közül, bemutatja a címbusz működését. Kísérletezhet különböző címtűkkel, és más helyre teheti. Természetesen módosítania kell az STA operandusokat az új helyre. például. Ha az A15 és A9 címsort használná, a cím 8200 dollár lenne (32768 + 512).

7. lépés: Következtetés

Következtetés
Következtetés

Megpróbáltam demonstrálni, hogy milyen egyszerű a 6502 üzembe helyezése.

Nem vagyok szakértő ezen a területen, ezért minden építő jellegű észrevételt vagy információt szívesen fogadok.

Szívesen továbbfejleszti ezt, és kíváncsi lennék arra, amit tett.

EEPROM -ot, SRAM -ot és 6522 -et kívánok hozzáadni a projekthez, valamint a jövőben a szalaglapra helyezni.

Ajánlott: