Obsah:

6502 Minimální počítač (s Arduino MEGA) Část 1: 7 kroků
6502 Minimální počítač (s Arduino MEGA) Část 1: 7 kroků

Video: 6502 Minimální počítač (s Arduino MEGA) Část 1: 7 kroků

Video: 6502 Minimální počítač (s Arduino MEGA) Část 1: 7 kroků
Video: Vlastní Windows na CPU Z80 4 MHz, 160 Kb RAM, 720 Kb FDD 2024, Listopad
Anonim
6502 Minimal Computer (with Arduino MEGA) Part 1
6502 Minimal Computer (with Arduino MEGA) Part 1

Mikroprocesor 6502 se poprvé objevil v roce 1975 a byl navržen malým týmem vedeným Chuckem Peddleem pro technologii MOS. Tehdy se používal ve video konzolách a domácích počítačích včetně Atari, Apple II, Nintendo Entertainment System, BBC Micro, Commodore VIC20 a 64. V té době patřil k nejlevnějším na trhu. Nikdy to opravdu nezmizelo a nyní ho používají fandové a profesionálové pro mnoho aplikací.

Používám verzi W65C02S6TPG-14, kterou vyrobila společnost Western Design Center a spotřebovává desetkrát méně energie než originál. Je speciální tím, že nemusí běžet na 1 MHz jako původní čip. Může běžet mnohem pomaleji nebo může být použit k jednomu kroku v programu a dokonce se zvýšil až na 14 MHz. Datový list čipu vysvětluje jeho možnosti. Ostatní čipy 6502 tuto schopnost nemají a nepoběží tímto způsobem. Čipy jsou v současné době k dispozici na Ebay a dalších zdrojích.

Zásoby

Všechny použité díly jsou aktuálně dostupné na Ebay, AliExpress a dalších.

Krok 1: Koncept

Inspiroval jsem se Benem Eaterem, který na YouTube vytvořil sérii videí o 6502 a mnoha dalších aspektech stavby počítačů a obvodů. Program původně napsal on a já jsem upravil tento a některé jeho návrhy, abych přišel s tímto Instructable. Další osobou, která mě inspirovala, byl Andrew Jacobs, který má sekci na GitHubu, kde používá PIC micro k ovládání svého 6502.

Stejně jako Ben používám Arduino MEGA k monitorování 6502. Také používám MEGA k poskytování hodinového signálu na rozdíl od Bena. V současné době nepoužívám žádné EEPROM ani RAM.

Krok 2: Požadavky

Požadavky
Požadavky

Chcete -li vytvořit tento „počítač“, seznam položek je následující:

1 x Arduino MEGA

1 x Western Design Center W65C02S6TPG-14

1 x 74HC00N IC (Quad 2-input NAND gate) nebo podobný

1 x 74HC373N IC (průhledná západka typu Octal D) nebo podobný

2 x 830 otvorů na chleba (1 na špetku)

Různé Dupont samčí - samčí vodiče a propojovací vodiče

2 x LED (použil jsem 5 mm modrou, protože se můžete dostat pryč bez rezistorů)

1 x 12 mm momentální hmatový tlačítkový spínač SPST namontovaný na desce plošných spojů nebo podobný

1 x 1K odpor

2 x 0,1 uF keramické kondenzátory

1 x 8 Way Water Light Marquee 5 mm červená LED (viz výše) nebo 8 LED a odpory

POZNÁMKA: Pokud dostanete nepájenou soupravu, můžete diody LED vložit nesprávně, takže jsou běžnou katodou. Připevňuji muškačku (místo špendlíku), aby se mohla snadno připojit jinam. VCC se nyní stává Ground. LED diody můžete samozřejmě otočit (na smontovaném předmětu) a znovu je pájet, ale je to velká chyba! Soupravy jsou v současné době k dispozici na AliExpress.

Krok 3: Dát to dohromady

Dát to dohromady
Dát to dohromady
Dát to dohromady
Dát to dohromady

Zjistil jsem, že je jednodušší použít nové kabely DuPont, které nebyly odděleny od pásu karet, pro sběrnice adres a dat.

Připojte kolík 9 (A0) 6502 ke kolíku 52 MEGA, pin 10 (A1) z 6502 na pin 50 atd …

dokud

Připojte kolík 25 (A15) 6502 ke kolíku 22 MEGA.

Zatím 16 spojení.

Rovněž

Připojte kolík 26 (D7) 6502 ke kolíku 39 MEGA, pin 27 (D6) z 6502 na pin 41 atd …

dokud

Připojte pin 33 (D0) 6502 k pinu 53 MEGA.

8 dalších připojení.

Připojte pin 8 (VDD) k 5v na MEGA.

Zde může být užitečný kondenzátor 0,1 uF připojený od pinu 8 k Gnd desky chleba, ale není nutný.

Připojte pin 21 (VSS) ke Gnd na MEGA.

Kolíky 2, 4, 6, 36 a 38 lze připnout na 5v

Připojte pin 37 (hodiny) k pinům 2 a 7 k MEGA.

Připojte kolík 34 (RWB) ke kolíku 3 MEGA.

Připojte pin 40 (Reset) podle schématu výše.

Krok 4: Testování obvodu

Testování obvodu
Testování obvodu

V této fázi bude fungovat 6502 a lze použít program1. Používáte -li 8 -way markýzu (jak je uvedeno výše), může být vložena přímo do prkénka a propojovací kabel připojen k zemi, nebo můžete použít 8 LED a odpory. LED diody zobrazí, co je na datové sběrnici.

V této fázi by bylo také vhodné nastavit zpoždění ve smyčce () na 500 nebo více, aby bylo možné sledovat, co se děje.

Na sériovém monitoru byste měli získat podobný výstup, jako je výše. Po stisknutí tlačítka Reset procesor projde 7 cykly a poté vyhledá spuštění programu v místech $ FFFC a $ FFFD. Protože pro 6502 neexistují žádné fyzické adresy ke čtení, musíme je zadat z MEGA.

Ve výše uvedeném výstupu 6502 čte $ FFFC a $ FFFD a dostává $ 00 a $ 10 (Low byte, High byte), což je začátek programu na $ 1000. Procesor poté začne spouštět program na místě 1 000 $ (jak je uvedeno výše). V tomto případě to čte $ A9 a $ 55, tj. LDA#$ 55 (Vložte 85 do akumulátoru). Protože opět neexistuje umístění fyzické paměti, MEGA simuluje to, co se čte z datové sběrnice.

55 $ (85) dává binární vzor 01010101 a při otočení o 1 bit doleva dává $ AA (170) 10101010.

Program ukazuje, že procesor pracuje správně, ale brzy začne být trochu nudný, takže k další části.

Krok 5: Další krok

Další krok
Další krok
Další krok
Další krok

„Hromada špaget“výše je pravděpodobně něco jako to, co budete mít po této fázi.

Dále musíte na integrovanou desku přidat integrované obvody 74HC373N a 74HC00N.

Bohužel kolíky 373 nejsou v souladu s datovou sběrnicí, takže budou muset být připojeny pomocí vodičů.

Připojte 5v na pin 20.

Připojte uzemnění na pin 10.

Připojte kolík 33 (D0) 6502 ke kolíku 3 (D0) 74HC373N

a podobně s kolíky D1 až D7.

Výstupy jsou Q0 až Q7 a tyto budou vyžadovat připojení k LED diodám nebo jednotlivým LED diodám a rezistorům.

S 74HC00 jsou potřeba pouze 2 jeho brány

Připojte 5v na pin 14.

Připojte uzemnění na pin 7.

Připojte kolík 17 (A8) 6502 ke kolíku 1 (1A) 74HC00

Připojte kolík 25 (A15) 6502 ke kolíku 2 (1B) 74HC00

Připojte kolík 34 (R/W) 6502 k pinu 5 (2B) 74HC00

Připojte pin 3 (1Y) na 74HC00 ke kolíku 4 (2A) na 74HC00

Připojte kolík 6 (2Y) 74HC00 k pinu 11 (LE) 74HC373N

Připojte pin 11 (LE) 74HC373N ke kolíku 1 (OE) 74HC373N

Můžete připojit modrou LED k 1Y a uzemnění, stejně jako 2Y k zemi, to bude indikovat, kdy je brána aktivní.

Nakonec změňte řádek v proceduře onClock z programu1 na program2

setDataPins (program2 [offset]);

Krok 6: Program

Program
Program
Program
Program

Program 6502-Monitor obsahuje dvě rutiny 6502 popsané výše.

Program je stále ve vývoji a je trochu neuspořádaný.

Při spuštění programu2 může být zpoždění ve smyčce () 50 nebo méně a dokonce odstraněno úplně. Komentování řádků Serial.print () také způsobí, že 6502 poběží rychleji. Odpojením kolíku 1 (OE) 373 od kolíku 11 (LE) získáte různé výsledky. Odpojením pinů 1 a 11 na 373 od bran NAND můžete vidět, co je na datové sběrnici v každém hodinovém cyklu.

Možná budete muset spojit OE se zemí, než abyste ji nechali plovoucí, protože 8 výstupních linek je deaktivováno, pokud se tento pin dostane vysoko. Když je pin LE vysoký, výstupní kolíky jsou stejné jako vstupy. Pokud vezmeme nízký pin LE, zajistí výstupy, tj. Pokud se změní vstupní piny, výstupy zůstanou stejné.

Snažil jsem se udržet program co nejjednodušší, aby byl srozumitelnější.

Experimentování s časovými zpožděními vám umožní přesně sledovat, co 6502 dělá.

Níže jsou uvedeny dva programy (oba běží na adrese 1 000 $) v 6502 Assembler:

program 1

LDA#55 $

NOP

ROL

STA 1010 $

1 000 USD

ROL otočí obsah akumulátoru o jeden bit vlevo, což znamená, že 55 $ se nyní stává $ AA.

Ve strojovém kódu (hex): A9 55 EA 2A 8D 10 10 4C 00 10

program 2

LDA#$ 01

STA 8100 $

ADC#03 USD

STA 8100 $

ŽMP 1005 USD

Ve strojovém kódu (hex): A9 01 8D 00 81 69 03 8D 00 81 4C 05 10

V programu2 je nyní fyzická adresa $ 8100, což je místo, kde je 74HC373 umístěn na adresové sběrnici.

tj. A15 z 6502 je 32768 (8000 $) a A8 je 256 (0100 $) = 33024 (8100 $).

Když tedy 6502 zapisuje na 8 100 $ (STA 8 100 $), R/W 6502 je nízká a data na datové sběrnici 6502 jsou zablokována, když 373 LE klesne. Kvůli bráně NAND 74HC00 jsou signály obráceny.

Na výše uvedeném sítotisku se druhý zápis zvýšil o 3 (ADC#$ 03) - z $ 7F na $ 82.

Ve skutečnosti by pro konkrétní umístění 373 byly použity více než 2 řádky adresové sběrnice. Protože se jedná o jedinou fyzickou adresu z možných 65536, ukazuje, jak funguje adresová sběrnice. Můžete experimentovat s různými adresními piny a umístit je na jiné místo. Samozřejmě budete muset změnit operandy STA na nové umístění. např. Pokud byste použili adresní řádky A15 a A9, adresa by byla 8200 $ (32768 + 512).

Krok 7: Závěr

Závěr
Závěr

Pokusil jsem se ukázat, jak snadné je uvést 6502 do provozu.

Nejsem odborník v této oblasti, takže uvítám jakékoli konstruktivní komentáře nebo informace.

Můžete to dále rozvíjet a zajímalo by mě, co jste udělali.

Mám v úmyslu do projektu přidat EEPROM, SRAM a 6522 a v budoucnu jej umístit na pásovou desku.

Doporučuje: