Spisu treści:
- Kieszonkowe dzieci
- Krok 1: Koncepcja
- Krok 2: Wymagania
- Krok 3: Łączenie w całość
- Krok 4: Testowanie obwodu
- Krok 5: Następny krok
- Krok 6: Program
- Krok 7: Wniosek
Wideo: 6502 Minimalny komputer (z Arduino MEGA) Część 1: 7 kroków
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:29
Mikroprocesor 6502 pojawił się po raz pierwszy w 1975 roku i został zaprojektowany przez mały zespół kierowany przez Chucka Peddle'a dla technologii MOS. W tamtych czasach był używany w konsolach wideo i komputerach domowych, m.in. Atari, Apple II, Nintendo Entertainment System, BBC Micro, Commodore VIC20 i 64. W tamtym czasie był jednym z najtańszych na rynku. Tak naprawdę nigdy nie odszedł, a teraz jest używany przez hobbystów i profesjonalistów do wielu zastosowań.
Wersja, której używam, to W65C02S6TPG-14, która jest produkowana przez Western Design Center i zużywa dziesięć razy mniej energii niż oryginał. Jest wyjątkowy, ponieważ nie musi działać z częstotliwością 1 MHz, jak oryginalny układ. Może działać znacznie wolniej lub być używany do pojedynczego kroku przez program, a nawet zwiększać do 14 MHz. Karta katalogowa chipa wyjaśnia jego możliwości. Inne chipy 6502 nie mają tej możliwości i nie będą działać w ten sposób. Chipy są obecnie dostępne w serwisie eBay, a także w innych źródłach.
Kieszonkowe dzieci
Wszystkie używane części są obecnie dostępne w serwisach eBay, AliExpress i innych.
Krok 1: Koncepcja
Inspirację czerpałem od Bena Eatera, który wyprodukował serię filmów na YouTube o 6502 i wielu innych aspektach budowy komputerów i obwodów. Program został napisany przez niego pierwotnie i zmodyfikowałem to i niektóre z jego projektów, aby stworzyć ten Instruktaż. Inną osobą, która mnie zainspirowała, był Andrew Jacobs, który ma sekcję na GitHubie, w której używa mikro PIC do sterowania swoim 6502.
Podobnie jak Ben, używam Arduino MEGA do monitorowania 6502. Używam również MEGA do dostarczania sygnału zegara w przeciwieństwie do Bena. Obecnie nie używam też żadnych EEPROMów ani RAM.
Krok 2: Wymagania
Aby zbudować ten "komputer" lista elementów jest następująca:
1 x Arduino MEGA
1 x Western Design Center W65C02S6TPG-14
1 x 74HC00N IC (czterowejściowa bramka NAND) lub podobny
1 x 74HC373N IC (przezroczysty zatrzask typu ósemkowego D) lub podobny
2 x 830-otworowe deski do chleba (1 na szczyptę)
Różne męskie-męskie przewody Dupont i przewody łączące
2 x diody LED (użyłem 5mm niebieski, ponieważ można uciec bez rezystorów)
1x12mm chwilowy dotykowy przełącznik wciskany PCB montowany SPST lub podobny;
1 x rezystor 1K
Kondensatory ceramiczne 2 x 0,1 uF
1x8 Way Water Light Marquee 5mm czerwona dioda LED (jak powyżej) lub 8 diod LED i rezystory
UWAGA: Jeśli otrzymasz nieslutowany zestaw, możesz włożyć diody LED na odwrót, aby były wspólną katodą. Dołączam linkę muchową (zamiast szpilki), aby można ją było łatwo podłączyć w innym miejscu. VCC staje się teraz ziemią. Możesz oczywiście odwrócić diody LED (na złożonym przedmiocie) i ponownie je przylutować, ale to dużo bzdur! Zestawy są obecnie dostępne na AliExpress.
Krok 3: Łączenie w całość
Uznałem, że łatwiej jest użyć nowych przewodów DuPont, które nie zostały oddzielone od ich wstążki, do magistrali adresowej i danych.
Połącz pin 9 (A0) 6502 z pinem 52 MEGA, pin 10 (A1) 6502 do pinu 50 itd…
dopóki
Połącz pin 25 (A15) 6502 z pinem 22 MEGA.
Do tej pory 16 połączeń.
podobnie
Połącz pin 26 (D7) 6502 z pinem 39 MEGA, pin 27 (D6) 6502 do pinu 41 itd…
dopóki
Połącz pin 33 (D0) 6502 z pinem 53 MEGA.
8 więcej połączeń.
Podłącz pin 8 (VDD) do 5V na MEGA.
Kondensator 0,1uF podłączony od pinu 8 do Gnd płytki chleba może być tutaj przydatny, ale nie jest konieczny.
Podłącz pin 21 (VSS) do Gnd na MEGA.
Piny 2, 4, 6, 36 i 38 można związać z 5v
Podłącz pin 37 (zegar) do pinu 2 i pinu 7 MEGA.
Podłącz pin 34 (RWB) do pinu 3 MEGA.
Podłącz pin 40 (Reset) jak na powyższym schemacie.
Krok 4: Testowanie obwodu
Na tym etapie 6502 będzie działać i można użyć programu 1. Jeśli używasz markizy 8-drożnej (jak wyżej), można ją włożyć bezpośrednio do płytki stykowej i podłączyć przewód do masy lub użyć 8 diod LED i rezystorów. Diody LED pokażą, co jest na magistrali danych.
Na tym etapie dobrze byłoby ustawić opóźnienia w Loop() na 500 lub więcej, aby śledzić to, co się dzieje.
Powinieneś uzyskać podobny wynik na monitorze szeregowym, jak ten powyżej. Po naciśnięciu Reset procesor przechodzi przez 7 cykli, a następnie szuka startu programu w lokalizacjach $FFFC i $FFFD. Ponieważ nie ma fizycznych adresów do odczytania przez 6502, musimy dostarczyć je z MEGA.
W powyższym wyniku 6502 odczytuje $FFFC i $FFFD i otrzymuje $00 i $10 (młodszy bajt, starszy bajt), co jest początkiem programu od 1000 $. Procesor następnie rozpoczyna wykonywanie programu w lokalizacji $1000 (jak wyżej). W tym przypadku jest to $A9 i $55, czyli LDA#55$ (Załaduj 85 do akumulatora). Ponownie, ponieważ nie ma fizycznej lokalizacji pamięci, MEGA symuluje to, co jest odczytywane z magistrali danych.
55 $ (85) daje binarny wzór 01010101, a po obróceniu o 1 bit w lewo daje $AA (170) 10101010.
Program pokazuje, że procesor działa poprawnie, ale wkrótce robi się trochę nudny, więc przejdź do następnej części.
Krok 5: Następny krok
„Stos spaghetti” powyżej jest prawdopodobnie czymś w rodzaju tego, co będziesz miał po tym etapie.
Następnie musisz dodać do płytki prototypowej układy scalone 74HC373N i 74HC00N.
Niestety piny 373 nie pasują do szyny danych, więc będą musiały być podpięte przewodami.
Podłącz 5V do pinu 20.
Podłącz uziemienie do styku 10.
Połącz pin 33 (D0) 6502 z pinem 3 (D0) 74HC373N
i podobnie z pinami D1 do D7.
Q0 do Q7 to wyjścia, które będą wymagały podłączenia do markizy LED lub poszczególnych diod LED i rezystorów.
W modelu 74HC00 potrzebne są tylko 2 bramki
Podłącz 5V do pinu 14.
Podłącz uziemienie do styku 7.
Połącz pin 17 (A8) 6502 z pinem 1 (1A) 74HC00
Połącz pin 25 (A15) 6502 z pinem 2 (1B) 74HC00
Połącz pin 34 (R/W) 6502 z pinem 5 (2B) 74HC00
Połącz pin 3 (1Y) 74HC00 z pinem 4 (2A) 74HC00
Połącz pin 6 (2Y) 74HC00 z pinem 11 (LE) 74HC373N
Połącz pin 11 (LE) 74HC373N z pinem 1 (OE) 74HC373N
Możesz podłączyć niebieską diodę LED do 1Y i masy oraz 2Y do masy, co wskaże, kiedy brama jest aktywna.
Na koniec zmień linię w procedurze onClock z programu1 na program2
setDataPins(program2[przesunięcie]);
Krok 6: Program
Program 6502-Monitor zawiera dwie procedury 6502 opisane powyżej.
Program jest wciąż w fazie rozwoju i jest trochę nieporządny.
Podczas uruchamiania programu 2 opóźnienia w loop() mogą wynosić 50 lub mniej, a nawet zostać całkowicie usunięte. Komentowanie wierszy Serial.print() sprawia, że 6502 działa szybciej. Odłączenie pinu 1 (OE) 373 od pinu 11 (LE) daje różne wyniki. Odłączenie pinu 1 i pinu 11 373 od bramek NAND pozwala zobaczyć, co jest na szynie danych w każdym cyklu zegara.
Może być konieczne związanie OE z masą, zamiast pozostawiania go pływającego, ponieważ 8 linii wyjściowych jest wyłączonych, jeśli ten pin przejdzie w stan wysoki. Gdy pin LE jest wysoki, piny wyjściowe są takie same jak wejścia. Przyjęcie niskiego pinu LE blokuje wyjścia, tj. Jeśli zmienią się piny wejściowe, wyjścia pozostają takie same.
Starałem się, aby program był jak najprostszy, aby był łatwiejszy do zrozumienia.
Eksperymentowanie z opóźnieniami czasowymi pozwala dokładnie śledzić to, co robi 6502.
Poniżej znajdują się dwa programy (oba uruchamiane pod adresem $1000) w asemblerze 6502:
program1
LDA # $55
NOP
ROL
STA$1010
JMP$1000
ROL obraca zawartość akumulatora o jeden bit w lewo, co oznacza, że 55 $ staje się teraz $ AA.
W kodzie maszynowym (hex): A9 55 EA 2A 8D 10 10 4C 00 10
program2
LDA#$01
STA$8100
ADC # $03
STA$8100
JMP$1005
W kodzie maszynowym (szesnastkowym): A9 01 8D 00 81 69 03 8D 00 81 4C 05 10
W programie 2 jest teraz fizyczny adres 8100 $, w którym znajduje się 74HC373 na szynie adresowej.
tj. A15 z 6502 to 32768 (8000 USD), a A8 to 256 (0100 USD) = 33024 (8100 USD).
Więc kiedy 6502 zapisuje do 8100 $ (STA 8100 $), R/W 6502 jest niski, a dane na szynie danych 6502 są blokowane, gdy 373 LE staje się niski. Dzięki bramce 74HC00 NAND sygnały są odwrócone.
Na powyższym zrzucie ekranu drugi zapis zwiększył się o 3 (ADC#$03) - spadł z 7F do 82$.
W rzeczywistości więcej niż 2 linie szyny adresowej byłyby używane dla określonej lokalizacji 373. Ponieważ jest to jedyny fizyczny adres z możliwych 65536, pokazuje to, jak działa szyna adresowa. Możesz poeksperymentować z różnymi pinami adresowymi i umieścić go w innym miejscu. Oczywiście będziesz musiał zmienić operandy STA na nową lokalizację. np. Jeśli użyjesz linii adresowych A15 i A9, adres będzie wynosił 8200 USD (32768 + 512).
Krok 7: Wniosek
Próbowałem zademonstrować, jak łatwo jest uruchomić i uruchomić 6502.
Nie jestem ekspertem w tej dziedzinie, więc chętnie przyjmę wszelkie konstruktywne uwagi lub informacje.
Zapraszamy do dalszego rozwijania tego i byłbym zainteresowany tym, co zrobiłeś.
Zamierzam dodać do projektu EEPROM, SRAM i 6522, jak również w przyszłości umieścić go na stripboardzie.
Zalecana:
Zmień zepsuty komputer Mac Classic w nowoczesny komputer Raspberry Pi: 7 kroków
Zmień zepsuty komputer Mac Classic w nowoczesny komputer Raspberry Pi: Cóż, może to nie być przydatne dla wszystkich, ponieważ większość z was prawdopodobnie nie posiada zepsutego klasycznego komputera Mac. Jednak bardzo podoba mi się wyświetlanie tej rzeczy i lata temu z powodzeniem podłączyłem ją do BBB. Jednak nigdy nie byłem w stanie wyświetlić c
6502 Minimalny komputer (z Arduino MEGA) Część 3: 7 kroków
6502 Minimal Computer (z Arduino MEGA) Część 3: Idąc dalej, dodałem teraz ośmiokątny zatrzask, 8 prostokątnych diod LED i układ rezystorów 220 Ohm do płyty głównej. Istnieje również zworka między wspólnym pinem tablicy a masą, dzięki czemu diody LED można wyłączyć. Bramka 74HC00 NAND h
6502 i 6522 Minimalny komputer (z Arduino MEGA) Część 2: 4 kroki
6502 i 6522 Minimal Computer (z Arduino MEGA) Część 2: Kontynuując mój poprzedni Instructable, teraz umieściłem 6502 na płytce z paskiem i dodałem 6522 Versatile Interface Adapter (VIA). Ponownie używam wersji WDC 6522, ponieważ idealnie pasuje do ich 6502. Te nowe c
Komputer do systemów RE (część 1 z 2) (sprzęt): 5 kroków
Komputer do systemów RE (Część 1 z 2) (Sprzęt): Tutaj pokażę, jak stworzyłem w pełni działający komputer Mini Desktop dla małych systemów energii odnawialnej. System RE, którego zamierzam używać, będzie przede wszystkim systemem 12 V z 6 lub 8 bateriami do wózka golfowego, a ja będę miał 700 watową moc inwer
Komputer do systemów RE (część 2 z 2) (oprogramowanie): 6 kroków
Komputer do systemów RE (część 2 z 2) (oprogramowanie): W pierwszej części tej instrukcji znajduje się tutaj https://www.instructables.com/id/Computer-for-RE-Systems-Part-1-of-2 -Sprzęt/, dodałem cały sprzęt, który chciałem uzyskać dobry system stacjonarny. Teraz oprogramowanie, ale przed oprogramowaniem