Indholdsfortegnelse:
- Forbrugsvarer
- Trin 1: Konceptet
- Trin 2: Krav
- Trin 3: Sæt det sammen
- Trin 4: Test af kredsløbet
- Trin 5: Næste trin
- Trin 6: Programmet
- Trin 7: Konklusion
Video: 6502 Minimal computer (med Arduino MEGA) Del 1: 7 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:27
6502 mikroprocessoren optrådte første gang i 1975 og blev designet af et lille team ledet af Chuck Peddle for MOS Technology. Dengang blev det brugt i videokonsoller og hjemmecomputere, herunder Atari, Apple II, Nintendo Entertainment System, BBC Micro, Commodore VIC20 og 64. På det tidspunkt var det en af de billigste på markedet. Det er aldrig rigtig forsvundet, og nu bruges det af hobbyfolk og professionelle til mange applikationer.
Den version, jeg bruger, er W65C02S6TPG-14, som er lavet af Western Design Center og bruger ti gange mindre strøm end originalen. Det er specielt ved, at det ikke behøver at køre ved 1 MHz som den originale chip. Det kan køre meget langsommere eller bruges til et enkelt trin gennem et program og endda rampe op til 14 MHz. Databladet for chippen forklarer dens muligheder. Andre 6502 chips har ikke denne kapacitet og vil ikke køre på denne måde. Chipperne er i øjeblikket tilgængelige på Ebay såvel som andre kilder.
Forbrugsvarer
Alle brugte dele er i øjeblikket tilgængelige på Ebay, AliExpress og andre.
Trin 1: Konceptet
Jeg fik min inspiration fra Ben Eater, der har produceret en række videoer på YouTube om 6502 og mange andre aspekter ved opbygning af computere og kredsløb. Programmet blev oprindeligt skrevet af ham, og jeg har ændret dette og nogle af hans designs for at komme med denne Instructable. En anden person, der inspirerede mig, var Andrew Jacobs, der har et afsnit på GitHub, hvor han bruger en PIC -mikro til at styre sin 6502.
Ligesom Ben bruger jeg en Arduino MEGA til at overvåge 6502. Jeg bruger også MEGA til at levere urets signal i modsætning til Ben. I øjeblikket bruger jeg heller ikke nogen EEPROM'er eller RAM.
Trin 2: Krav
For at bygge denne "computer" er en liste over emner som følger:
1 x Arduino MEGA
1 x Western Design Center W65C02S6TPG-14
1 x 74HC00N IC (Quad 2-input NAND gate) eller lignende
1 x 74HC373N IC (Octal D-type transparent lås) eller lignende
2 x 830 hullers brødbrætter (1 i klemme)
Forskellige Dupont han- og hanledninger og forbindelsestråde
2 x lysdioder (jeg brugte 5 mm blå, da du kan slippe afsted uden modstande)
1 x 12 mm Momentary Tactile Push Button Switch PCB -monteret SPST eller lignende
1 x 1K modstand
2 x 0,1 uF keramiske kondensatorer
1 x 8 Way Water Light Marquee 5mm rød LED (som ovenfor) eller 8 LED'er og modstande
BEMÆRK: Hvis du får det usolderede kit, kan du indsætte lysdioderne forkert, så de er almindelige katoder. Jeg fastgør en flueledning (i stedet for stiften), så den let kan forbindes andre steder. VCC bliver nu Ground. Du kan selvfølgelig dreje LED'erne rundt (på en samlet genstand) og lodde dem igen, men det er meget faff! Kits er i øjeblikket tilgængelige på AliExpress.
Trin 3: Sæt det sammen
Jeg fandt det lettere at bruge nye DuPont -ledninger, der ikke var adskilt fra deres bånd til adresse- og databusserne.
Tilslut pin 9 (A0) på 6502 til pin 52 på MEGA, pin 10 (A1) af 6502 til pin 50 osv …
så længe
Tilslut pin 25 (A15) på 6502 til pin 22 på MEGA.
16 forbindelser indtil videre.
Ligeledes
Tilslut pin 26 (D7) på 6502 til pin 39 på MEGA, pin 27 (D6) på 6502 til pin 41 osv …
så længe
Tilslut pin 33 (D0) på 6502 til pin 53 på MEGA.
8 flere forbindelser.
Tilslut pin 8 (VDD) til 5v på MEGA.
En 0.1uF kondensator forbundet fra pin 8 til Gnd på brødbrættet kan være nyttig her, men ikke nødvendig.
Tilslut pin 21 (VSS) til Gnd på MEGA.
Stifter 2, 4, 6, 36 og 38 kan bindes til 5v
Tilslut pin 37 (ur) til pin 2 og pin 7 på MEGA.
Tilslut pin 34 (RWB) til pin 3 på MEGA.
Tilslut pin 40 (Reset) som diagrammet ovenfor.
Trin 4: Test af kredsløbet
På dette stadium fungerer 6502, og program1 kan bruges. Hvis du bruger 8 -vejs teltet (som ovenfor), kan det indsættes direkte i brødbrættet og flueledningen tilsluttes jorden, eller du kan bruge 8 lysdioder og modstande. LED'erne viser, hvad der er på databussen.
På dette tidspunkt ville det være lige så godt at indstille forsinkelserne i Loop () til 500 eller mere for at følge, hvad der sker.
Du bør få et lignende output på den serielle skærm som den ovenfor. Når der trykkes på Reset, går processoren igennem syv cyklusser, og derefter ser den efter starten af programmet på steder $ FFFC og $ FFFD. Da der ikke er nogen fysiske adresser til 6502 at læse, er vi nødt til at levere dem fra MEGA.
I ovenstående output læser 6502 $ FFFC og $ FFFD og får $ 00 og $ 10 (lav byte, høj byte), som er starten på programmet med $ 1000. Processoren begynder derefter at udføre programmet på stedet $ 1000 (som ovenfor). I dette tilfælde læser den $ A9 og $ 55, dvs. LDA#$ 55 (Indlæs 85 i akkumulatoren). Igen, da der ikke er nogen fysisk hukommelsesplacering, simulerer MEGA, hvad der læses fra databussen.
$ 55 (85) giver det binære mønster 01010101, og når det roteres, giver 1 bit til venstre $ AA (170) 10101010.
Programmet viser, at processoren fungerer korrekt, men snart bliver lidt kedelig, så videre til næste del.
Trin 5: Næste trin
"Bunken spaghetti" ovenfor er sandsynligvis noget i stil med, hvad du vil have efter denne fase.
Dernæst skal du tilføje 74HC373N og 74HC00N IC'erne til brødbrættet.
Desværre stemmer 373's pins ikke op med databussen, så det skal være tilsluttet ledninger.
Tilslut 5v til pin 20.
Tilslut jorden til pin 10.
Tilslut pin 33 (D0) på 6502 til pin 3 (D0) på 74HC373N
og ligeledes med stifterne D1 til D7.
Q0 til Q7 er output, og disse skal tilsluttes LED -partiet eller individuelle LED'er og modstande.
Med 74HC00 er der kun brug for 2 af dens porte
Tilslut 5v til pin 14.
Tilslut jord til stift 7.
Tilslut pin 17 (A8) på 6502 til pin 1 (1A) på 74HC00
Tilslut pin 25 (A15) på 6502 til pin 2 (1B) på 74HC00
Tilslut pin 34 (R/W) på 6502 til pin 5 (2B) på 74HC00
Tilslut pin 3 (1Y) på 74HC00 til pin 4 (2A) på 74HC00
Tilslut pin 6 (2Y) på 74HC00 til pin 11 (LE) på 74HC373N
Tilslut pin 11 (LE) på 74HC373N til pin 1 (OE) på 74HC373N
Du kan tilslutte en blå LED til 1Y og jord samt 2Y til jord, dette vil indikere, når porten er aktiv.
Endelig ændres linjen i onClock -proceduren fra program1 til program2
setDataPins (program2 [offset]);
Trin 6: Programmet
6502-Monitor-programmet indeholder de to 6502-rutiner beskrevet ovenfor.
Programmet er stadig under udvikling og er lidt rodet.
Når du kører program2, kan forsinkelserne i loop () være 50 eller mindre og endda fjernet helt. Kommentering af Serial.print () -linjerne får også 6502 til at køre hurtigere. Afbrydelse af pin 1 (OE) på 373 fra pin 11 (LE) giver forskellige resultater. Ved at afbryde pin 1 og pin 11 på 373 fra NAND -portene kan du se, hvad der er på databussen ved hver urcyklus.
Du skal muligvis binde OE til jorden i stedet for at lade den flyde, da de 8 outputlinjer er deaktiveret, hvis denne pin går højt. Når LE -stiften er høj, er udgangsstifterne de samme som indgangene. Hvis LE -stiften tages lavt, låses udgangene, dvs. hvis input -benene ændres, forbliver udgangene de samme.
Jeg har forsøgt at holde programmet så enkelt som muligt for at gøre det lettere at forstå.
Eksperimenter med tidsforsinkelser giver dig mulighed for at følge præcis, hvad 6502 laver.
Nedenfor er de to programmer (begge kører på adressen $ 1000) i 6502 Assembler:
program 1
LDA#$ 55
INTET P
ROL
STA $ 1010
JMP $ 1000
ROL roterer indholdet i akkumulatoren en bit tilbage, hvilket betyder, at $ 55 nu bliver $ AA.
I maskinkode (hex): A9 55 EA 2A 8D 10 10 4C 00 10
program 2
LDA#$ 01
STA $ 8100
ADC#$ 03
STA $ 8100
JMP $ 1005
I maskinkode (hex): A9 01 8D 00 81 69 03 8D 00 81 4C 05 10
I program2 er der nu en fysisk adresse $ 8100, hvor 74HC373 er placeret på adressebussen.
dvs. A15 på 6502 er 32768 ($ 8000) og A8 er 256 ($ 0100) = 33024 ($ 8100).
Så når 6502 skriver til $ 8100 (STA $ 8100), er R/W på 6502 lav, og dataene på 6502 -databussen låses, når 373 LE går lavt. På grund af 74HC00 NAND Gate vendes signalerne.
I ovenstående skærmprint er den anden skrivning steget med 3 (ADC#$ 03) - gået fra $ 7F til $ 82.
I virkeligheden ville mere end 2 linjer i adressebussen blive brugt til den specifikke placering af 373. Da dette er den eneste fysiske adresse ud af den mulige 65536, viser det, hvordan adressebussen fungerer. Du kan eksperimentere med forskellige adressestifter og placere det et andet sted. Selvfølgelig skal du ændre STA -operanderne til den nye placering. f.eks. Hvis du brugte adresselinjer A15 og A9, ville adressen være $ 8200 (32768 + 512).
Trin 7: Konklusion
Jeg har forsøgt at demonstrere, hvor let det er at få en 6502 i gang.
Jeg er ikke ekspert på dette område, så jeg modtager gerne konstruktive kommentarer eller oplysninger.
Du er velkommen til at udvikle dette yderligere, og jeg vil være interesseret i, hvad du har gjort.
Jeg agter at tilføje et EEPROM, SRAM og en 6522 til projektet samt lægge det på stripboard i fremtiden.
Anbefalede:
Mega RasPi - en Raspberry Pi i et Sega Mega Drive / Genesis: 13 trin (med billeder)
Mega RasPi - en Raspberry Pi i en Sega Mega Drive / Genesis: Denne guide tager dig gennem konverteringen af et gammelt Sega Mega Drive til en retro -spilkonsol ved hjælp af en Raspberry Pi. Jeg har brugt utallige timer i min barndom på at spille videospil på mit Sega Mega Drive. De fleste af mine venner havde også en, så vi ville
6502 Minimal computer (med Arduino MEGA) Del 3: 7 trin
6502 Minimal Computer (med Arduino MEGA) Del 3: Fremadrettet har jeg nu tilføjet en Octal Latch, 8 rektangulære LED'er og en 220 Ohm modstands array til hovedkortet. Der er også en jumper mellem arrayets fælles pin og jord, så LED'erne kan slukkes. 74HC00 NAND -porten h
6502 & 6522 Minimal computer (med Arduino MEGA) Del 2: 4 trin
6502 & 6522 Minimal Computer (med Arduino MEGA) Del 2: I forlængelse af min tidligere Instructable, har jeg nu sat 6502 på et stripkort og tilføjet en 6522 Alsidig Interface Adapter (VIA). Igen bruger jeg en WDC -version af 6522, da det er et perfekt match til deres 6502. Ikke kun gør disse nye c
Minimal Fire X 12 Volt Rover Chassis Med GoBILDA: 10 trin
Minimal Four X 12 Volt Rover Chassis Med GoBILDA: Jeg vil vise dig, hvordan jeg byggede et RC eller autonomt rover -chassis ved hjælp af goBILDA -komponenter. Jeg skal tilføje her, at jeg ikke har nogen forbindelse med goBILDA andet end som en stort set tilfreds kunde. Jeg har inkluderet en komplet reservedelsliste under Suppl
Brug af PSP som computer -joystick og derefter kontrollere din computer med PSP: 5 trin (med billeder)
Brug af PSP som computer joystick og derefter styring af din computer med PSP: Du kan gøre mange fede ting med PSP homebrew, og i denne instruktive vil jeg lære dig, hvordan du bruger din PSP som et joystick til at spille spil, men der er også et program, der giver dig mulighed for at bruge dit joystick som din mus. Her er materien