Sadržaj:

6502 Minimalno računalo (s Arduino MEGA -om) 1. dio: 7 koraka
6502 Minimalno računalo (s Arduino MEGA -om) 1. dio: 7 koraka

Video: 6502 Minimalno računalo (s Arduino MEGA -om) 1. dio: 7 koraka

Video: 6502 Minimalno računalo (s Arduino MEGA -om) 1. dio: 7 koraka
Video: Home made 6502 breadboard computer playing chess 2024, Srpanj
Anonim
6502 Minimalno računalo (s Arduino MEGA -om) 1. dio
6502 Minimalno računalo (s Arduino MEGA -om) 1. dio

Mikroprocesor 6502 prvi se put pojavio 1975. godine, a dizajnirao ga je mali tim predvođen Chuckom Peddleom za MOS tehnologiju. Tada se koristio u video konzolama i kućnim računalima, uključujući Atari, Apple II, Nintendo Entertainment System, BBC Micro, Commodore VIC20 i 64. U to vrijeme bio je jedan od najjeftinijih na tržištu. Nikada zapravo nije nestao, a sada ga koriste hobisti i profesionalci za mnoge primjene.

Verzija koju koristim je W65C02S6TPG-14 koju je izradio Western Design Center i koristi deset puta manje energije od originala. Posebna je po tome što ne mora raditi na 1 MHz kao izvorni čip. Može raditi mnogo sporije ili se može koristiti za jedan korak kroz program, pa čak i pojačan do 14 MHz. Tehnički list za čip objašnjava njegove mogućnosti. Ostali 6502 čipovi nemaju tu mogućnost i neće raditi na ovaj način. Čipovi su trenutno dostupni na Ebayu, kao i u drugim izvorima.

Pribor

Svi korišteni dijelovi trenutno su dostupni na Ebayu, AliExpressu i drugima.

Korak 1: Koncept

Inspiraciju sam dobio od Bena Eatera koji je na YouTubeu proizveo niz video zapisa o 6502 i mnogim drugim aspektima izgradnje računala i sklopova. Program je on izvorno napisao, a ja sam izmijenio ovaj i neke njegove dizajne kako bih došao do ovog Instructable -a. Još jedna osoba koja me inspirirala bio je Andrew Jacobs koji ima odjeljak na GitHub -u gdje koristi PIC mikro za upravljanje svojim 6502.

Kao i Ben, i ja koristim Arduino MEGA za nadgledanje 6502. Također koristim MEGA za pružanje signala sata za razliku od Bena. Trenutno ne koristim niti EEPROM -ove niti RAM memoriju.

Korak 2: Zahtjevi

Zahtjevi
Zahtjevi

Za izradu ovog "računala" popis stavki je sljedeći:

1 x Arduino MEGA

1 x Western Design Center W65C02S6TPG-14

1 x 74HC00N IC (Quad 2-input NAND vrata) ili slično

1 x 74HC373N IC (oktalni prozirni zasun D-tipa) ili slično

2 ploče za kruh s 830 rupa (1 u malo)

Razni Dupont muško - muški vodiči i žice za povezivanje

2 x LED diode (koristio sam 5 mm plavu boju jer možete pobjeći bez otpornika)

1 x 12 mm trenutni taktilni prekidač s gumbom SPST ili slično

1 x 1K otpornik

2 x 0,1 uF keramički kondenzatori

1 x 8 -smjerna oznaka za svjetlo vode 5 mm crvena LED dioda (kao gore) ili 8 LED dioda i otpornika

NAPOMENA: Ako dobijete raspajani komplet, LED diode možete umetnuti na pogrešan način tako da budu zajednička katoda. Pričvršćujem zamajac (umjesto igle) tako da se može lako spojiti na drugo mjesto. VCC sada postaje Ground. Naravno, možete okrenuti LED diode (na sastavljenom predmetu) i ponovno ih lemiti, ali ovo je puno fafa! Kompleti su trenutno dostupni na AliExpressu.

Korak 3: Sastavite to zajedno

