Taula de continguts:

Ordinador mínim 6502 i 6522 (amb Arduino MEGA) Part 2: 4 passos
Ordinador mínim 6502 i 6522 (amb Arduino MEGA) Part 2: 4 passos

Vídeo: Ordinador mínim 6502 i 6522 (amb Arduino MEGA) Part 2: 4 passos

Vídeo: Ordinador mínim 6502 i 6522 (amb Arduino MEGA) Part 2: 4 passos
Vídeo: 6502 CPU: 6522 VIA output to LEDs 2024, De novembre
Anonim
Ordinador mínim 6502 i 6522 (amb Arduino MEGA) part 2
Ordinador mínim 6502 i 6522 (amb Arduino MEGA) part 2

Seguint el meu anterior Instructable, ara he posat el 6502 a una placa de tires i he afegit un adaptador d'interfície versàtil (VIA) 6522. Una vegada més, estic fent servir una versió WDC del 6522, ja que és una combinació perfecta per al seu 6502. Aquests nous xips no només utilitzen molta menys potència que les versions originals de MOS, sinó que es poden executar a velocitats més baixes o fins i tot fer-hi un pas. un programa sense problemes.

El programa Arduino va ser escrit originalment per Ben Eater (que té molts vídeos a YouTube) i he estat modificat per aconseguir aquest resultat.

Subministraments

1 x processador WDC W65C02

1 adaptador d'interfície versàtil WDC W65C22

1 x IC 74HC00N (porta NAND Quad 2 entrades) o similar

1 x 10cm d'ample (35 línies) Tauler de tires

2 endolls DIL de 40 pins

Presa DIL d'1 x 14 pins

Pins de capçalera PCB de 2,54 mm

Preses de capçal de PCB de 2,54 mm

1 interruptor de botó momentani tàctil momentani de 12 mm muntat en PCB SPST o similar

1 x 1K resistència

1 x resistència 3K3

2 condensadors ceràmics de 0,1 uF

Carpa de llum d'aigua 1 x 8 vies LED vermell de 5 mm

Filferro de diversos colors per a connexions

8 cables d'enllaç mascle - mascle

Pas 1: la placa de circuit

La placa de circuits
La placa de circuits
La placa de circuits
La placa de circuits

La placa de circuit és força compacta i la part inferior es connecta directament a l’Arduino MEGA. Per aconseguir-ho, els passadors s’introdueixen el màxim possible als suports de plàstic abans de soldar-se a la part inferior del tauler. Per a això es podrien haver utilitzat pins més llargs, però els pins estàndard volen dir que el tauler es recolza fermament a sobre del MEGA.

He alineat els circuits integrats 6502 i 6522 perquè facin ús de les pistes del tauler de tires per connectar-se al MEGA. També hi ha algunes connexions per al 6502 amagades sota l'IC. A l’hora de fabricar el tauler, el primer que s’ha de fer va ser tallar les 16 tires que es connectaran a la doble fila de sòcols de l’Arduino. No cal tallar els 2 exteriors, ja que el 5v i el Gnd estan a banda i banda. Següent soldadura a les 2 files de 18 pins de la part inferior i a les 2 files de 18 endolls a la part superior.

Després d'això, els endolls DIL es van soldar al seu lloc i es van tallar les vies entre ells. Podria haver desat una connexió posant el pin 14 del 74HC00 a la mateixa pista que 5v. Només vaig tallar les vies quan estava segur que havien de ser mentre soldava els cables de connexió. Tanmateix, les coses no sempre van al pla, originalment vaig dissenyar el tauler de tires de la taula de pa anterior utilitzant els passadors 2, 3 i 7 de l’Arduino, però no s’alineaven amb els forats del tauler de tires. els pins 18, 31 i 37. Per tant, els enllaços del meu tauler els dies 31 i 37. Us podeu preguntar per què no he utilitzat un dels pins no utilitzats (23, 24, etc.) per al rellotge, perquè això no és compatible interrupcions, de manera que calia utilitzar el pin 18, 19, 20 o 21 que sí. Afortunadament, aquests 4 pins s’alineen amb els forats del tauler de tires i ho mantenen tot compacte. El pin 18 també està més allunyat de tots els altres cables.

També podeu notar que el meu tauler completat no és exactament el mateix que el meu diagrama. Això es deu al fet que seguia el diagrama d'una altra persona. D’aquí les connexions al 74HC00. També he afegit un LED d'alimentació i 2 files addicionals de sòcols per a Gnd i 5v, així com un parell de condensadors més.

Podria haver connectat els dos sòcols de dades, però això significaria molts més cables que creuaven la placa. Vaig optar per 8 cables d'enllaç per fer-ho com a mesura temporal.

Els ports 6522 A i B han tingut sòcols soldats a les seves vies perquè es puguin inserir fàcilment marques LED.

Ara hi ha molts menys cables que a la versió de taulers de pa.

Pas 2: teoria de la programació

Teoria de la programació
Teoria de la programació

El 6522 té dos ports d'E / S, així com moltes altres funcions, però els ports A i B són fàcilment accessibles. Per generar dades al port, cal establir el Registre de direcció de dades (DDR) en conseqüència i enviar les dades al propi port.

Amb la configuració anterior, el 6522 es troba a $ E000.

Per generar dades al port B, el DDR a $ E002 es defineix en $ FF (255 - totes les sortides) i les dades s’envien a $ E000.

Per generar dades al port A, el DDR a $ E003 es defineix en $ FF (255 - totes les sortides) i les dades s’envien a $ E001.

El codi següent carrega $ FF al registre 6502 A i l’escriu a DDR B a $ E002. Després carrega 55 dòlars i l’escriu a ORB. El codi es gira (donant $ AA) i s’escriu a ORB. El programa fa un salt de 1005 dòlars i es repeteix sense parar. NOTA: el DDR només s’ha d’inicialitzar una vegada.

Adreça Hexdump Desmuntatge

$ 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 en binari és 010101010 i $ AA és 10101010, cosa que fa que els LED alternin 4 encès i 4 apagats.

Solució ràpida i bruta:

Substituïu el 74HC00 (Quad NAND Gate d'entrada 2) per un 74HC08 (Quad 2 input AND Gate) i el 6522 ara es troba a $ 6000 en lloc de $ E000. Això el mou des dels 32K superiors als 32K inferiors de la memòria adreçable del 6502.

Pas 3: el programa i la sortida d'Arduino

El programa i sortida Arduino
El programa i sortida Arduino

Com que el 6502 no té memòria RAM per llegir, l’Arduino subministra el programa perquè el llegeixi. Quan es detecta un pols de rellotge al pin 18, l’Arduino posa les dades del programa al bus de dades (pins Arduino 39, 41, 43, 45, 47, 49, 51 i 53). El 6502 genera les seves pròpies adreces, que només Arduino supervisa als pins parells 22 a 52. L'Arduino també subministra el pols del rellotge al pin 37. La línia R / W del 6502 es controla al pin 31.

Com Arduino subministra les dades, fins ara no ha estat possible obtenir el 6502 per introduir dades del VIA (tret que se sàpiga millor).

A continuació es mostra el programa Arduino i una mostra de sortida del monitor sèrie.

Pas 4: Conclusió

De nou he intentat mostrar com configurar un "ordinador 6502" mínim.

En aquesta etapa, el 6502 segueix confiant en l'Arduino per subministrar-li un programa i un pols de rellotge perquè funcioni.

És un pas més enllà que quan el vaig instal·lar a la taula de pa.

Aquesta vegada no he utilitzat el 74HC373, sinó el més complex 6522 per bloquejar les sortides de dades. A més, el 6522 té dos ports d'E / S.

Tinc la intenció de portar aquest projecte més enllà instal·lant algun SRAM o una EEPROM.

Recomanat: