Sisukord:

6502 minimaalne arvuti (koos Arduino MEGA -ga) 1. osa: 7 sammu
6502 minimaalne arvuti (koos Arduino MEGA -ga) 1. osa: 7 sammu

Video: 6502 minimaalne arvuti (koos Arduino MEGA -ga) 1. osa: 7 sammu

Video: 6502 minimaalne arvuti (koos Arduino MEGA -ga) 1. osa: 7 sammu
Video: Let's Play PC Building Simulator (Session 4) 2024, November
Anonim
6502 minimaalne arvuti (koos Arduino MEGA -ga) 1. osa
6502 minimaalne arvuti (koos Arduino MEGA -ga) 1. osa

6502 mikroprotsessor ilmus esmakordselt 1975. aastal ja selle kujundas väike meeskond, mida juhtis Chuck Peddle MOS -tehnoloogia jaoks. Siis kasutati seda videokonsoolides ja koduarvutites, sealhulgas Atari, Apple II, Nintendo Entertainment System, BBC Micro, Commodore VIC20 ja 64. Tol ajal oli see üks odavamaid turul. See pole kunagi kuhugi kadunud ja nüüd kasutavad seda harrastajad ja spetsialistid paljude rakenduste jaoks.

Minu kasutatav versioon on W65C02S6TPG-14, mille on teinud Lääne disainikeskus ja mis kasutab kümme korda vähem energiat kui originaal. See on eriline selle poolest, et see ei pea töötama sagedusel 1 MHz nagu algne kiip. See võib töötada palju aeglasemalt või seda saab kasutada programmi ühe sammuna ja isegi kuni 14 MHz. Kiibi andmeleht selgitab selle võimalusi. Teistel 6502 kiipidel seda võimalust pole ja need ei tööta sel viisil. Kiibid on praegu saadaval nii Ebays kui ka muudes allikates.

Tarvikud

Kõik kasutatud osad on praegu saadaval Ebays, AliExpressis ja teistes.

1. samm: kontseptsioon

Sain inspiratsiooni Ben Eaterilt, kes on YouTube'is tootnud videoid 6502 ja paljudest muudest arvutite ja vooluahelate ehitamise aspektidest. Programmi kirjutas ta algselt ja ma olen seda ja mõnda tema kujundust modifitseerinud, et see juhend välja pakkuda. Teine inimene, kes mind inspireeris, oli Andrew Jacobs, kellel on GitHubi alajaotis, kus ta kasutab oma 6502 juhtimiseks PIC -mikro.

Nagu Ben, kasutan ka 6502 jälgimiseks Arduino MEGA -d. Erinevalt Benist kasutan ka kella signaali edastamiseks MEGA -d. Praegu ei kasuta ma ka EEPROM -e ega RAM -i.

2. samm: nõuded

Nõuded
Nõuded

Selle "arvuti" ehitamiseks on üksuste loend järgmine:

1 x Arduino MEGA

1 x Lääne disainikeskus W65C02S6TPG-14

1 x 74HC00N IC (neljas 2-sisendiga NAND-värav) või sarnane

1 x 74HC373N IC (Octal D-tüüpi läbipaistev riiv) vms

2 x 830 auguga leivalauda (1 näputäis)

Erinevad Duponti isased - isased juhtmed ja ühendusjuhtmed

2 x LED -d (ma kasutasin 5 mm sinist värvi, kuna takistiteta pääsete)

1 x 12 mm hetkeline puutetundlik nupplüliti trükkplaadile paigaldatud SPST või sarnane

1 x 1K takisti

2 x 0,1 uF keraamilised kondensaatorid

1 x 8 -suunaline veetuli 5 mm punane LED (nagu ülal) või 8 LED -i ja takistit

MÄRKUS. Kui saate komplekti, mida ei ole joodetud, saate valgusdioodid valesti sisestada, nii et need on tavalised katoodid. Kinnitan kärbsejuhtme (tihvti asemel), et see saaks mujal hõlpsasti ühenduda. VCC -st saab nüüd maa. Loomulikult saate LED-id ümber pöörata (kokkupandud esemel) ja uuesti jootma, kuid see on palju faff! Komplektid on praegu saadaval AliExpressis.

3. samm: pange see kokku

Selle kokku panemine
Selle kokku panemine
Selle kokku panemine
Selle kokku panemine

Leidsin, et aadressi- ja andmesiinide jaoks oli lihtsam kasutada uusi DuPonti juhtmeid, mida polnud lindilt eraldatud.

Ühendage 6502 tihvt 9 (A0) MEGA tihvtiga 52, 6502 tihvt 10 (A1) kuni tihvt 50 jne…

kuni

Ühendage 6502 tihvt 25 (A15) MEGA tihvtiga 22.

Seni 16 ühendust.

Samamoodi

Ühendage 6502 tihvt 26 (D7) MEGA tihvtiga 39, 6502 tihvt 27 (D6) kuni tihvt 41 jne…

kuni

Ühendage 6502 tihvt 33 (D0) MEGA tihvtiga 53.

Veel 8 ühendust.

Ühendage tihvt 8 (VDD) MEGA 5V -ga.

0,1uF kondensaator, mis on ühendatud leivaplaadi tihvtiga 8 kuni Gnd, võib siin olla kasulik, kuid mitte vajalik.

Ühendage tihvt 21 (VSS) MEGA Gnd -ga.

Tihvtid 2, 4, 6, 36 ja 38 saab siduda 5v külge

Ühendage tihvt 37 (kell) MEGA 2 ja 7 tihvtiga.

Ühendage tihvt 34 (RWB) MEGA kontaktiga 3.

Ühendage tihvt 40 (lähtestamine) ülaltoodud skeemi järgi.

Samm: vooluahela testimine

Vooluahela testimine
Vooluahela testimine

Selles etapis 6502 töötab ja programmi1 saab kasutada. Kui kasutate 8 -suunalist telki (nagu eespool), saab selle otse leivaplaati sisestada ja kärbsejuhtme maapinnaga ühendada või kasutada 8 LED -i ja takistit. LED -id näitavad, mis on andmesiinil.

Praeguses etapis oleks sama, kui toimuva jälgimiseks seada Loop () viivituseks 500 või rohkem.

Seeriamonitoril peaksite saama sarnase väljundi nagu ülal. Kui vajutada nuppu Lähtesta, läbib protsessor 7 tsüklit ja otsib seejärel programmi algust asukohtades $ FFFC ja $ FFFD. Kuna 6502 -l pole füüsilisi aadresse lugeda, peame need edastama MEGA -st.

Ülaltoodud väljundis loeb 6502 $ FFFC ja $ FFFD ning saab 00 ja 10 dollarit (madal bait, kõrge bait), mis on programmi algus 1000 dollari juures. Seejärel hakkab protsessor programmi käivitama asukohas $ 1000 (nagu eespool). Sel juhul on see A9 ja $ 55, st LDA#$ 55 (laadige akusse 85). Jällegi, kuna füüsilist mälu asukohta pole, simuleerib MEGA andmesiinist loetut.

$ 55 (85) annab kahendmustri 01010101 ja 1 bitti vasakule pöörates annab $ AA (170) 10101010.

Programm näitab, et protsessor töötab korrektselt, kuid muutub varsti natuke igavaks, nii et jätkake järgmise osaga.

5. samm: järgmine samm

Järgmine samm
Järgmine samm
Järgmine samm
Järgmine samm

Ülaltoodud "hunnik spagette" on tõenäoliselt midagi sellist, mis teil pärast seda etappi on.

Järgmisena peate leivalauale lisama 74HC373N ja 74HC00N IC -d.

Kahjuks ei ole 373 tihvtid andmesiiniga kooskõlas, seega tuleb need juhtmetega ühendada.

Ühendage 5v tihvtiga 20.

Ühendage maandus tihvtiga 10.

Ühendage 6502 tihvt 33 (D0) seadme 74HC373N tihvtiga 3 (D0)

ja samuti tihvtidega D1 kuni D7.

Q0 kuni Q7 on väljundid ja need peavad olema ühendatud LED -telgiga või üksikute LED -ide ja takistitega.

74HC00 -ga on vaja ainult kahte selle väravat

Ühendage 5v tihvtiga 14.

Ühendage maandus tihvtiga 7.

Ühendage 6502 tihvt 17 (A8) 74HC00 tihvtiga 1 (1A)

Ühendage 6502 tihvt 25 (A15) 74HC00 tihvti 2 (1B) külge

Ühendage 6502 tihvt 34 (R/W) 74HC00 tihvti 5 (2B) külge

Ühendage 74HC00 tihvt 3 (1Y) 74HC00 tihvtiga 4 (2A)

Ühendage 74HC00 tihvt 6 (2Y) 74HC373N tihvtiga 11 (LE)

Ühendage 74HC373N tihvt 11 (LE) 74HC373N tihvtiga 1 (OE)

Saate ühendada sinise LED -i 1Y ja maandusega, samuti 2Y maaga, see näitab, kui värav on aktiivne.

Lõpuks muutke onClocki protseduuri rida programmilt 1 programmile2

setDataPins (programm2 [nihe]);

6. samm: programm

Programm
Programm
Programm
Programm

Programm 6502-Monitor sisaldab kahte ülalkirjeldatud 6502 rutiini.

Programm on alles väljatöötamisel ja veidi korrastamata.

Programmi 2 käivitamisel võivad silmuse () viivitused olla 50 või vähem ja isegi kõrvaldada. Serial.print () ridade kommenteerimine muudab 6502 ka kiiremaks. 373 tihvti 1 (OE) lahtiühendamine tihvtiga 11 (LE) annab erinevaid tulemusi. 373 tihvti 1 ja tihvti 11 NAND -väravate küljest lahtiühendamine võimaldab teil igal kellaajal näha, mis on andmesiinil.

Kui see tihvt läheb kõrgele, peate võib -olla siduma OE maapinnaga, mitte jätma selle hõljuma, kuna 8 väljundliini on keelatud. Kui LE -tihvt on kõrge, on väljundtihvtid samad kui sisendid. Võttes LE -tihvti madalaks, lukustatakse väljundid, st kui sisendpoldid muutuvad, jäävad väljundid samaks.

Olen püüdnud hoida programmi võimalikult lihtsana, et seda oleks lihtsam mõista.

Ajaviivitustega katsetamine võimaldab teil täpselt jälgida, mida 6502 teeb.

Allpool on 6502 Assembleri kaks programmi (mõlemad töötavad aadressil $ 1000):

programm 1

LDA#55 dollarit

EI

ROL

1010 USA dollarit

JMP 1000 dollarit

ROL pöörab aku sisu ühe bitti vasakule, mis tähendab, et 55 dollarist saab nüüd AA dollar.

Masinakoodis (kuusnurk): A9 55 EA 2A 8D 10 10 4C 00 10

programm2

LDA#01 dollarit

8100 USA dollarit

ADC#$ 03

8100 USA dollarit

JMP 1005 dollarit

Masinakoodis (kuusnurk): A9 01 8D 00 81 69 03 8D 00 81 4C 05 10

Programmis2 on nüüd füüsiline aadress $ 8100, kus 74HC373 asub aadressibussil.

st 6502 A15 on 32768 (8000 dollarit) ja A8 on 256 (0100 dollarit) = 33024 (8100 dollarit).

Nii et kui 6502 kirjutab $ 8100 (STA $ 8100), on 6502 R/W madal ja 6502 andmesiini andmed lukustuvad, kui 373 LE läheb madalaks. 74HC00 NAND -värava tõttu on signaalid vastupidised.

Ülaltoodud siiditrükis on teine kirjutamine suurenenud 3 võrra (ADC#$ 03) - läinud 7 dollarilt 82 dollarile.

Tegelikkuses kasutataks 373 konkreetse asukoha jaoks rohkem kui 2 aadressibussi rida. Kuna see on ainus füüsiline aadress võimalikust 65536 -st, näitab see aadressibussi toimimist. Võite katsetada erinevate aadressinõeltega ja asetada need teise kohta. Loomulikult peate muutma STA operandid uueks asukohaks. nt. Kui kasutate aadressiridu A15 ja A9, oleks aadress 8200 dollarit (32768 + 512).

Samm 7: Järeldus

Järeldus
Järeldus

Olen proovinud näidata, kui lihtne on 6502 kasutusele võtta.

Ma ei ole selle valdkonna asjatundja, seega oleksin tänulik igasuguse konstruktiivse kommentaari või teabe eest.

Olete teretulnud seda edasi arendama ja oleksin huvitatud teie tegemistest.

Kavatsen lisada projektile ka EEPROMi, SRAMi ja 6522 ning panna need tulevikus ribalauale.

Soovitan: