Innholdsfortegnelse:
- Rekvisita
- Trinn 1: Konseptet
- Trinn 2: Krav
- Trinn 3: Sette det sammen
- Trinn 4: Test kretsen
- Trinn 5: Neste trinn
- Trinn 6: Programmet
- Trinn 7: Konklusjon
Video: 6502 Minimal datamaskin (med Arduino MEGA) Del 1: 7 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:22
6502 mikroprosessoren dukket først opp i 1975 og ble designet av et lite team ledet av Chuck Peddle for MOS Technology. Den gang ble den brukt i videokonsoller og hjemmemaskiner, inkludert Atari, Apple II, Nintendo Entertainment System, BBC Micro, Commodore VIC20 og 64. På den tiden var den en av de billigste på markedet. Det har egentlig aldri forsvunnet, og nå brukes det av hobbyfolk og profesjonelle til mange bruksområder.
Versjonen jeg bruker er W65C02S6TPG-14 som er laget av Western Design Center og bruker ti ganger mindre strøm enn originalen. Det er spesielt ved at det ikke trenger å kjøre på 1 MHz som den originale brikken. Den kan kjøre mye saktere eller brukes til å gå gjennom et program og til og med rampe opp til 14 MHz. Dataarket for brikken forklarer dens evner. Andre 6502 sjetonger har ikke denne funksjonen og vil ikke kjøre på denne måten. Brikkene er for tiden tilgjengelige på Ebay så vel som andre kilder.
Rekvisita
Alle brukte deler er for tiden tilgjengelige på Ebay, AliExpress og andre.
Trinn 1: Konseptet
Jeg hentet inspirasjonen min fra Ben Eater som har produsert en serie videoer på YouTube om 6502 og mange andre aspekter ved bygging av datamaskiner og kretser. Programmet ble skrevet av ham opprinnelig, og jeg har modifisert dette og noen av designene hans for å komme med denne Instructable. En annen person som inspirerte meg var Andrew Jacobs som har en seksjon på GitHub hvor han bruker en PIC -mikro for å kontrollere 6502.
Som Ben, bruker jeg en Arduino MEGA for å overvåke 6502. Jeg bruker også MEGA for å gi klokkesignalet i motsetning til Ben. For tiden bruker jeg ikke noen EEPROM eller RAM.
Trinn 2: Krav
For å bygge denne "datamaskinen" er en liste over elementer 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 hulls brødbrett (1 i klem)
Ulike Dupont mannlige - mannlige ledninger og ledninger
2 x lysdioder (jeg brukte 5 mm blått, da du kan slippe unna uten motstander)
1 x 12 mm Momentary Tactile Push Button Switch PCB Mounted SPST eller lignende
1 x 1K motstand
2 x 0,1 uF keramiske kondensatorer
1 x 8 Way Water Light Marquee 5 mm rød LED (som ovenfor) eller 8 LED og motstander
MERK: Hvis du får det usolgte settet, kan du sette inn lysdiodene feil vei, slik at de er en vanlig katode. Jeg fester en flueledning (i stedet for pinnen) slik at den enkelt kan koble til andre steder. VCC blir nå Ground. Du kan selvsagt snu lysdiodene rundt (på en samlet gjenstand) og lodde dem på nytt, men dette er mye faff! Kits er for øyeblikket tilgjengelig på AliExpress.
Trinn 3: Sette det sammen
Jeg fant det lettere å bruke nye DuPont -ledninger som ikke hadde blitt skilt fra båndet for adresse- og databussene.
Koble pin 9 (A0) på 6502 til pin 52 på MEGA, pin 10 (A1) av 6502 til pin 50 etc …
før
Koble pin 25 (A15) på 6502 til pin 22 på MEGA.
16 forbindelser så langt.
like måte
Koble pin 26 (D7) på 6502 til pin 39 på MEGA, pin 27 (D6) på 6502 til pin 41 etc …
før
Koble pin 33 (D0) på 6502 til pin 53 på MEGA.
8 tilkoblinger til.
Koble pin 8 (VDD) til 5v på MEGA.
En 0.1uF kondensator koblet fra pin 8 til Gnd på brødbrettet kan være nyttig her, men ikke nødvendig.
Koble pin 21 (VSS) til Gnd på MEGA.
Pins 2, 4, 6, 36 og 38 kan knyttes til 5v
Koble pin 37 (Clock) til pin 2 og pin 7 på MEGA.
Koble pin 34 (RWB) til pin 3 på MEGA.
Koble pin 40 (Reset) som diagrammet ovenfor.
Trinn 4: Test kretsen
På dette stadiet vil 6502 fungere og program1 kan brukes. Hvis du bruker 8 -veis teltet (som ovenfor), kan det settes rett inn i brødbrettet og flueledningen kobles til bakken, eller du kan bruke 8 lysdioder og motstander. Lysdiodene viser hva som er på databussen.
På dette stadiet ville det være greit å sette forsinkelsene i løkken () til 500 eller mer, for å følge med på hva som skjer.
Du bør få en lignende utgang på Serial Monitor som den ovenfor. Når Reset trykkes, går prosessoren gjennom 7 sykluser, og deretter ser den etter starten av programmet på steder $ FFFC og $ FFFD. Siden det ikke er noen fysiske adresser for 6502 å lese, må vi levere dem fra MEGA.
I utgangen ovenfor leser 6502 $ FFFC og $ FFFD og får $ 00 og $ 10 (lav byte, høy byte) som er starten på programmet på $ 1000. Prosessoren begynner deretter å utføre programmet på stedet $ 1000 (som ovenfor). I dette tilfellet leser den $ A9 og $ 55, dvs. LDA#$ 55 (Last 85 inn i akkumulatoren). Igjen ettersom det ikke er noe fysisk minne, simulerer MEGA det som leses fra databussen.
$ 55 (85) gir det binære mønsteret 01010101, og når det roteres gir 1 bit til venstre $ AA (170) 10101010.
Programmet viser at prosessoren fungerer som den skal, men snart blir litt kjedelig, så fortsett til neste del.
Trinn 5: Neste trinn
"Haugen med spaghetti" ovenfor er sannsynligvis noe som det du vil ha etter dette stadiet.
Deretter må du legge 74HC373N og 74HC00N IC til brødbrettet.
Dessverre er ikke 373 -pinnene i tråd med databussen, så må koble til ledninger.
Koble 5v til pin 20.
Koble bakken til pinne 10.
Koble pin 33 (D0) på 6502 til pin 3 (D0) på 74HC373N
og på samme måte med pinnene D1 til D7.
Q0 til Q7 er utgangene, og disse må koble til LED -teltet eller individuelle lysdioder og motstander.
Med 74HC00 er det bare to av portene som trengs
Koble 5v til pin 14.
Koble bakken til pinne 7.
Koble pin 17 (A8) på 6502 til pin 1 (1A) på 74HC00
Koble pin 25 (A15) på 6502 til pin 2 (1B) på 74HC00
Koble pin 34 (R/W) på 6502 til pin 5 (2B) på 74HC00
Koble pin 3 (1Y) på 74HC00 til pin 4 (2A) på 74HC00
Koble pin 6 (2Y) på 74HC00 til pin 11 (LE) på 74HC373N
Koble pin 11 (LE) på 74HC373N til pin 1 (OE) på 74HC373N
Du kan koble en blå LED til 1Y og bakken samt 2Y til bakken, dette vil indikere når porten er aktiv.
Endelig endre linjen i onClock -prosedyren fra program1 til program2
setDataPins (program2 [offset]);
Trinn 6: Programmet
6502-Monitor-programmet inneholder de to 6502-rutinene beskrevet ovenfor.
Programmet er fortsatt under utvikling og er litt uryddig.
Når du kjører program2, kan forsinkelsene i sløyfen () være 50 eller mindre og til og med fjernet helt. Å kommentere Serial.print () -linjene får også 6502 til å kjøre raskere. Å koble pin 1 (OE) på 373 fra pin 11 (LE) gir forskjellige resultater. Ved å koble pin 1 og pin 11 på 373 fra NAND -portene kan du se hva som er på databussen ved hver klokkesyklus.
Du må kanskje knytte OE til bakken i stedet for å la den flyte ettersom de 8 utgangslinjene er deaktivert hvis denne pinnen går høyt. Når LE -pinnen er høy, er utgangspinnene de samme som inngangene. Hvis du tar LE -pinnen lavt, låses utgangene, dvs. hvis inngangspinnene endres, forblir utgangene de samme.
Jeg har prøvd å holde programmet så enkelt som mulig for å gjøre det lettere å forstå.
Å eksperimentere med tidsforsinkelser lar deg følge nøyaktig hva 6502 gjør.
Nedenfor er de to programmene (begge kjørt på adresse $ 1000) i 6502 Assembler:
program 1
LDA#$ 55
NOP
ROL
STA $ 1010
JMP $ 1000
ROL roterer innholdet i akkumulatoren en bit igjen, noe som betyr at $ 55 nå blir $ 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 det nå en fysisk adresse $ 8100, som er der 74HC373 er plassert 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å grunn av 74HC00 NAND -porten er signalene reversert.
I skjermbildet ovenfor har den andre skrivingen økt med 3 (ADC#$ 03) - gått fra $ 7F til $ 82.
I virkeligheten vil mer enn 2 linjer i adressebussen bli brukt for den spesifikke plasseringen av 373. Siden dette er den eneste fysiske adressen ut av den mulige 65536, demonstrerer den hvordan adressebussen fungerer. Du kan eksperimentere med forskjellige adressepinner og sette den på et annet sted. Selvfølgelig må du endre STA -operandene til det nye stedet. f.eks. Hvis du brukte adresselinjene A15 og A9, ville adressen være $ 8200 (32768 + 512).
Trinn 7: Konklusjon
Jeg har prøvd å demonstrere hvor enkelt det er å få en 6502 i gang.
Jeg er ikke ekspert på dette feltet, så jeg tar gjerne imot konstruktive kommentarer eller informasjon.
Du er velkommen til å utvikle dette videre, og jeg vil være interessert i hva du har gjort.
Jeg har tenkt å legge til en EEPROM, SRAM og en 6522 i prosjektet, i tillegg til å legge den på stripebrett i fremtiden.
Anbefalt:
Slik sender du store filer fra datamaskin til datamaskin: 6 trinn
Slik sender du store filer fra datamaskin til datamaskin: Filstørrelsene fortsetter å øke i størrelse etter hvert som teknologien utvikler seg. Hvis du er i et kreativt håndverk, for eksempel design eller modellering, eller bare en hobbyist, kan det være vanskelig å overføre store filer. De fleste e -posttjenester begrenser maksimale vedleggsstørrelser til omtrent 25
6502 Minimal datamaskin (med Arduino MEGA) Del 3: 7 trinn
6502 Minimal Computer (med Arduino MEGA) Del 3: Jeg fortsetter videre, jeg har nå lagt til en Octal Latch, 8 rektangulære lysdioder og et 220 Ohm motstandsarray til hovedkortet. Det er også en jumper mellom matrisens vanlige pinne og bakken, slik at lysdiodene kan slås av. 74HC00 NAND -porten
6502 og 6522 Minimal datamaskin (med Arduino MEGA) Del 2: 4 trinn
6502 og 6522 Minimal datamaskin (med Arduino MEGA) Del 2: I forlengelse av min forrige Instructable, har jeg nå satt 6502 på et stripebrett og lagt til en 6522 allsidig grensesnittadapter (VIA). Igjen bruker jeg en WDC -versjon av 6522, ettersom den er en perfekt match for deres 6502. Ikke bare gjør disse nye
Slik demonterer du en datamaskin med enkle trinn og bilder: 13 trinn (med bilder)
Slik demonterer du en datamaskin med enkle trinn og bilder: Dette er en instruksjon om hvordan du demonterer en PC. De fleste grunnkomponentene er modulære og fjernes lett. Det er imidlertid viktig at du er organisert om det. Dette vil bidra til å hindre deg i å miste deler, og også i å gjøre monteringen igjen
Bruk SSH og XMing til å vise X -programmer fra en Linux -datamaskin på en Windows -datamaskin: 6 trinn
Bruk SSH og XMing til å vise X -programmer fra en Linux -datamaskin på en Windows -datamaskin: Hvis du bruker Linux på jobben, og Windows hjemme, eller omvendt, kan det være at du til tider må logge deg på datamaskinen på din andre plassering og kjøre programmer. Vel, du kan installere en X -server og aktivere SSH -tunneling med SSH -klienten din, og en