Sastavljajući to zajedno
Sastavljajući to zajedno
Sastavljajući to zajedno
Sastavljajući to zajedno

Bilo mi je lakše koristiti nove DuPont žice koje nisu bile odvojene od vrpce za sabirnice adresa i podataka.

Spojite pin 9 (A0) 6502 na pin 52 MEGA -e, pin 10 (A1) 6502 na pin 50 itd …

do

Spojite pin 25 (A15) 6502 na pin 22 MEGA -e.

Do sada 16 veza.

Također

Spojite pin 26 (D7) 6502 na pin 39 MEGA -e, pin 27 (D6) 6502 na pin 41 itd …

do

Spojite pin 33 (D0) 6502 na pin 53 MEGA -e.

Još 8 veza.

Spojite pin 8 (VDD) na 5v na MEGA -i.

Kondenzator od 0,1 uF spojen s pina 8 na Gnd ploče za kruh mogao bi biti koristan ovdje, ali nije nužan.

Spojite pin 21 (VSS) na Gnd na MEGA -i.

Igle 2, 4, 6, 36 i 38 mogu se vezati za 5v

Spojite pin 37 (Sat) na pin 2 i pin 7 na MEGA -i.

Spojite pin 34 (RWB) na pin 3 MEGA -e.

Spojite pin 40 (Reset) kao na gornjoj shemi.

Korak 4: Testiranje kruga

Testiranje kruga
Testiranje kruga

U ovoj fazi 6502 će raditi i program1 se može koristiti. Ako koristite 8 -smjerni okvir za izbor (kao gore), može se umetnuti izravno u ploču s krugom i spojiti uzemljeni kabel s masom, ili možete koristiti 8 LED dioda i otpornika. LED diode će pokazati što se nalazi na podatkovnoj sabirnici.

U ovoj fazi bilo bi dobro postaviti kašnjenja u Loop -u () na 500 ili više, kako bi pratili što se događa.

Trebali biste dobiti sličan izlaz na serijskom monitoru poput gornjeg. Kada se pritisne Reset, procesor prolazi kroz 7 ciklusa, a zatim traži početak programa na lokacijama $ FFFC i $ FFFD. Budući da ne postoje fizičke adrese za čitanje 6502, moramo ih dostaviti iz MEGA -e.

U gornjem izlazu 6502 čita $ FFFC i $ FFFD i dobiva 00 i 10 USD (niži bajt, visoki bajt) što je početak programa od 1000 USD. Procesor tada počinje izvršavati program na mjestu od 1000 USD (kao gore). U ovom slučaju čita A9 i 55 USD, odnosno LDA#55 USD (Učitajte 85 u akumulator). Opet, budući da nema fizičke memorije, MEGA simulira ono što se čita s podatkovne sabirnice.

$ 55 (85) daje binarni uzorak 01010101, a kada se okrene 1 bit ulijevo daje $ AA (170) 10101010.

Program pokazuje da procesor radi ispravno, ali uskoro postaje pomalo dosadan, pa idemo na sljedeći dio.

Korak 5: Sljedeći korak

Sljedeći korak
Sljedeći korak
Sljedeći korak
Sljedeći korak

Gore navedena "hrpa špageta" vjerojatno je nešto poput onoga što ćete imati nakon ove faze.

Zatim trebate dodati IC -ove 74HC373N i 74HC00N na matičnu ploču.

Nažalost, pinovi 373 se ne slažu s podatkovnom sabirnicom, pa će ih trebati spojiti žicama.

Spojite 5v na pin 20.

Spojite uzemljenje na pin 10.

Spojite pin 33 (D0) 6502 na pin 3 (D0) 74HC373N

i isto tako s iglama D1 do D7.

Q0 do Q7 su izlazi i potrebno ih je spojiti na LED okvir ili pojedinačne LED diode i otpornike.

Sa 74HC00 potrebna su samo 2 vrata

Spojite 5v na pin 14.

Spojite uzemljenje na pin 7.

Spojite pin 17 (A8) 6502 na pin 1 (1A) 74HC00

Spojite pin 25 (A15) 6502 na pin 2 (1B) 74HC00

Spojite pin 34 (R/W) 6502 na pin 5 (2B) 74HC00

Spojite pin 3 (1Y) 74HC00 na pin 4 (2A) 74HC00

Spojite pin 6 (2Y) 74HC00 na pin 11 (LE) 74HC373N

Spojite pin 11 (LE) 74HC373N na pin 1 (OE) 74HC373N

Možete spojiti plavu LED diodu na 1Y i masu, kao i 2Y na masu, to će pokazati kada su vrata aktivna.

Na kraju promijenite redak u postupku onClock iz programa1 u program2

setDataPins (program2 [pomak]);

Korak 6: Program

Program
Program
Program
Program

Program 6502-Monitor sadrži dvije gore opisane rutine 6502.

Program se još uvijek razvija i pomalo je neuredan.

Prilikom izvođenja programa2, kašnjenja u petlji () mogu biti 50 ili manja, pa čak i potpuno uklonjena. Komentirajući redove Serial.print () također ubrzava rad 6502. Odvajanje pina 1 (OE) 373 od pina 11 (LE) daje različite rezultate. Odvajanje pina 1 i pina 11 373 iz NAND vrata omogućuje vam da vidite što se nalazi na podatkovnoj sabirnici u svakom ciklusu takta.

Možda ćete morati vezati OE za masu, a ne ostavljati je u plutajućem položaju jer je 8 izlaznih linija onemogućeno ako ovaj pin ide visoko. Kad je pin LE visok, izlazi su isti kao i ulazi. Uzimajući LE pin nisko zaključava izlaze, tj. Ako se ulazni pinovi promijene, izlazi ostaju isti.

Pokušao sam program učiniti što jednostavnijim kako bi ga bilo lakše razumjeti.

Eksperimentiranje s vremenskim kašnjenjima omogućuje vam da točno pratite što 6502 radi.

Ispod su dva programa (oba rade na adresi 1000 USD) u 6502 Assembleru:

program1

LDA#55 USD

NOP

ROL

STA 1010 USD

1000 JMP

ROL rotira sadržaj akumulatora za jedan bit ulijevo, što znači da 55 USD sada postaje AA AA.

U strojnom kodu (šesterokutni): A9 55 EA 2A 8D 10 10 4C 00 10

program2

LDA#01 USD

STA 8100 USD

ADC#03 USD

STA 8100 USD

JMP 1005 USD

U strojnom kodu (šesterokutni): A9 01 8D 00 81 69 03 8D 00 81 4C 05 10

U programu 2 sada postoji fizička adresa 8100 USD na kojoj se 74HC373 nalazi na sabirnici adresa.

tj. A15 od 6502 je 32768 (8000 USD), a A8 256 (0100 USD) = 33024 (8100 USD).

Dakle, kada 6502 piše na 8100 USD (STA 8100 USD), R/W 6502 je niska, a podaci na podatkovnoj sabirnici 6502 blokirani su kada 373 LE padne. Zbog vrata 74HC00 NAND, signali su obrnuti.

U gornjem otisku zaslona drugi upis je povećan za 3 (ADC#$ 03) - sa 7 $ na 82 USD.

U stvarnosti, više od 2 retka sabirnice adresa koristilo bi se za određenu lokaciju 373. Budući da je ovo jedina fizička adresa od mogućih 65536, ona pokazuje kako radi sabirnica adresa. Možete eksperimentirati s različitim iglama za adresu i postaviti ih na drugo mjesto. Naravno, morat ćete promijeniti STA operande na novo mjesto. npr. Ako ste koristili retke adresa A15 i A9, adresa bi bila 8200 USD (32768 + 512).

Korak 7: Zaključak

Zaključak
Zaključak

Pokušao sam pokazati kako je lako pokrenuti 6502.

Nisam stručnjak u ovom području pa bih pozdravio sve konstruktivne komentare ili informacije.

Dobrodošli ste da to dodatno razvijete i zanimalo bi me što ste učinili.

Namjeravam projektu dodati EEPROM, SRAM i 6522, te ga ubuduće staviti na strip ploču.

Preporučeni: