Sadržaj:

6502 Minimalni računar (sa Arduino MEGA) 1. dio: 7 koraka
6502 Minimalni računar (sa Arduino MEGA) 1. dio: 7 koraka

Video: 6502 Minimalni računar (sa Arduino MEGA) 1. dio: 7 koraka

Video: 6502 Minimalni računar (sa Arduino MEGA) 1. dio: 7 koraka
Video: Макетный компьютер с минималистичным дизайном №6. Начало работы с микрокодом 2024, Novembar
Anonim
6502 Minimalni računar (sa Arduino MEGA -om) 1. dio
6502 Minimalni računar (sa Arduino MEGA -om) 1. dio

Mikroprocesor 6502 prvi put se 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čunarima 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. Poseban je po tome što ne mora raditi na 1 MHz kao originalni č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.

Supplies

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

Korak 1: Koncept

Inspiraciju sam dobio od Bena Etera koji je na YouTube -u proizveo niz video zapisa o 6502 i mnogim drugim aspektima izgradnje računara i kola. Program je on izvorno napisao, a ja sam izmijenio ovaj i neke njegove dizajne kako bih došao do ovog uputstva. Još jedna osoba koja me inspirirala je Andrew Jacobs koji ima odjeljak na GitHub -u gdje koristi PIC mikro za kontrolu svog 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 ni EEPROM -ove niti RAM memoriju.

Korak 2: Zahtjevi

Zahtevi
Zahtevi

Za izradu ovog "računara" lista stavki je sljedeća:

1 x Arduino MEGA

1 x Western Design Center W65C02S6TPG-14

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

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

2 ploče za hleb sa 8 rupa (1 na prstohvat)

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č sa pritiskom na dugme PCB montiran na SPST ili slično

1 x 1K otpornik

2 x 0,1 uF keramički kondenzatori

1 x 8 -smjerna šalica za svjetlo vode 5 mm crvena LED dioda (kao gore) ili 8 LED dioda i otpornici

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 sklopljenom predmetu) i ponovno ih lemiti, ali ovo je mnogo nedostataka! 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.

16 veza do sada.

Isto tako

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 može biti koristan ovdje, ali nije nužan.

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

Igle 2, 4, 6, 36 i 38 mogu biti vezane 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 kola
Testiranje kola

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 ravno u matičnu ploču i zamajac spojiti na masu, ili možete koristiti 8 LED dioda i otpornika. LED diode će pokazati šta se nalazi na magistrali podataka.

U ovoj fazi bilo bi dobro postaviti kašnjenja u Loop -u () na 500 ili više, kako biste pratili šta se dešava.

Trebali biste dobiti sličan izlaz na serijskom monitoru kao ovaj gore. Kada se pritisne Reset, procesor prolazi kroz 7 ciklusa, a zatim traži početak programa na lokacijama $ FFFC i $ FFFD. Kako 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 na 1000 dolara. Procesor tada počinje izvršavati program na lokaciji 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 ne postoji lokacija fizičke memorije, MEGA simulira ono što se čita sa sabirnice podataka.

$ 55 (85) daje binarni obrazac 01010101, a kada se rotira 1 bit lijevo daje $ AA (170) 10101010.

Program pokazuje da procesor radi ispravno, ali uskoro postaje pomalo dosadan, pa pređite 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 podudaraju sa sabirnicom podataka, 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 sa pinovima 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 potrebne su samo 2 kapije

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.

Konačno promijenite red u proceduri 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. Komentarišući redove Serial.print () takođe 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 kapija omogućuje vam da vidite šta se nalazi na sabirnici podataka u svakom ciklusu takta.

Možda ćete morati vezati OE za uzemljenje umjesto da ga ostavite plutajućeg jer je 8 izlaznih linija onemogućeno ako ovaj pin ide visoko. Kada je LE pin 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 tačno pratite šta 6502 radi.

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

program1

LDA#55 USD

NOP

ROL

STA 1010 USD

JMP $ 1000

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

U mašinskom 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 programu2 sada postoji fizička adresa $ 8100 na kojoj se 74HC373 nalazi na sabirnici adresa.

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

Dakle, kada 6502 upisuje na 8100 USD (STA 8100 USD), R/W 6502 je nizak, a podaci na sabirnici podataka 6502 blokirani su kada 373 LE padne. Zbog 74HC00 NAND vrata, signali su obrnuti.

U gornjem sitotisku, drugo pisanje je povećano za 3 (ADC#$ 03) - sa 7 $ na 82 USD.

U stvarnosti, više od 2 linije 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 adresa i postaviti ih na drugo mjesto. Naravno, morat ćete promijeniti STA operande na novu lokaciju. npr. Ako ste koristili redove 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 ovoj oblasti pa bih rado prihvatio bilo kakve konstruktivne komentare ili informacije.

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

Nameravam da projektu dodam EEPROM, SRAM i 6522, kao i da ga ubuduće stavljam na strip ploču.

Preporučuje se: