Kazalo:

6502 Minimalni računalnik (z Arduino MEGA) 1. del: 7 korakov
6502 Minimalni računalnik (z Arduino MEGA) 1. del: 7 korakov

Video: 6502 Minimalni računalnik (z Arduino MEGA) 1. del: 7 korakov

Video: 6502 Minimalni računalnik (z Arduino MEGA) 1. del: 7 korakov
Video: Z80 Trainer board running 2024, Julij
Anonim
6502 Minimalni računalnik (z Arduino MEGA) 1. del
6502 Minimalni računalnik (z Arduino MEGA) 1. del

Mikroprocesor 6502 se je prvič pojavil leta 1975 in ga je oblikovala majhna ekipa pod vodstvom Chucka Peddlea za tehnologijo MOS. Takrat so ga uporabljali v video konzolah in domačih računalnikih, vključno z Atari, Apple II, Nintendo Entertainment System, BBC Micro, Commodore VIC20 in 64. Takrat je bil eden najcenejših na trgu. Nikoli ni zares izginil, zdaj pa ga ljubitelji in strokovnjaki uporabljajo za številne aplikacije.

Različica, ki jo uporabljam, je W65C02S6TPG-14, ki jo izdeluje Western Design Center in porabi desetkrat manj energije kot izvirnik. Poseben je po tem, da mu ni treba delovati na 1 MHz kot prvotni čip. Lahko deluje veliko počasneje ali pa se uporablja za posamezen korak skozi program in celo poveča do 14 MHz. Podatkovni list za čip pojasnjuje njegove zmogljivosti. Drugi čipi 6502 nimajo te zmogljivosti in ne bodo delovali na ta način. Žetoni so trenutno na voljo na Ebayu in v drugih virih.

Zaloge

Vsi uporabljeni deli so trenutno na voljo na Ebayu, AliExpressu in drugih.

1. korak: Koncept

Navdih sem dobil pri Ben Eaterju, ki je na YouTubu izdelal vrsto videoposnetkov o 6502 in številnih drugih vidikih gradnje računalnikov in vezij. Program je napisal on prvotno in to in nekatere njegove zasnove sem spremenil, da sem prišel do tega Instructable. Še ena oseba, ki me je navdihnila, je Andrew Jacobs, ki ima razdelek na GitHubu, kjer uporablja mikrofon PIC za nadzor svojega 6502.

Tako kot Ben uporabljam Arduino MEGA za spremljanje 6502. Za razliko od Bena uporabljam tudi MEGA za zagotavljanje signala ure. Trenutno ne uporabljam niti EEPROM -ov niti RAM -a.

2. korak: Zahteve

Zahteve
Zahteve

Za izdelavo tega "računalnika" je seznam elementov naslednji:

1 x Arduino MEGA

1 x Western Design Center W65C02S6TPG-14

1 x 74HC00N IC (Quad 2-input NAND gate) ali podobno

1 x 74HC373N IC (oktalni prozorni zapah tipa D) ali podobno

2 x 830 luknjic za kruh (1 na ščepec)

Različni Dupont moški - moški kabli in žice za povezavo

2 x LED (uporabil sem 5 mm modro, saj se lahko izognete brez uporov)

1 x 12 -milimetrsko stikalno stikalo s pritiskom na gumb, SPST ali podobno

1 x 1K upor

2 x 0,1 uF keramični kondenzatorji

1 x 8 -milimetrska rdeča LED lučka (kot zgoraj) ali 8 LED in uporov

OPOMBA: Če dobite spajkani komplet, lahko LED napačno vstavite tako, da so skupne katode. Pritrdim muhovod (namesto zatiča), tako da se lahko enostavno poveže drugam. VCC zdaj postane Ground. LED diode lahko seveda obrnete (na sestavljenem predmetu) in jih ponovno spajkate, vendar je to veliko napake! Kompleti so trenutno na voljo na AliExpressu.

3. korak: Sestavite skupaj

Sestavljanje skupaj
Sestavljanje skupaj
Sestavljanje skupaj
Sestavljanje skupaj

Lažje sem uporabil nove žice DuPont, ki niso bile ločene od traku, za naslovna in podatkovna vodila.

Priključite pin 9 (A0) 6502 na pin 52 MEGA, nožica 10 (A1) 6502 na pin 50 itd …

dokler

Priključite pin 25 (A15) 6502 na pin 22 MEGA.

16 povezav do sedaj.

Prav tako

Priključite pin 26 (D7) 6502 na pin 39 MEGA, pin 27 (D6) of 6502 to pin 41 etc…

dokler

Priključite pin 33 (D0) 6502 na pin 53 MEGA.

Še 8 povezav.

Priključite pin 8 (VDD) na 5v na MEGA.

0,1uF kondenzator, povezan z zatičem 8 na Gnd plošče za kruh, je tukaj lahko uporaben, ni pa nujen.

Priključite pin 21 (VSS) na Gnd na MEGA.

Zatiči 2, 4, 6, 36 in 38 so lahko vezani na 5v

Priključite pin 37 (Ura) na pin 2 in pin 7 na MEGA.

Priključite pin 34 (RWB) na pin 3 MEGA.

Priključite pin 40 (ponastavitev), kot je prikazano zgoraj.

4. korak: Preizkusite vezje

Testiranje vezja
Testiranje vezja

Na tej stopnji bo 6502 deloval in lahko uporabljate program1. Če uporabljate 8 -smerno oznako (kot zgoraj), jo lahko vstavite naravnost v ploščo in muho povežete s tlemi ali pa uporabite 8 LED in uporov. LED diode bodo pokazale, kaj je na podatkovnem vodilu.

Na tej stopnji bi bilo prav tako nastaviti zamude v zanki () na 500 ali več, da bi spremljali dogajanje.

Na serijskem monitorju bi morali dobiti podoben izhod kot zgornji. Ko pritisnete Ponastavi, procesor opravi 7 ciklov in nato poišče zagon programa na lokacijah $ FFFC in $ FFFD. Ker za 6502 ni fizičnih naslovov za branje, jih moramo dostaviti iz MEGA.

V zgornjem izhodu 6502 bere $ FFFC in $ FFFD in dobi $ 00 in 10 (Low byte, High byte), kar je začetek programa pri 1000 $. Procesor nato začne izvajati program na lokaciji 1000 USD (kot zgoraj). V tem primeru se glasi A9 USD in 55 USD, to je LDA#55 USD (Naložite 85 v akumulator). Tudi če ni fizičnega pomnilnika, MEGA simulira prebrano iz podatkovnega vodila.

55 USD (85) daje binarni vzorec 01010101 in ko zavrtite 1 bit v levo, daje AA AA (170) 10101010.

Program pokaže, da procesor deluje pravilno, a kmalu postane malce dolgočasen, zato pojdimo na naslednji del.

5. korak: Naslednji korak

Naslednji korak
Naslednji korak
Naslednji korak
Naslednji korak

Zgornji "kup špagetov" je verjetno nekaj takega, kar boste imeli po tej stopnji.

Nato morate na vezje dodati integrirani vmesnik 74HC373N in 74HC00N.

Na žalost se zatiči 373 ne ujemajo s podatkovnim vodilom, zato jih bo treba priključiti na žice.

Priključite 5V na pin 20.

Ozemljitev priključite na pin 10.

Priključite pin 33 (D0) 6502 na pin 3 (D0) 74HC373N

in prav tako z zatiči D1 do D7.

Q0 do Q7 so izhodi, ki jih je treba priključiti na LED okvir ali posamezne LED in upore.

Pri 74HC00 sta potrebni le 2 vrata

Priključite 5V na pin 14.

Ozemljitev priključite na pin 7.

Priključite pin 17 (A8) 6502 na pin 1 (1A) 74HC00

Priključite pin 25 (A15) 6502 na pin 2 (1B) 74HC00

Priključite pin 34 (R/W) 6502 na pin 5 (2B) 74HC00

Priključite pin 3 (1Y) 74HC00 na pin 4 (2A) 74HC00

Priključite pin 6 (2Y) 74HC00 na pin 11 (LE) 74HC373N

Priključite pin 11 (LE) 74HC373N na pin 1 (OE) 74HC373N

Na 1Y in ozemljitev ter 2Y na maso lahko priključite modro LED, kar bo pokazalo, kdaj so vrata aktivna.

Končno spremenite vrstico v postopku onClock iz programa1 v program2

setDataPins (program2 [odmik]);

6. korak: Program

Program
Program
Program
Program

Program 6502-Monitor vsebuje dve zgoraj opisani rutini 6502.

Program se še razvija in je nekoliko neurejen.

Pri izvajanju programa2 so lahko zamude v zanki () 50 ali manj in se celo odstranijo. Komentiranje vrstic Serial.print () tudi pospeši delovanje 6502. Če ločite pin 1 (OE) 373 iz pin 11 (LE), dobite različne rezultate. Če odklopite zatič 1 in 11 za 373 iz vrat NAND, lahko vidite, kaj je na podatkovnem vodilu pri vsakem ciklu.

Morda boste morali OE priklopiti na tla, namesto da bi ga pustili plavajočega, saj je 8 izhodnih linij onemogočeno, če gre ta pin visoko. Ko je pin LE visok, so izhodni zatiči enaki kot vhodi. Če levi pin pripeljete nizko, se izhodi zaklenejo, torej če se vhodni zatiči spremenijo, izhodi ostanejo enaki.

Poskušal sem narediti program čim bolj preprost, da ga lažje razumem.

Eksperimentiranje s časovnimi zamiki vam omogoča, da natančno spremljate, kaj počne 6502.

Spodaj sta dva programa (oba tečeta na naslovu 1000 USD) v 6502 Assembler:

program1

LDA#55 USD

NOP

ROL

STA 1010 USD

1000 JMP

ROL vrti vsebino akumulatorja za en bit levo, kar pomeni, da 55 USD zdaj postane AA AA.

V strojni kodi (šestnajstiška): A9 55 EA 2A 8D 10 10 4C 00 10

program2

LDA#01 USD

STA 8100 USD

ADC#03 USD

STA 8100 USD

1005 JMP

V strojni kodi (šestnajstiška): A9 01 8D 00 81 69 03 8D 00 81 4C 05 10

V programu2 je zdaj fizični naslov 8100 USD, kjer je 74HC373 na naslovnem vodilu.

A15 iz 6502 je 32768 (8000 USD), A8 pa 256 (0100 USD) = 33024 (8100 USD).

Torej, ko 6502 zapiše 8100 USD (STA 8100 USD), je R/W 6502 nizka, podatki na podatkovnem vodilu 6502 pa zaklenjeni, ko 373 LE pade. Zaradi vrat 74HC00 NAND so signali obrnjeni.

V zgornjem sitotisku se je drugo pisanje povečalo za 3 (ADC#$ 03) - s 7F na 82 USD.

V resnici bi bili za določeno lokacijo 373. uporabljeni več kot 2 vrstici naslovnega vodila. Ker je to edini fizični naslov od možnih 65536, dokazuje, kako deluje naslovno vodilo. Lahko poskusite z različnimi zatiči naslova in jih postavite na drugo mesto. Seveda boste morali operande STA spremeniti na novo lokacijo. npr. Če bi uporabili naslovni vrstici A15 in A9, bi bil naslov 8200 USD (32768 + 512).

7. korak: Zaključek

Zaključek
Zaključek

Poskušal sem pokazati, kako enostavno je 6502 zagnati in zagnati.

Nisem strokovnjak na tem področju, zato bi bil dobrodošel kakršne koli konstruktivne pripombe ali informacije.

Vabljeni, da to še naprej razvijate in zanimalo bi me, kaj ste storili.

Projektu nameravam dodati EEPROM, SRAM in 6522 ter ga v prihodnje postaviti na trak.

Priporočena: