Tabla de contenido:
- Suministros
- Paso 1: el concepto
- Paso 2: requisitos
- Paso 3: armarlo
- Paso 4: Prueba del circuito
- Paso 5: siguiente paso
- Paso 6: el programa
- Paso 7: Conclusión
Video: 6502 Computadora mínima (con Arduino MEGA) Parte 1: 7 pasos
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:41
El microprocesador 6502 apareció por primera vez en 1975 y fue diseñado por un pequeño equipo dirigido por Chuck Peddle para MOS Technology. En aquel entonces se usaba en consolas de video y computadoras domésticas como Atari, Apple II, Nintendo Entertainment System, BBC Micro, Commodore VIC20 y 64. En ese momento era una de las más baratas del mercado. Nunca ha desaparecido realmente y ahora es utilizado por aficionados y profesionales para muchas aplicaciones.
La versión que estoy usando es la W65C02S6TPG-14 que está fabricada por Western Design Center y usa diez veces menos energía que la original. Es especial porque no tiene que funcionar a 1 MHz como el chip original. Puede funcionar mucho más lento o usarse en un solo paso a través de un programa e incluso aumentar hasta 14 MHz. La hoja de datos del chip explica sus capacidades. Otros chips 6502 no tienen esta capacidad y no funcionarán de esta manera. Los chips están actualmente disponibles en Ebay, así como en otras fuentes.
Suministros
Todas las piezas utilizadas están disponibles actualmente en Ebay, AliExpress y otros.
Paso 1: el concepto
Me inspiré en Ben Eater, quien ha producido una serie de videos en YouTube sobre el 6502 y muchos otros aspectos de la construcción de computadoras y circuitos. El programa fue escrito por él originalmente y he modificado esto y algunos de sus diseños para crear este Instructable. Otra persona que me inspiró fue Andrew Jacobs, que tiene una sección en GitHub donde usa un micro PIC para controlar su 6502.
Como Ben, estoy usando un Arduino MEGA para monitorear el 6502. También estoy usando el MEGA para proporcionar la señal de reloj a diferencia de Ben. En la actualidad tampoco estoy usando EEPROM ni RAM.
Paso 2: requisitos
Para construir esta "computadora", una lista de elementos es la siguiente:
1 x Arduino MEGA
1 x Centro de diseño occidental W65C02S6TPG-14
1 x 74HC00N IC (puerta NAND cuádruple de 2 entradas) o similar
1 x 74HC373N IC (pestillo transparente octal tipo D) o similar
2 tableros de pan de 830 hoyos (1 en un apuro)
Varios cables Dupont macho - macho y cables de enlace
2 x LED (utilicé azul de 5 mm, ya que puede salirse con la suya sin resistencias)
Interruptor de botón pulsador táctil momentáneo de 1 x 12 mm montado en PCB SPST o similar
1 x resistencia de 1K
2 condensadores cerámicos de 0,1 uF
1 x Marquesina de luz de agua de 8 vías LED rojo de 5 mm (como arriba) u 8 LED y resistencias
NOTA: Si obtiene el kit sin soldar, puede insertar los LED al revés para que sean cátodos comunes. Adjunto un cable de mosca (en lugar del pin) para que pueda conectarse fácilmente en otro lugar. VCC ahora se convierte en Ground. Por supuesto, puede girar los LED (en un elemento ensamblado) y volver a soldarlos, ¡pero esto es un montón de faff! Los kits están disponibles actualmente en AliExpress.
Paso 3: armarlo
Me resultó más fácil usar cables nuevos de DuPont que no se habían separado de su cinta para los buses de dirección y datos.
Conecte el pin 9 (A0) del 6502 al pin 52 del MEGA, pin 10 (A1) del 6502 al pin 50, etc.
Hasta que
Conecte el pin 25 (A15) del 6502 al pin 22 del MEGA.
16 conexiones hasta ahora.
igualmente
Conecte el pin 26 (D7) del 6502 al pin 39 del MEGA, pin 27 (D6) del 6502 al pin 41, etc.
Hasta que
Conecte el pin 33 (D0) del 6502 al pin 53 del MEGA.
8 conexiones más.
Conecte el pin 8 (VDD) a 5v en el MEGA.
Un condensador de 0.1uF conectado desde el pin 8 a Gnd de la placa de pruebas podría ser útil aquí, pero no necesario.
Conecte el pin 21 (VSS) a Gnd en el MEGA.
Los pines 2, 4, 6, 36 y 38 se pueden conectar a 5v
Conecte el pin 37 (Reloj) al pin 2 y al pin 7 del MEGA.
Conecte el pin 34 (RWB) al pin 3 del MEGA.
Conecte el pin 40 (Reset) como se muestra en el diagrama de arriba.
Paso 4: Prueba del circuito
En esta etapa, el 6502 funcionará y se podrá utilizar el programa1. Si está usando la marquesina de 8 vías (como arriba), puede insertarla directamente en la placa de pruebas y el cable de mosca conectado a tierra, o puede usar 8 LED y resistencias. Los LED mostrarán lo que hay en el bus de datos.
En esta etapa, sería bueno establecer los retrasos en el bucle () en 500 o más, para seguir lo que está sucediendo.
Debería obtener una salida similar en el Monitor serie como la anterior. Cuando se presiona Reset, el procesador pasa por 7 ciclos y luego busca el inicio del programa en las ubicaciones $ FFFC y $ FFFD. Como no hay direcciones físicas para que las lea el 6502, tenemos que proporcionarlas desde el MEGA.
En la salida anterior, el 6502 lee $ FFFC y $ FFFD y obtiene $ 00 y $ 10 (byte bajo, byte alto) que es el inicio del programa en $ 1000. El procesador entonces comienza a ejecutar el programa en la ubicación $ 1000 (como arriba). En este caso, lee $ A9 y $ 55, es decir, LDA # $ 55 (Cargue 85 en el acumulador). Nuevamente, como no hay una ubicación de memoria física, el MEGA simula lo que se lee desde el bus de datos.
$ 55 (85) da el patrón binario 01010101 y cuando se gira 1 bit a la izquierda da $ AA (170) 10101010.
El programa muestra que el procesador está funcionando correctamente pero pronto se vuelve un poco aburrido, así que pasa a la siguiente parte.
Paso 5: siguiente paso
La "pila de espaguetis" de arriba es probablemente algo así como lo que tendrás después de esta etapa.
A continuación, debe agregar los circuitos integrados 74HC373N y 74HC00N a la placa de pruebas.
Desafortunadamente, los pines del 373 no se alinean con el bus de datos, por lo que deberán conectarse con cables.
Conecte 5v al pin 20.
Conecte tierra al pin 10.
Conecte el pin 33 (D0) del 6502 al pin 3 (D0) del 74HC373N
e igualmente con los pines D1 a D7.
Q0 a Q7 son las salidas y deberán conectarse a la marquesina LED o LED y resistencias individuales.
Con el 74HC00 solo se necesitan 2 de sus puertas
Conecte 5v al pin 14.
Conecte tierra al pin 7.
Conecte el pin 17 (A8) del 6502 al pin 1 (1A) del 74HC00
Conecte el pin 25 (A15) del 6502 al pin 2 (1B) del 74HC00
Conecte el pin 34 (R / W) del 6502 al pin 5 (2B) del 74HC00
Conecte el pin 3 (1Y) del 74HC00 al pin 4 (2A) del 74HC00
Conecte el pin 6 (2Y) del 74HC00 al pin 11 (LE) del 74HC373N
Conecte el pin 11 (LE) del 74HC373N al pin 1 (OE) del 74HC373N
Puede conectar un LED azul a 1Y y tierra, así como 2Y a tierra, esto indicará cuando la puerta está activa.
Finalmente, cambie la línea en el procedimiento onClock de program1 a program2
setDataPins (programa2 [desplazamiento]);
Paso 6: el programa
El programa 6502-Monitor contiene las dos rutinas 6502 descritas anteriormente.
El programa aún está en desarrollo y está un poco desordenado.
Cuando se ejecuta program2, los retrasos en el bucle () pueden ser 50 o menos e incluso eliminarse por completo. Comentar las líneas Serial.print () también hace que el 6502 se ejecute más rápido. Desconectar el pin 1 (OE) del 373 del pin 11 (LE) produce resultados diferentes. Desconectar el pin 1 y el pin 11 del 373 de las puertas NAND le permite ver qué hay en el bus de datos en cada ciclo de reloj.
Es posible que deba conectar el equipo original a tierra en lugar de dejarlo flotando, ya que las 8 líneas de salida se desactivan si este pin sube. Cuando el pin LE es alto, los pines de salida son los mismos que las entradas. Tomando el pin LE bajo enclava las salidas, es decir, si los pines de entrada cambian, las salidas permanecen iguales.
He intentado que el programa sea lo más sencillo posible para que sea más fácil de entender.
Experimentar con los retrasos le permite seguir exactamente lo que está haciendo el 6502.
A continuación se muestran los dos programas (ambos se ejecutan en la dirección $ 1000) en 6502 Assembler:
programa1
LDA # $ 55
NOP
ROL
STA $ 1010
JMP $ 1000
El ROL rota el contenido del acumulador un bit a la izquierda, lo que significa que los $ 55 ahora se convierten en $ AA.
En código de máquina (hex): A9 55 EA 2A 8D 10 10 4C 00 10
programa2
LDA # $ 01
STA $ 8100
ADC # $ 03
STA $ 8100
JMP $ 1005
En código de máquina (hex): A9 01 8D 00 81 69 03 8D 00 81 4C 05 10
En el programa 2 ahora hay una dirección física $ 8100 que es donde se encuentra el 74HC373 en el bus de direcciones.
es decir, A15 del 6502 es 32768 ($ 8000) y A8 es 256 ($ 0100) = 33024 ($ 8100).
Entonces, cuando el 6502 escribe en $ 8100 (STA $ 8100), el R / W del 6502 es bajo y los datos en el bus de datos 6502 se bloquean cuando el 373 LE baja. Debido a la puerta NAND 74HC00, las señales se invierten.
En la impresión de pantalla anterior, la segunda escritura se incrementó en 3 (ADC # $ 03) - pasó de $ 7F a $ 82.
En realidad, se utilizarían más de 2 líneas del bus de direcciones para la ubicación específica del 373. Como esta es la única dirección física de entre los posibles 65536, demuestra cómo funciona el bus de direcciones. Puede experimentar con diferentes pines de dirección y colocarlo en una ubicación diferente. Por supuesto, deberá cambiar los operandos de STA a la nueva ubicación. p.ej. Si utilizó las líneas de dirección A15 y A9, la dirección sería $ 8200 (32768 + 512).
Paso 7: Conclusión
He intentado demostrar lo fácil que es poner en marcha un 6502.
No soy un experto en este campo, por lo que agradecería cualquier comentario o información constructiva.
Le invitamos a seguir desarrollando esto y me interesaría lo que ha hecho.
Tengo la intención de agregar una EEPROM, SRAM y un 6522 al proyecto, así como ponerlo en un tablero de tira en el futuro.
Recomendado:
6502 Computadora mínima (con Arduino MEGA) Parte 3: 7 pasos
6502 Minimal Computer (con Arduino MEGA) Parte 3: Continuando aún más, ahora he agregado un Octal Latch, 8 LED rectangulares y una matriz de resistencias de 220 Ohm a la placa principal. También hay un puente entre el pin común de la matriz y la tierra, de modo que los LED se pueden apagar. La puerta NAND 74HC00 h
Computadora mínima 6502 y 6522 (con Arduino MEGA) Parte 2: 4 pasos
6502 & 6522 Minimal Computer (con Arduino MEGA) Parte 2: Siguiendo con mi Instructable anterior, ahora puse el 6502 en una placa de banda y agregué un Adaptador de Interfaz Versátil (VIA) 6522. Nuevamente, estoy usando una versión WDC del 6522, ya que es una combinación perfecta para su 6502. No solo estos nuevos c
Almohadilla de enfriamiento para computadora portátil DIY - Impresionantes trucos de vida con ventilador de CPU - Ideas creativas - Ventilador de la computadora: 12 pasos (con imágenes)
Almohadilla de enfriamiento para computadora portátil DIY | Impresionantes trucos de vida con ventilador de CPU | Ideas creativas | Fan de la computadora: Debes ver este video hasta su final. por entender el video
Usar PSP como joystick de computadora y luego controlar su computadora con la PSP: 5 pasos (con imágenes)
Usar PSP como joystick de computadora y luego controlar tu computadora con PSP: puedes hacer muchas cosas interesantes con PSP homebrew, y en este instructivo te enseñaré cómo usar tu PSP como joystick para jugar, pero también hay un programa que le permite usar su joystick como mouse. Aquí está el mater
Cómo hacer que su computadora portátil conserve la energía de la batería con una mínima pérdida de rendimiento: 4 pasos
Cómo hacer que su computadora portátil conserve la energía de la batería con una pérdida mínima de rendimiento: ¿Quién dice que su computadora portátil tiene que sufrir un rendimiento lento para ahorrar un poco de energía? La cantidad de cambios en el rendimiento o la duración de la batería depende de la edad de su computadora portátil, la edad de la batería y otros programas y configuraciones. A continuación, presentamos algunos pasos sencillos para ayudar a aumentar