Innehållsförteckning:
- Tillbehör
- Steg 1: Konceptet
- Steg 2: Krav
- Steg 3: Sätta ihop det
- Steg 4: Testa kretsen
- Steg 5: Nästa steg
- Steg 6: Programmet
- Steg 7: Slutsats
Video: 6502 Minimal dator (med Arduino MEGA) Del 1: 7 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:41
6502 mikroprocessorn uppträdde först 1975 och designades av ett litet team som leddes av Chuck Peddle för MOS -teknik. Då användes den i videokonsoler och hemmadatorer inklusive Atari, Apple II, Nintendo Entertainment System, BBC Micro, Commodore VIC20 och 64. Då var den en av de billigaste på marknaden. Det har aldrig riktigt försvunnit och nu används det av amatörer och proffs för många applikationer.
Den version jag använder är W65C02S6TPG-14 som är gjord av Western Design Center och använder tio gånger mindre ström än originalet. Det är speciellt eftersom det inte behöver köra vid 1 MHz som det ursprungliga chipet. Det kan köra mycket långsammare eller användas för att enkelt gå igenom ett program och till och med rampa upp till 14 MHz. Databladet för chipet förklarar dess kapacitet. Andra 6502 chips har inte den här funktionen och kommer inte att köras på det här sättet. Chippen är för närvarande tillgängliga på Ebay och andra källor.
Tillbehör
Alla delar som används är för närvarande tillgängliga på Ebay, AliExpress och andra.
Steg 1: Konceptet
Jag fick min inspiration från Ben Eater som har producerat en serie videor på YouTube om 6502 och många andra aspekter av att bygga datorer och kretsar. Programmet skrevs av honom ursprungligen och jag har modifierat detta och några av hans mönster för att komma med denna instruerbara. En annan person som inspirerade mig var Andrew Jacobs som har ett avsnitt på GitHub där han använder en PIC -mikro för att styra sin 6502.
Precis som Ben använder jag en Arduino MEGA för att övervaka 6502. Jag använder också MEGA för att ge klocksignalen till skillnad från Ben. För närvarande använder jag inte heller några EEPROM eller RAM.
Steg 2: Krav
För att bygga denna "dator" är en lista med objekt följande:
1 x Arduino MEGA
1 x Western Design Center W65C02S6TPG-14
1 x 74HC00N IC (Quad 2-input NAND gate) eller liknande
1 x 74HC373N IC (Octal D-typ transparent spärr) eller liknande
2 x 830 håls brödbrädor (1 i nypa)
Olika Dupont han- och hanledningar och länkkablar
2 x lysdioder (jag använde 5 mm blått eftersom du kan komma undan utan motstånd)
1 x 12 mm momentan taktil tryckknappsbrytare PCB -monterad SPST eller liknande
1 x 1K motstånd
2 x 0,1 uF keramiska kondensatorer
1 x 8 Way Water Light Marquee 5 mm röd LED (enligt ovan) eller 8 lysdioder och motstånd
OBS! Om du får det olödda paketet kan du sätta in lysdioderna på fel sätt så att de är en vanlig katod. Jag fäster en flugkabel (istället för stiftet) så att den enkelt kan anslutas någon annanstans. VCC blir nu Ground. Du kan naturligtvis vända på lysdioderna (på ett monterat föremål) och löda om dem, men det här är mycket faff! Kits är för närvarande tillgängliga på AliExpress.
Steg 3: Sätta ihop det
Jag tyckte att det var lättare att använda nya DuPont -kablar som inte hade separerats från bandet för adress- och databussarna.
Anslut stift 9 (A0) på 6502 till stift 52 på MEGA, stift 10 (A1) på 6502 till stift 50 etc …
fram tills
Anslut stift 25 (A15) på 6502 till stift 22 på MEGA.
16 anslutningar hittills.
likaså
Anslut stift 26 (D7) på 6502 till stift 39 på MEGA, stift 27 (D6) på 6502 till stift 41 osv …
fram tills
Anslut stift 33 (D0) på 6502 till stift 53 på MEGA.
8 fler anslutningar.
Anslut stift 8 (VDD) till 5v på MEGA.
En 0.1uF kondensator ansluten från stift 8 till Gnd på brödskivan kan vara användbar här men inte nödvändigt.
Anslut stift 21 (VSS) till Gnd på MEGA.
Stift 2, 4, 6, 36 och 38 kan knytas till 5v
Anslut stift 37 (klocka) till stift 2 och stift 7 på MEGA.
Anslut stift 34 (RWB) till stift 3 på MEGA.
Anslut stift 40 (Återställ) enligt diagrammet ovan.
Steg 4: Testa kretsen
I detta skede kommer 6502 att fungera och program1 kan användas. Om du använder 8 -vägs -tältet (enligt ovan) kan det sättas in direkt i brödbrädan och flugledningen anslutas till marken, eller så kan du använda 8 lysdioder och motstånd. Lysdioderna visar vad som finns på databussen.
I detta skede skulle det vara lika bra att ställa in förseningarna i loop () till 500 eller mer, för att följa vad som händer.
Du bör få en liknande utmatning på seriemonitorn som den ovan. När Reset trycks in går processorn igenom sju cykler och sedan letar den efter starten av programmet på platser $ FFFC och $ FFFD. Eftersom det inte finns några fysiska adresser för 6502 att läsa, måste vi tillhandahålla dem från MEGA.
I ovanstående utdata läser 6502 $ FFFC och $ FFFD och får $ 00 och $ 10 (låg byte, hög byte) vilket är starten på programmet på $ 1000. Processorn börjar sedan köra programmet på plats $ 1000 (enligt ovan). I detta fall läser den $ A9 och $ 55, dvs LDA#$ 55 (Ladda 85 i ackumulatoren). Återigen, eftersom det inte finns någon fysisk minnesplats, simulerar MEGA det som läses från databussen.
$ 55 (85) ger det binära mönstret 01010101 och när det roteras ger 1 bit kvar $ AA (170) 10101010.
Programmet visar att processorn fungerar korrekt men snart blir lite tråkig, så fortsätt till nästa del.
Steg 5: Nästa steg
"Spagettihögen" ovan är förmodligen ungefär som vad du kommer att ha efter detta steg.
Därefter måste du lägga till 74HC373N och 74HC00N IC: er på panelen.
Tyvärr är 373: s stift inte i linje med databussen, så det måste kopplas med ledningar.
Anslut 5v till stift 20.
Anslut marken till stift 10.
Anslut stift 33 (D0) på 6502 till stift 3 (D0) på 74HC373N
och likaså med stiften D1 till D7.
Q0 till Q7 är utgångarna och dessa måste anslutas till LED -tältet eller enskilda lysdioder och motstånd.
Med 74HC00 behövs bara 2 av dess grindar
Anslut 5v till stift 14.
Anslut marken till stift 7.
Anslut stift 17 (A8) på 6502 till stift 1 (1A) på 74HC00
Anslut stift 25 (A15) på 6502 till stift 2 (1B) på 74HC00
Anslut stift 34 (R/W) på 6502 till stift 5 (2B) på 74HC00
Anslut stift 3 (1Y) på 74HC00 till stift 4 (2A) på 74HC00
Anslut stift 6 (2Y) på 74HC00 till stift 11 (LE) på 74HC373N
Anslut stift 11 (LE) på 74HC373N till stift 1 (OE) på 74HC373N
Du kan ansluta en blå lysdiod till 1Y och mark samt 2Y till jord, detta indikerar när grinden är aktiv.
Ändra slutligen raden i onClock -proceduren från program1 till program2
setDataPins (program2 [offset]);
Steg 6: Programmet
6502-Monitor-programmet innehåller de två 6502-rutinerna som beskrivs ovan.
Programmet är fortfarande under utveckling och är lite orent.
När program2 körs kan fördröjningarna i loop () vara 50 eller mindre och till och med tas bort helt. Genom att kommentera Serial.print () -linjerna gör 6502 också snabbare. Att koppla bort stift 1 (OE) på 373 från stift 11 (LE) ger olika resultat. Genom att koppla bort stift 1 och stift 11 på 373 från NAND -portarna kan du se vad som finns på databussen vid varje klockcykel.
Du kan behöva knyta OE till marken i stället för att låta den vara flytande eftersom de 8 utgångslinjerna är inaktiverade om denna stift går högt. När LE -stiftet är högt är utgångsstiften desamma som ingångarna. Att ta LE -stiftet låser utgångarna, dvs om ingångsstiften ändras förblir utgångarna desamma.
Jag har försökt att hålla programmet så enkelt som möjligt för att göra det lättare att förstå.
Att experimentera med tidsfördröjningar gör att du kan följa exakt vad 6502 gör.
Nedan visas de två programmen (båda körs på adressen $ 1000) i 6502 Assembler:
program 1
LDA#$ 55
NOP
ROL
STA $ 1010
JMP $ 1000
ROL roterar innehållet i ackumulatorn en bit kvar vilket betyder att $ 55 nu blir $ AA.
I maskinkod (hex): A9 55 EA 2A 8D 10 10 4C 00 10
program2
LDA#$ 01
STA $ 8100
ADC#$ 03
STA $ 8100
JMP $ 1005
I maskinkod (hex): A9 01 8D 00 81 69 03 8D 00 81 4C 05 10
I program2 finns det nu en fysisk adress $ 8100, där 74HC373 är placerad på adressbussen.
dvs A15 på 6502 är 32768 ($ 8000) och A8 är 256 ($ 0100) = 33024 ($ 8100).
Så när 6502 skriver till $ 8100 (STA $ 8100) är R/W på 6502 låg och data på 6502 -databussen låses när 373 LE går lågt. På grund av 74HC00 NAND -porten är signalerna omvända.
I ovanstående skärmtryck har den andra skrivningen ökat med 3 (ADC#$ 03) - gått från $ 7F till $ 82.
I verkligheten skulle mer än 2 rader i adressbussen användas för den specifika platsen för 373. Eftersom detta är den enda fysiska adressen av de möjliga 65536, visar det hur adressbussen fungerar. Du kan experimentera med olika adressnålar och placera den på en annan plats. Naturligtvis måste du ändra STA -operanderna till den nya platsen. t.ex. Om du använde adressrad A15 och A9 skulle adressen vara $ 8200 (32768 + 512).
Steg 7: Slutsats
Jag har försökt visa hur lätt det är att få igång en 6502.
Jag är ingen expert på detta område så jag tar gärna emot konstruktiva kommentarer eller information.
Du är välkommen att utveckla detta vidare och jag skulle vara intresserad av vad du har gjort.
Jag tänker lägga till en EEPROM, SRAM och en 6522 till projektet samt lägga den på bandbräda i framtiden.
Rekommenderad:
Konfigurera Raspberry Pi 4 via bärbar dator/dator med Ethernet-kabel (ingen bildskärm, ingen Wi-Fi): 8 steg
Konfigurera Raspberry Pi 4 via bärbar dator/dator med Ethernet-kabel (ingen bildskärm, ingen Wi-Fi): I detta ska vi arbeta med Raspberry Pi 4 Model-B med 1 GB RAM för installationen. Raspberry-Pi är en enda kortdator som används för utbildningsändamål och DIY-projekt till en överkomlig kostnad, kräver en strömförsörjning på 5V 3A
6502 Minimal dator (med Arduino MEGA) Del 3: 7 steg
6502 Minimal Computer (med Arduino MEGA) Del 3: Jag går vidare, jag har nu lagt till en Octal Latch, 8 rektangulära lysdioder och ett 220 Ohm motståndsarray till huvudkortet. Det finns också en bygel mellan matrisens gemensamma stift och jord, så att lysdioderna kan stängas av. 74HC00 NAND -grinden h
6502 & 6522 Minimal dator (med Arduino MEGA) Del 2: 4 steg
6502 & 6522 Minimal Computer (med Arduino MEGA) Del 2: Efter min tidigare instruerbara har jag nu lagt 6502 på ett bandkort och lagt till en 6522 Versatile Interface Adapter (VIA). Återigen använder jag en WDC -version av 6522, eftersom det är en perfekt matchning för deras 6502. Inte bara gör dessa nya
Använda PSP som dator joystick och sedan styra din dator med PSP: 5 steg (med bilder)
Använda PSP som dator joystick och sedan styra din dator med PSP: Du kan göra många häftiga saker med PSP homebrew, och i den här instruerbara lär jag dig hur du använder din PSP som en joystick för att spela spel, men det finns också ett program som låter dig använda din joystick som mus. Här är materien
Hur du får din bärbara dator att spara på batteriet med minimal prestandaförlust: 4 steg
Hur får du din bärbara dator att spara på batteriet med minimal prestandaförlust: Vem säger att din bärbara dator måste drabbas av långsam prestanda för att spara lite energi? Hur mycket din prestanda eller batterilivslängd förändras beror på din bärbara dators ålder, batteriets ålder och andra program och inställningar. Här är några enkla steg för att öka