Obsah:

Minimální počítač 6502 a 6522 (s Arduino MEGA) Část 2: 4 kroky
Minimální počítač 6502 a 6522 (s Arduino MEGA) Část 2: 4 kroky

Video: Minimální počítač 6502 a 6522 (s Arduino MEGA) Část 2: 4 kroky

Video: Minimální počítač 6502 a 6522 (s Arduino MEGA) Část 2: 4 kroky
Video: Vlastní Windows na CPU Z80 4 MHz, 160 Kb RAM, 720 Kb FDD 2024, Listopad
Anonim
6502 a 6522 Minimální počítač (s Arduino MEGA) Část 2
6502 a 6522 Minimální počítač (s Arduino MEGA) Část 2

V návaznosti na svůj předchozí Instructable jsem nyní položil 6502 na pásovou desku a přidal 6522 Versatile Interface Adapter (VIA). Opět používám verzi 6522 WDC, protože se perfektně hodí k jejich 6502. Nejen, že tyto nové čipy spotřebují mnohem méně energie než původní verze MOS, ale lze je provozovat i při nižších rychlostech nebo dokonce prošlápnout program bez problémů.

Program Arduino původně napsal Ben Eater (který má mnoho videí na YouTube) a byl jsem upraven tak, abych dosáhl tohoto výsledku.

Zásoby

1 x procesor WDC W65C02

1 x univerzální adaptér WDC W65C22

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

1 x 10 cm široká (35 řádků) Pásová deska

2 x 40 pin DIL zásuvky

1 x 14 pin DIL zásuvka

Kolíky záhlaví desky plošných spojů 2,54 mm

Zásuvky konektoru desky plošných spojů 2,54 mm

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

1 x 3K3 odpor

2 x 0,1 uF keramické kondenzátory

1 x 8 Way Water Light Marquee 5 mm červená LED

Různě barevný vodič pro připojení

8 propojovacích kabelů muž - muž

Krok 1: Obvodová deska

Obvodová deska
Obvodová deska
Obvodová deska
Obvodová deska

Deska s obvody je poměrně kompaktní a spodní strana se zapojuje přímo do Arduino MEGA. Aby se toho dosáhlo, jsou kolíky zasunuty co nejdále do plastových držáků, než jsou připájeny ke spodní straně desky. K tomu mohly být použity delší kolíky, ale standardní kolíky znamenají, že deska pevně spočívá na horní části MEGA.

Seřadil jsem obvody 6502 a 6522 tak, aby využívaly kolejové pásy k připojení k MEGA. Existuje také několik připojení pro 6502 skrytých pod integrovaným obvodem. Při výrobě desky bylo nejprve nutné uříznout 16 pásků, které se budou připojovat k dvojité řadě zásuvek Arduina. Vnější 2 nemusí být řezány, protože 5v a Gnd jsou na obou stranách. Dále pájíme 2 řady po 18 pinech na spodní straně a 2 řady po 18 objímkách na horní straně.

Poté byly zásuvky DIL připájeny na místo a mezi nimi byly proříznuty koleje. Mohl jsem uložit připojení umístěním kolíku 14 74HC00 na stejnou stopu jako 5v. Stopy jsem prořezal, jen když jsem si byl jistý, že je třeba, když jsem pájel spojovací vodiče. Věci však nejdou vždy podle plánu, původně jsem pásovou desku navrhl z předchozího chlebového prkénka pomocí kolíků 2, 3 a 7 Arduina, ale ty se neshodují s otvory v pásové desce, takže jsem musel použít piny 18, 31 a 37. Proto odkazy na mé desce na 31 a 37. Možná se divíte, proč jsem nepoužil jeden z nepoužitých kolíků (23, 24 atd.) pro hodiny, je to proto, že nepodporují přerušuje, takže jsem musel použít kolíky 18, 19, 20 nebo 21, které ano. Naštěstí tyto 4 kolíky jsou v souladu s otvory v desce pásu a udržují vše kompaktní. Kolík 18 je také nejdále od všech ostatních vodičů.

