Taula de continguts:

Ordinador mínim 6502 (amb Arduino MEGA) Part 3: 7 passos
Ordinador mínim 6502 (amb Arduino MEGA) Part 3: 7 passos

Vídeo: Ordinador mínim 6502 (amb Arduino MEGA) Part 3: 7 passos

Vídeo: Ordinador mínim 6502 (amb Arduino MEGA) Part 3: 7 passos
Vídeo: AEK: Drawing Robot Event 2024, Juliol
Anonim
Ordinador mínim 6502 (amb Arduino MEGA) Part 3
Ordinador mínim 6502 (amb Arduino MEGA) Part 3

Avançant encara més, ara he afegit un Octal Latch, 8 LED rectangulars i una matriu de resistències de 220 Ohm a la placa principal. També hi ha un pont entre el pin comú de la matriu i el terra, de manera que es poden apagar els LED. La porta 74HC00 NAND s’ha substituït per una porta 78LS08 AND, el cablejat de la porta també s’ha modificat. La porta AND significa que el 6522 es troba ara a 6.000 dòlars en lloc de 6.000 dòlars.

També hi ha un pin per a la connexió d’un rellotge extern per accionar el 6502. Amb aquesta connexió, no és necessari que el MEGA proporcioni un senyal de rellotge. El MEGA encara controla el que passa amb el processador com abans.

He utilitzat un 74HC373 de 20 pins per al pestell perquè en tenia. Estava bé quan es trobava a la placa, però un 74HC573 és compatible amb el bus i hauria estalviat un munt de cablejat. La UCN5801A, que és un IC de 22 pins, també es podria considerar al circuit, però el cablejat serà lleugerament diferent.

El LED superior taronja superior és un indicador d’alimentació i el vermell inferior esquerre indica quan s’està produint una escriptura. Això últim serà insignificant si el tauler s’executa a velocitats més altes.

El circuit modificat és superior (amb el 74HC573).

Pas 1: Programes de demostració

Programes de demostració
Programes de demostració

Al monitor 6502 s’inclouen dos senzills programes de demostració i el seu codi desmuntat és aquí.

Aquest programa carrega 1 al registre 6502 A i l'emmagatzema al pestell. A continuació, afegeix 1 al registre A i emmagatzema al pestell. Aleshores torna als 1005 dòlars i el procés es repeteix per sempre.

* = 1000

1000 A9 01 LDA # $ 01 1002 8D 00 41 STA $ 4100 1005 69 01 ADC # $ 01 1007 8D 00 41 STA $ 4100 100A 4C 05 10 JMP $ 1005 100D. END

Aquest programa estableix primer la sortida del DDR del port B 6522. A continuació, emmagatzema 55 $ (B01010101) al port i al pestell. Aleshores, el registre A gira 1 pas a la dreta i ara conté $ AA (B10101010). Es torna a emmagatzemar al port B i al pestell. El programa torna als 1005 dòlars i continua per sempre.

* = 1000

1000 A9 FF LDA # $ FF 1002 8D 02 60 STA $ 6002 1005 A9 55 LDA # $ 55 1007 38 SEC 1008 8D 00 60 STA $ 6000 100B 8D 00 41 STA $ 4100 100E 6A ROR A 100F 8D 00 60 STA $ 6000 1012 8D 00 41 STA $ 4100 1015 4C 05 10 JMP 1005 $ 1018. END

Els ulls esmolats entre vosaltres poden notar que els LED de colors mostren un patró diferent dels verds. Això es deu al fet que el cable comú està connectat a 5v en els de colors i el comú en els de color verd està connectat a terra.

Canvieu aquesta línia de codi a programa2 o programa3.

setDataPins (programa3 [offset]);

Un assemblador i un desmuntador 6502 són eines útils per ajudar a codificar els vostres programes.

Pas 2: afegir una EEPROM

Afegir una EEPROM
Afegir una EEPROM
Afegir una EEPROM
Afegir una EEPROM
Afegir una EEPROM
Afegir una EEPROM

Per a la placa EEPROM, he utilitzat una placa de tires de 950 x 650 mm i passadors masculins de 19 mm per permetre que la placa esborri la de sota. Aquesta placa es connecta a la placa 6502 següent. L’EEPROM és un ATMEL 28C256 que té 28 pins i conté 32k x 8 bits de memòria. Això és més que adequat per als petits programes que s’utilitzen actualment.

No he fet un diagrama de circuits per a aquesta placa, però és bastant senzill com es connecta a la placa 6502 a continuació. Aquests xips EEPROM no són compatibles amb el bus, de manera que cal connectar-los als pins individuals, per tant, tots els "espaguetis verds i blancs". He resolt el problema de connexió al tauler anterior connectant les línies de dades juntes a la part inferior del tauler.

Els 14 pins d'adreces de l'EEPROM es connecten als pins adequats del costat esquerre (cables verds) i els pins d'E / S als pins de dades de la dreta (cables blancs). El pin 27 (WE) està connectat al pin 28 (5v), el pin 22 (OE) està connectat a terra i el pin 20 (CE) està connectat a una porta NAND. Les 2 entrades de la porta NAND estan connectades a A15 al tauler principal. Això vol dir que quan aquest pin augmenta, la porta NAND dóna un senyal baix al pin CE de la EEPROM que el fa actiu. Amb aquesta configuració, significa que l'EEPROM només pot ser llegida pel 6502.

Com que l'EEPROM es troba al top 32k del mapa de memòria, significa que $ FFFC i $ FFFD poden contenir l'adreça inicial del 6502 després de restablir-lo. Amb el 6522 que té les seves adreces entre $ 6000 i $ 600F i el tancament és de $ 4100, atura qualsevol conflicte de memòria.

El vector NMI ($ FFFA i $ FFFB) i el vector BRK / IRQ ($ FFFE i $ FFFF) també es podrien escriure de la mateixa manera.

Pas 3: Programació de l'EEPROM

Programació de l'EEPROM
Programació de l'EEPROM
Programació de l'EEPROM
Programació de l'EEPROM

Per emmagatzemar un programa a l’EEPROM, cal un programador. N’he fet un a partir d’un tauler de tires, un Arduino Pro Mini, un parell de 74HC595 i un sòcol ZIF. Originalment, el programador estava dissenyat per a un AT28C16 que té menys línies d’adreces que l’AT28C256, de manera que s’havia de modificar.

El diagrama del circuit mostra com connectar aquestes dues EEPROM. A la foto no queda clar que les dues fitxes 595 estiguin al revés i no com es mostra al diagrama. Els pins 1 a 7 de 595/1 s’alineen amb A1 a A7 de l’EEPROM independentment de quin s’utilitzi. Això estalvia 7 cables de connexió. La placa ara sembla una mica ajustada i això es deu al fet que originalment feia servir un sòcol DIL de 24 pins que ara s’ha substituït pel sòcol ZIF de 28 pins molt més gran.

S'inclou un programa que funciona amb el meu tauler. El programa funcionarà amb qualsevol Arduino i 595 en un circuit com es mostra. Vaig triar un 5v Pro Mini perquè és prou compacte i barat per deixar-lo a la configuració.

Pas 4: els programes EEPROM

Els programes EEPROM
Els programes EEPROM

Hi ha tres programes senzills al programador EEPROM. Per utilitzar-los, només heu de comentar la línia que voleu utilitzar.

// Llegiu des del port A del 6522

// const byte data = {0xA9, 0x00, 0x8D, 0x03, 0x60, 0xAD, 0x01, 0x60, 0x4C, 0x05, 0x90, 0x00};

El programa mostra un abocament de memòria quan ha finalitzat. La part del programa següent us proporciona un control total del que voleu escriure o esborrar, defineix $ FFFC i $ FFFD i, a continuació, mostra el contingut d'un interval determinat. Simplement descomenteu o modifiqueu els paràmetres segons vulgueu. Les adreces també es poden introduir en format decimal.

// esborraEEPROM (422, 930, 0x41); // Utilitzeu per esborrar EEPROM total o parcialment: inici, finalització, byte

Serial.println ("Programació de EEPROM"); quantitat = dades_numeriques_programa (0x1000); writeEEPROM (0x7ffc, 0x00); // Estableix $ FFFC per a 6502 writeEEPROM (0x7ffd, 0x90); // Estableix $ FFFD per a 6502 // writeEEPROM (0x1000, 0xA9); // Escriviu 1 byte de dades Serial.println ("fet"); String outline = "Escrit" + quantitat (cadena) + "bytes"; Serial.println (esquema); Serial.println ("Lectura de l'EEPROM"); printContents (0x0000, 0x112f); // Estableix l'interval per mostrar printContents (0x7ff0, 0x7fff); // Llegeix els darrers 16 bytes a EEPROM

Hi ha una sortida abreujada del programa.

Pas 5: Execució del 6502 des de l'EEPROM

Execució del 6502 Des de l'EEPROM
Execució del 6502 Des de l'EEPROM
Execució del 6502 Des de l'EEPROM
Execució del 6502 Des de l'EEPROM
Execució del 6502 Des de l'EEPROM
Execució del 6502 Des de l'EEPROM

Ara la EEPROM programada es pot inserir al seu tauler i aquest piggy torna a la placa principal 6502 que torna al MEGA. Les fotos laterals i superiors de la vista superior mostren com encaixa tot.

El 6502 ara pot llegir el vector d’inici de $ FFFC i $ FFFD (que és de 9000 $) i després saltar al programa que s’emmagatzema allà. El MEGA encara proporciona el senyal del rellotge i el seu programa ha de ser modificat per proporcionar només el senyal del rellotge i controlar el 6502. Es proporciona un programa modificat per fer-ho.

La foto en execució mostra aquest programa en execució.

9000 LDA # $ 00 A9 00

9002 STA $ 6003 8D 03 60 9005 LDA # $ FF A9 FF 9007 STA $ 6002 8D 02 60 900A LDA $ 6001 AD 01 60 900D STA $ 6000 8D 00 60 9010 EOR # $ FF 49 FF 9012 STA $ 4100 8D 00 41 9015 JMP $ 900A 4C 0A 90

Els commutadors es connecten al port A i el programa mostra el valor que està llegint al port B i al 74HC373 (que actualment queda ocult). els interruptors estan connectats a terra i els LEDs estan connectats a 5v. L'EOR # $ FF corregeix el problema del tancament i el port B que mostren diferents patrons donant la volta als bits abans d'escriure al tancament.

Pas 6: senyal horari extern

Senyal horari extern
Senyal horari extern

Si s’aplica un senyal de rellotge al pin de la part superior del tauler, el 6502 ja pot funcionar independentment del MEGA. Per descomptat, també necessita una font d’alimentació. He experimentat amb diferents rellotges i fins i tot he executat el 6502 a 1 MHz amb un oscil·lador de cristall. El MEGA no pot mantenir-se al dia amb velocitats més ràpides, de manera que s’ha d’eliminar.

També he provat la sortida d'un temporitzador 555, però això no funciona. Crec que pot ser perquè no és una ona quadrada? Quan es va connectar a una de les sortides CD4017, va accionar el 6502. Va pegar un dels kits anteriors per intentar obtenir un senyal de rellotge.

Encara estic mirant diferents mètodes per obtenir un senyal de rellotge.

Pas 7: Conclusió

He mostrat com construir circuits complexos i aconseguir que un "ordinador" molt senzill funcioni amb una quantitat mínima de peces. Per descomptat, l'ordinador no pot fer molt en l'actualitat o és probable que ho faci en el futur.

A principis dels 80, amb el meu VIC20, solia preguntar-me per la màquina fantàstica i no tenir la primera idea de com començar a muntar-ne una. Els temps han passat i la tecnologia també ho ha passat, però encara és bo tornar als aspectes bàsics i estar orgullós d’alguna cosa que heu construït des de zero.

Per desenvolupar aquest equip, tinc la intenció de posar 2k de SRAM entre $ 0000 i $ 2047 i afegir un oscil·lador d'1 MHz. Probablement afegiré alguna cosa com un CD4040 (comptador / divisor binari de 12 etapes) perquè pugui aprofitar diferents velocitats de rellotge.

Fins i tot es pot afegir una pantalla LCD per donar sortida de text en lloc de llums intermitents. També caldrà modificar el programador EEPROM per fer front als programes més grans necessaris per executar una pantalla LCD.

Tot i que el MEGA és innecessari per al funcionament del 6502, encara és útil per depurar el codi de la màquina. Com tothom sap, el codi de la màquina sempre conté errors.

Recomanat: