Taula de continguts:

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

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

Vídeo: Ordinador mínim 6502 (amb Arduino MEGA) Part 1: 7 passos
Vídeo: AEK: Drawing Robot Event 2024, De novembre
Anonim
Ordinador mínim 6502 (amb Arduino MEGA) primera part
Ordinador mínim 6502 (amb Arduino MEGA) primera part

El microprocessador 6502 va aparèixer per primera vegada el 1975 i va ser dissenyat per un petit equip dirigit per Chuck Peddle per a la tecnologia MOS. Aleshores es feia servir en videoconsoles i ordinadors domèstics, inclosos els Atari, Apple II, Nintendo Entertainment System, BBC Micro, Commodore VIC20 i 64. En aquell moment era un dels més barats del mercat. Mai ha desaparegut i ara l’utilitzen aficionats i professionals per a moltes aplicacions.

La versió que faig servir és el W65C02S6TPG-14, fabricat per Western Design Center i que consumeix deu vegades menys energia que l'original. És especial perquè no ha de funcionar a 1 MHz com el xip original. Pot córrer molt més lent o utilitzar-se per fer un sol pas a través d'un programa i fins i tot augmentar fins a 14 MHz. El full de dades del xip explica les seves capacitats. Altres xips 6502 no tenen aquesta capacitat i no funcionaran d'aquesta manera. Actualment, els xips estan disponibles a Ebay i a altres fonts.

Subministraments

Actualment, totes les peces utilitzades estan disponibles a Ebay, AliExpress i altres.

Pas 1: el concepte

Em vaig inspirar en Ben Eater, que ha produït una sèrie de vídeos a YouTube sobre el 6502 i molts altres aspectes de la construcció d’ordinadors i circuits. El programa l’ha escrit originalment i he modificat aquest i alguns dels seus dissenys per arribar a aquest Instructable. Una altra persona que em va inspirar va ser Andrew Jacobs, que té una secció a GitHub on utilitza un micro PIC per controlar el seu 6502.

Com Ben, faig servir un Arduino MEGA per controlar el 6502. També faig servir el MEGA per proporcionar el senyal de rellotge a diferència de Ben. En l'actualitat tampoc no faig servir EEPROM ni memòria RAM.

Pas 2: Requisits

Requisits
Requisits

Per construir aquest "ordinador", una llista d'elements és la següent:

1 x Arduino MEGA

1 x Western Design Center W65C02S6TPG-14

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

1 x 74HC373N IC (pestell transparent tipus octal D) o similar

2 taules de pa de 830 forats (1 a una mica)

Diversos cables i enllaços Dupont mascle - mascle

2 LEDs (he utilitzat 5 mm de color blau ja que podeu sortir sense resistències)

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

1 x 1K resistència

2 condensadors ceràmics de 0,1 uF

Carpa de llum d'aigua 1 x 8 vies LED vermell de 5 mm (com s'ha indicat anteriorment) o 8 LED i resistències

NOTA: Si obteniu el kit sense soldar, podeu inserir els LED de manera equivocada perquè siguin un càtode comú. Col·loqueu un cable de mosca (en lloc del pin) perquè es pugui connectar fàcilment a qualsevol altre lloc. VCC ara es converteix en terra. Per descomptat, podeu girar els LEDs (en un element muntat) i tornar-los a soldar, però això és molt eficaç. Actualment, els kits estan disponibles a AliExpress.

Pas 3: ajuntar-lo

Posant-ho en comú
Posant-ho en comú
Posant-ho en comú
Posant-ho en comú

Em va semblar més fàcil utilitzar nous cables DuPont que no s'havien separat de la seva cinta per a l'adreça i els busos de dades.

Connecteu el pin 9 (A0) del 6502 al pin 52 del MEGA, pin 10 (A1) del 6502 al pin 50 etc …

fins

Connecteu el pin 25 (A15) del 6502 al pin 22 del MEGA.

16 connexions fins ara.

igualment

Connecteu el pin 26 (D7) del 6502 al pin 39 del MEGA, pin 27 (D6) del 6502 al pin 41 etc …

fins

Connecteu el pin 33 (D0) del 6502 al pin 53 del MEGA.

8 connexions més.

Connecteu el pin 8 (VDD) a 5v al MEGA.

Un condensador de 0,1 uF connectat des del pin 8 a Gnd de la placa de pa podria ser útil aquí, però no és necessari.

Connecteu el pin 21 (VSS) a Gnd al MEGA.

Els pins 2, 4, 6, 36 i 38 es poden lligar a 5v

Connecteu el pin 37 (rellotge) al pin 2 i al pin 7 del MEGA.

Connecteu el pin 34 (RWB) al pin 3 del MEGA.

Connecteu el pin 40 (Restableix) com es mostra a l'esquema anterior.

Pas 4: provar el circuit

Prova del circuit
Prova del circuit

En aquesta etapa el 6502 funcionarà i es pot utilitzar program1. Si utilitzeu la marquesina de 8 vies (com es va esmentar anteriorment), es pot inserir directament a la placa de connexió i el cable de mosca connectat a terra, o podeu utilitzar 8 LEDs i resistències. Els LEDS mostraran el que hi ha al bus de dades.

En aquesta etapa, seria bo establir els retards en el bucle () a 500 o més, per seguir el que està passant.

Hauríeu d’obtenir una sortida similar al monitor sèrie com la de més amunt. Quan es prem Reinici, el processador passa per 7 cicles i després busca l'inici del programa a les ubicacions $ FFFC i $ FFFD. Com que no hi ha adreces físiques per llegir el 6502, les hem de proporcionar des del MEGA.

A la sortida anterior, el 6502 llegeix $ FFFC i $ FFFD i obté $ 00 i $ 10 (Low byte, High byte), que és l'inici del programa a $ 1000. A continuació, el processador comença a executar el programa a la ubicació de $ 1000 (com s'ha indicat anteriorment). En aquest cas, es llegeixen $ A9 i $ 55, és a dir, LDA # $ 55 (carregueu 85 a l’acumulador). Una vegada més, ja que no hi ha cap ubicació de memòria física, el MEGA simula el que es llegeix des del bus de dades.

55 $ (85) dóna el patró binari 01010101 i quan es gira 1 bit a l'esquerra, $ AA (170) 10101010.

El programa mostra que el processador funciona correctament, però aviat es torna una mica avorrit, seguint la part següent.

Pas 5: següent pas

Següent pas
Següent pas
Següent pas
Següent pas

La "pila d'espaguetis" anterior és probablement una cosa semblant al que tindreu després d'aquesta etapa.

A continuació, heu d'afegir els circuits integrats 74HC373N i 74HC00N a la placa de control.

Malauradament, els pins de 373 no s’alineen amb el bus de dades, de manera que caldrà connectar-los amb cables.

Connecteu 5v al pin 20.

Connecteu la terra al pin 10.

Connecteu el pin 33 (D0) del 6502 al pin 3 (D0) del 74HC373N

i també amb els passadors D1 a D7.

Les sortides de Q0 a Q7 són necessàries i hauran de connectar-se a la marquesina de LED o a LEDs i resistències individuals.

Amb el 74HC00 només es necessiten 2 de les seves portes

Connecteu 5v al pin 14.

Connecteu la terra al pin 7.

Connecteu el pin 17 (A8) del 6502 al pin 1 (1A) del 74HC00

Connecteu el pin 25 (A15) del 6502 al pin 2 (1B) del 74HC00

Connecteu el pin 34 (R / W) del 6502 al pin 5 (2B) del 74HC00

Connecteu el pin 3 (1Y) del 74HC00 al pin 4 (2A) del 74HC00

Connecteu el pin 6 (2Y) del 74HC00 al pin 11 (LE) del 74HC373N