Můžete si také všimnout, že moje dokončená deska není úplně stejná jako moje schéma. Důvodem je, že jsem sledoval diagram někoho jiného. Proto připojení k 74HC00. Také jsem přidal LED napájení a další 2 řady zásuvek pro GND a 5V a několik dalších kondenzátorů.

Mohl jsem připojit 2 datové zásuvky, ale to by znamenalo mnohem více vodičů protínajících desku. Jako dočasné opatření jsem se rozhodl pro 8 propojovacích vodičů.

Porty 6522 A a B mají k dráhám připájené zásuvky, takže lze snadno zasunout značky LED.

Nyní je mnohem méně vodičů, než bylo ve verzi s chlebem.

Krok 2: Teorie programování

Teorie programování
Teorie programování

6522 má dva I/O porty a mnoho dalších funkcí, ale porty A a B jsou snadno přístupné. K výstupu dat na port je třeba odpovídajícím způsobem nastavit Data Direction Register (DDR) a data odeslat na samotný port.

S výše uvedeným nastavením se 6522 nachází na E000 $.

Pro výstup dat na port B je DDR na $ E002 nastaveno na $ FF (255 - všechny výstupy) a data jsou odesílána na $ E000.

Pro výstup dat na port A je DDR na $ E003 nastaveno na $ FF (255 - všechny výstupy) a data jsou odesílána na $ E001.

Níže uvedený kód načte $ FF do registru 6502 A a zapíše jej do DDR B na $ E002. Poté načte 55 $ a zapíše jej do ORB. Kód se otočí (dává $ AA) a zapíše se do ORB. Program skočí zpět na 1005 $ a opakuje se donekonečna. POZNÁMKA: DDR je třeba inicializovat pouze jednou.

Rozebrání adresy Hexdump

$ 1000 a9 ff LDA #$ ff $ 1002 8d 02 e0 STA $ e002 $ 1005 a9 55 LDA #$ 55 $ 1007 8d 00 e0 STA $ e000 $ 100a 6a ROR A $ 100b 8d 00 e0 STA $ e000 $ 100e 4c 05 10 ŽMP $ 1005

55 $ v binárním provedení je 010101010 a $ AA je 10101010, což způsobí, že se diody LED střídavě rozsvítí, 4 zhasnou.

Rychlá a špinavá oprava:

Vyměňte 74HC00 (Quad 2 vstup NAND Gate) za 74HC08 (Quad 2 vstup AND Gate) a 6522 se nyní nachází na 6000 $ místo E000 $. Tím se přesune z horních 32K do dolních 32K adresovatelné paměti 6502.

Krok 3: Program a výstup Arduino

Program a výstup Arduino
Program a výstup Arduino

Protože 6502 nemá žádnou RAM, ze které by bylo možné číst, Arduino dodává program, který má číst. Když je na pinu 18 detekován hodinový impuls, Arduino vloží programová data na datovou sběrnici (piny Arduino 39, 41, 43, 45, 47, 49, 51 a 53). 6502 generuje vlastní adresy, které jsou sledovány pouze Arduinem na sudých pinech 22 až 52. Arduino také dodává hodinový impuls na pinu 37. Linka R/W 6502 je monitorována na pinu 31.

Jelikož Arduino dodává data, doposud nebylo možné přimět 6502 ke vstupu dat z VIA (pokud to nevíte lépe).

Program Arduino je níže a ukázkový výstup ze sériového monitoru je nahoře.

Krok 4: Závěr

Znovu jsem se pokusil ukázat, jak nastavit minimální „počítač 6502“.

V této fázi se 6502 stále spoléhá na to, že mu Arduino dodá program a hodinový impuls, aby mohl běžet.

Je to o krok dál, než když jsem to nastavil na chlebové desce.

Tentokrát jsem nepoužil 74HC373, ale složitější 6522 k zablokování datových výstupů. Také 6522 má dva I/O porty.

Mám v úmyslu posunout tento projekt dále instalací nějaké SRAM nebo EEPROM.

Doporučuje: