Sommario:
- Forniture
- Passaggio 1: il circuito stampato
- Fase 2: Teoria della programmazione
- Passaggio 3: il programma e l'output Arduino
- Passaggio 4: conclusione
Video: 6502 e 6522 Minimal Computer (con Arduino MEGA) Parte 2: 4 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:01
Seguendo il mio precedente Instructable, ora ho messo il 6502 su una strip board e ho aggiunto un 6522 Versatile Interface Adapter (VIA). Ancora una volta, sto usando una versione WDC del 6522, in quanto è un abbinamento perfetto per il loro 6502. Non solo questi nuovi chip utilizzano molta meno energia rispetto alle versioni MOS originali, ma possono essere eseguiti a velocità inferiori o addirittura attraversati un programma senza problemi.
Il programma Arduino è stato originariamente scritto da Ben Eater (che ha molti video su YouTube) ed è stato modificato da me per ottenere questo risultato.
Forniture
1 x processore WDC W65C02
1 x adattatore di interfaccia versatile WDC W65C22
1 x 74HC00N IC (gate NAND quadruplo a 2 ingressi) o simile
1 x 10 cm di larghezza (35 linee) Stripboard
2 prese DIL a 40 pin
1 presa DIL a 14 pin
Pin header PCB 2,54 mm
Prese per PCB da 2,54 mm
1 x interruttore a pulsante tattile momentaneo da 12 mm montato su PCB SPST o simile
1 x 1K resistore
1 x 3K3 resistore
2 condensatori ceramici da 0,1 uF
1 x LED rosso da 5 mm con luce ad acqua a 8 vie
Cavo di vari colori per i collegamenti
8 fili di collegamento maschio - maschio
Passaggio 1: il circuito stampato
Il circuito è abbastanza compatto e la parte inferiore si collega direttamente all'Arduino MEGA. Per ottenere ciò, i perni vengono spinti il più possibile nei supporti in plastica prima di essere saldati alla parte inferiore della scheda. Avrebbero potuto essere usati pin più lunghi per questo, ma i pin standard significano che la scheda poggia saldamente sulla MEGA.
Ho allineato i circuiti integrati 6502 e 6522 in modo che utilizzino le piste della scheda strip per connettersi al MEGA. Ci sono anche alcune connessioni per il 6502 nascoste sotto l'IC. Quando si realizza la scheda, la prima cosa da fare è stata tagliare le 16 strisce che si collegheranno alla doppia fila di zoccoli dell'Arduino. I 2 esterni non devono essere tagliati poiché 5v e Gnd sono su entrambi i lati. Successivamente saldare nelle 2 file di 18 pin sul lato inferiore e nelle 2 file di 18 prese sul lato superiore.
Successivamente le prese DIL sono state saldate in posizione e le tracce sono state tagliate tra di loro. Avrei potuto salvare una connessione posizionando il pin 14 del 74HC00 sullo stesso binario di 5v. Ho tagliato le tracce solo quando ero sicuro che dovevano essere mentre stavo saldando i fili di collegamento. Tuttavia, le cose non vanno sempre secondo i piani, originariamente ho progettato la strip board dalla precedente breadboard usando i pin 2, 3 e 7 dell'Arduino, ma questi non si allineano con i fori nella strip board, quindi ho dovuto usare pin 18, 31 e 37. Da qui i collegamenti sulla mia scheda su 31 e 37. Potresti chiederti perché non ho usato uno dei pin inutilizzati (23, 24 ecc.) per l'orologio, questo perché non supportano interrupt, quindi ho dovuto usare i pin 18, 19, 20 o 21 che lo fanno. Fortunatamente questi 4 perni si allineano con i fori nella striscia e mantengono tutto compatto. Il pin 18 è anche il più lontano da tutti gli altri fili.
Potresti anche notare che la mia scheda completata non è esattamente la stessa del mio diagramma. Questo perché stavo seguendo il diagramma di qualcun altro. Da qui i collegamenti al 74HC00. Ho anche aggiunto un LED di alimentazione e altre 2 file di prese per Gnd e 5v, nonché un paio di condensatori in più.
Avrei potuto collegare le 2 prese dati, ma questo significherebbe molti più fili che attraversano la scheda. Ho optato per 8 cavi di collegamento per farlo come misura temporanea.
Le porte A e B del 6522 hanno prese saldate alle loro tracce in modo che le marche LED possano essere facilmente inserite.
Ci sono molti meno fili ora di quanti ce ne fossero nella versione breadboard.
Fase 2: Teoria della programmazione
Il 6522 ha due porte I/O e molte altre funzioni, ma le porte A e B sono facilmente accessibili. Per inviare i dati sulla porta, è necessario impostare di conseguenza il registro di direzione dei dati (DDR) e inviare i dati alla porta stessa.
Con la configurazione di cui sopra, il 6522 si trova a $ E000.
Per inviare i dati sulla porta B, il DDR a $E002 è impostato su $FF (255 - tutte le uscite) e i dati vengono inviati a $E000.
Per inviare i dati sulla porta A, il DDR a $E003 è impostato su $FF (255 - tutte le uscite) e i dati vengono inviati a $E001.
Il codice seguente carica $FF nel registro 6502 A e lo scrive in DDR B a $E002. Quindi carica $ 55 e lo scrive su ORB. Il codice viene ruotato (dando $AA) e scritto su ORB. Il programma torna indietro di $ 1005 e si ripete all'infinito. NOTA: il DDR deve essere inizializzato solo una volta.
Indirizzo Hexdump Disassemblaggio
$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 JMP $1005
$55 in binario è 010101010 e $AA è 10101010, il che fa sì che i LED si alternino tra 4 accesi e 4 spenti.
Soluzione rapida e sporca:
Sostituisci il 74HC00 (Quad 2 input NAND Gate) con un 74HC08 (Quad 2 input AND Gate) e il 6522 si trova ora a $ 6000 invece di $ E000. Questo lo sposta dai 32K superiori ai 32K inferiori della memoria indirizzabile del 6502.
Passaggio 3: il programma e l'output Arduino
Poiché il 6502 non ha RAM da cui leggere, Arduino fornisce il programma per la lettura. Quando viene rilevato un impulso di clock sul pin 18, Arduino inserisce i dati del programma sul bus dati (pin 39, 41, 43, 45, 47, 49, 51 e 53 di Arduino). Il 6502 genera i propri indirizzi che sono monitorati solo dall'Arduino sui pin pari da 22 a 52. L'Arduino fornisce anche l'impulso di clock sul pin 37. La linea R/W del 6502 è monitorata sul pin 31.
Poiché Arduino sta fornendo i dati, finora non è stato possibile far sì che il 6502 inserisca i dati dal VIA (a meno che tu non lo sappia meglio).
Il programma Arduino è sotto e un output di esempio dal monitor seriale è sopra.
Passaggio 4: conclusione
Anche in questo caso ho cercato di mostrare come impostare un "computer 6502 minimo".
In questa fase il 6502 fa ancora affidamento sull'Arduino per fornirgli un programma e un impulso di clock affinché possa funzionare.
È un passo in più rispetto a quando l'ho installato su breadboard.
Questa volta non ho usato il 74HC373, ma il più complesso 6522 per bloccare le uscite dei dati. Anche il 6522 ha due porte I/O.
Intendo portare avanti questo progetto installando un po' di SRAM o una EEPROM.
Consigliato:
6502 Computer minimale (con Arduino MEGA) Parte 3: 7 passaggi
6502 Minimal Computer (con Arduino MEGA) Parte 3: Andando oltre, ho aggiunto un Octal Latch, 8 LED rettangolari e un array di resistori da 220 Ohm alla scheda principale. C'è anche un ponticello tra il pin comune dell'array e la massa, in modo che i LED possano essere spenti. Il cancello 74HC00 NAND h
6502 Computer minimale (con Arduino MEGA) Parte 1: 7 passaggi
6502 Minimal Computer (con Arduino MEGA) Parte 1: Il microprocessore 6502 è apparso per la prima volta nel 1975 ed è stato progettato da un piccolo team guidato da Chuck Peddle per la tecnologia MOS. All'epoca era utilizzato nelle console video e negli home computer tra cui Atari, Apple II, Nintendo Entertainment System, BBC Micr
Utilizzo della PSP come joystick del computer e quindi controllo del computer con la PSP: 5 passaggi (con immagini)
Utilizzo della PSP come joystick del computer e quindi controllo del computer con la PSP: puoi fare molte cose interessanti con l'homebrew della PSP, e in questo tutorial ti insegnerò come usare la tua PSP come joystick per giocare, ma c'è anche un programma che ti permette di usare il tuo joystick come mouse. Ecco i mater
Come Incidere la Finestra di un Computer (Parte 1): 6 Passaggi
Come incidere la finestra di un computer (parte 1): ho visto molti casi con le finestre trasparenti incise. Avevo deciso di incidere le mie finestre per dare loro un nuovo aspetto. Non è così difficile come sembra, prenditi il tuo tempo e otterrai buoni risultati. Altre istruzioni per la finestra del caso possono essere trovate su Instru
Come Incidere la Finestra di un Computer (Parte 2): 5 Passaggi (con Immagini)
Come incidere una finestra del computer (Parte 2): Questo va con Come incidere una finestra del computer (Parte 1) Questo è facoltativo ma penso che sia bello. La parte 2 è prendere quell'incisione e farla risaltare. Questo fa sembrare la finestra come Tron in un certo senso. Questo è un bell'effetto ma hai bisogno di un po' di bri