Connecteu el pin 11 (LE) del 74HC373N al pin 1 (OE) del 74HC373N

Podeu connectar un LED blau a 1Y i a terra, així com 2Y a terra, això indicarà quan la porta està activa.

Finalment, canvieu la línia del procediment onClock de programa1 a programa2

setDataPins (programa2 [offset]);

Pas 6: el programa

El programa
El programa
El programa
El programa

El programa 6502-Monitor conté les dues rutines 6502 descrites anteriorment.

El programa encara està en desenvolupament i està una mica desordenat.

Quan s’executa program2, els retards al bucle () poden ser de 50 o menys i fins i tot es poden eliminar del tot. En comentar les línies Serial.print () també es fa que el 6502 funcioni més ràpidament. Desconnectar el pin 1 (OE) del 373 del pin 11 (LE) produeix resultats diferents. Si desconnecteu el pin 1 i el pin 11 del 373 de les portes NAND, podeu veure què hi ha al bus de dades a cada cicle de rellotge.

És possible que hagueu de lligar OE a terra en lloc de deixar-lo flotant, ja que les 8 línies de sortida estan desactivades si aquest pin augmenta. Quan el pin LE és alt, els pins de sortida són els mateixos que les entrades. Si es pren el pin LE baix, es retenen les sortides, és a dir, si canvien els pins d’entrada, les sortides es mantenen iguals.

He intentat que el programa sigui el més senzill possible per facilitar-ne la comprensió.

Experimentar amb els retards permet seguir exactament el que fa el 6502.

A continuació es mostren els dos programes (tots dos s’executen a l’adreça $ 1000) a 6502 Assembler:

programa1

LDA # 55 $

NOP

ROL

1010 $ STA

JMP 1.000 $

El ROL fa girar el contingut de l’acumulador un bit a l’esquerra, cosa que significa que ara els $ 55 es converteixen en $ AA.

Codi de màquina (hexadecimal): A9 55 EA 2A 8D 10 10 4C 00 10

programa2

LDA # $ 01

8100 $ STA

ADC # 03 $

8100 $ STA

JMP 1005 dòlars

Codi de màquina (hexadecimal): A9 01 8D 00 81 69 03 8D 00 81 4C 05 10

Al programa2 hi ha ara una adreça física de $ 8100, que és on es troba el 74HC373 al bus d’adreces.

és a dir, A15 del 6502 és 32768 (8000 dòlars) i A8 és 256 (0100 dòlars) = 33024 (8100 dòlars).

Per tant, quan el 6502 escriu a 8100 dòlars (STA 8100 dòlars), el R / W del 6502 és baix i les dades del bus de dades 6502 es bloquegen quan el 373 LE baixa. A causa de la porta 74HC00 NAND, els senyals s’inverteixen.

A la pantalla anterior, la segona escriptura ha augmentat en 3 (ADC # 03 $), passant de 7 $ a 82 $.

En realitat, s’utilitzarien més de 2 línies del bus d’adreces per a la ubicació específica del 373. Com que és l’única adreça física de la possible 65536, demostra el funcionament del bus d’adreces. Podeu experimentar amb diferents pins d'adreça i col·locar-los en una ubicació diferent. Per descomptat, haureu de canviar els operands STA a la nova ubicació. per exemple. Si utilitzeu les línies d'adreça A15 i A9, l'adreça seria de 8200 $ (32768 + 512).

Pas 7: Conclusió

Conclusió
Conclusió

He intentat demostrar el fàcil que és posar en marxa un 6502.

No sóc expert en aquest camp, així que agradaria qualsevol comentari o informació constructiva.

Us convidem a desenvolupar-ho més i m'interessaria el que hagueu fet.

Tinc la intenció d'afegir una EEPROM, SRAM i una 6522 al projecte, a més de posar-la en un tauler de tires en el futur.

Recomanat: