The 20c: aprender es un placer

The 20c: aprender es un placer

Siempre pensé que aprender es un placer, y una de las cosas que siempre me apasionaron de chico fueron las computadoras, en especial la Commodore 64. Siempre quise aprender como funcionaba pero, indefectiblemente, cada vez que leía un libro y llegaba hasta el sistema binario, el hexadecimal o cómo direccionar memoria se me complicaba tanto que dejaba todo a mis, por entonces, tiernos 9 años.

Ya de grande me hice la pregunta «¿cómo es que una computadora recibe una instrucción para hacer algo?», es decir, cómo puede ser que un programa de software se transforme en impulsos eléctricos que hagan que algo físico realice una cuenta o escriba algo en una pantalla.

Como no podía encontrar en el mercado una computadora que fuera lo suficientemente sencilla, flexible y modular para poder contestar esas preguntas fue que creé la 20c. La 20c no es solo la máquina, es un esquema de aprendizaje que consiste en hardware, artículos y videos para poder aprender sobre arquitectura de computadoras. El mismo es OpenSource para que cualquier persona pueda crearse sus propios módulos, modificarlos y de esta forma aprender en profundidad.

En los artículos está el marco teórico para la arquitectura en general y cada uno de sus componentes, acá vemos cosas como para qué sirve cada patita de los integrados (el famoso pinout), cuál es la arquitectura interna de registros que tienen y qué funciones realiza cada uno.

En los videos desarrollamos los experimentos para cada parte de la computadora. Podemos, por ejemplo, usar dos modelos de CPU diferentes, conectarlos a un analizador de protocolos, algunos leds u otros dispositivos, y mostrar cómo se lee de las memorias RAM y ROM paso a paso, comparando eléctricamente qué pasa en el hardware en simultáneo con lo que sucede a la vez en el programa que creamos.

Ahora bien, el hardware consiste en módulos intercambiables que reflejan fielmente cada parte de la arquitectura de una computadora. Tenemos módulos para todas las partes de la arquitectura que repasamos, y para cada parte tenemos varias alternativas para poder combinar y analizar diferentes integrados. El mismo posee tres características fundacionales:

  • Arquitectura simple
  • Hardware modular y OpenSource
  • Amigable para realizar experimentos

Elegí una arquitectura muy simple que está basada en los procesadores de la familia del 6502 de MOS Technologies, usada en computadoras como la Commodore 64, la Apple II y la Atari 2600. Es modular ya que cree un módulo por cada chip que vamos a usar para que sea fácil identificar la función de cada uno de ellos. Es OpenSource para que cualquiera pueda fabricarlo y modificarlo mientras aprende, y se incluye en el github de OsoLabs todos los archivos gerber y programas necesarios para fabricar la 20c y hacerla funcionar. Además, es fácil realizar experimentos, ya que cada módulo es un cuadrado de 16×16 cm., ideal para poner una placa de breadboard (que mide 16 cm.) y es la que usamos para realizar experimentos simples.

LAS PLACAS

Para realizar cada función elegí un sola placa PCB. De esta forma, es mucho más fácil entender el concepto y funcionamiento de cada parte de la computadora. A continuación, vamos a analizar qué placas están disponibles.

La placa CPU 6502 permite conectar un procesador 6502 en sus versiones originales de MOS Technology o en implementaciones modernas como la de WDC. Esta va a ser el corazón de la 20c y quien dirija los buses de direccionamiento. La placa de CLOCK nos da 3 relojes distintos para sincronizar los diferentes integrados de nuestra 20c. Un reloj paso a paso que se avanza presionando un botón, un reloj por pulsos regulares cuya velocidad se regula con un potenciómetro y un reloj fijo de 1Mhz.

La ROM es una placa dual que puede usarse tanto como ROM o como RAM, pero no ambas en simultáneo. Si la usamos como ROM utilizamos el chip EEPROM AT28c256, el cual nos da 32Kb. En esta ROM vamos a guardar todos los programas que queremos que ejecute nuestra 20c, y podemos grabar nuestra EEPROM con el programa que deseemos. Si la usamos como RAM utilizamos el chip HM62256B el cual nos da 32Kb. En esta RAM vamos a tener el stack de nuestra computadora y todas las variables que usen nuestros programas.

La placa GLUE LOGIC permite interpretar los bits que reciben en el address bus y, a partir de cuatro chips lógicos, conectarse con el bus de expansión para activar los pines de chip select de los integrados cuando el procesador pone una dirección específica en el address bus. Los cuatro chips lógicos son: NAND 74HC00, AND 74HC08, NOT 74HC04 y OR 74HC32. A la placa VIA 6522 se puede conectar un chip de entrada/salida VIA 6522, ya sea en sus versiones originales de MOS Technologies o en versiones más modernas. Este nos da 16 puertos de input o output y manejo de interrupciones entre periféricos y el CPU.

La placa I/O LCD se conecta a una placa VIA 6522 y nos da un dispositivo de output LCD de 4 líneas y 20 caracteres donde vamos a poder mostrar cualquier mensaje que queramos desde nuestra 20c. También tenemos 5 botones como input dispuestos en forma de cruz como si fueran 4 cursores y un botón de disparo. Finalmente, también tiene un header extra que nos da 5 inputs para conectar comandos externos como ser el BREADPAD y el BREADSTICK y conexión para el pin de RESET de nuestro procesador. La placa BUS permite extender la cantidad de placas que componen a la 20c, teniendo 4 líneas de headers completos para ADDRESS, DATA y EXPANSION BUS, lo que nos permite conectar varias placas BUS en forma simultánea.

La placa CPU 6510 plus permite conectar un procesador 6510 en su versión original de MOS Technology, el mismo que se utilizaba en la Commodore 64. La placa CPU 6507 plus permite conectar un procesador 6507 en su versión original de MOS Technology o en alguna más moderna. Es el mismo que se utilizaba en la Atari 2600 o VCS.

En la placa CIA 6526 se puede conectar un chip de entrada/salida CIA 6526 en sus versiones originales de MOS Technologies. Este nos da 16 puertos de input o output y manejo de interrupciones entre periféricos y el CPU, además de un timer. La placa BUS INPUT SELECT permite seleccionar qué input queremos para cualquiera de los bits de nuestros buses de ADDRESS, DATA o EXPANSION. La misma usa resistencias pull up y es muy útil a la hora de probar datos que queremos en los buses, sin tener que codear un programa en Assembler.

Para unir las placas de la 20c podemos usar cables dupont o los CONNECTORS, los cuáles son de 4 capas y tienen ya las distancias entre headers calculadas, dando una conexión más fácil, simple y con toda la superficie del conector reduciendo ruidos ya que una de las 4 capas es todo GROUND. Vienen en 3 sabores:

  • CONNECTOR SHORT: conecta ADDRESS y DATA BUS
  • CONNECTOR EXTENDED: conecta ADDRESS, DATA y EXPANSION BUS
  • CONNECTOR PLUS: conecta ADDRESS, DATA y EXPANSION BUS, y además cuenta con 16 dip switches para el EXPANSION BUS por si queremos rutear de forma diferente las conexiones; podríamos, por ejemplo, el pin 5 de una placa conectarlo al 9 de otra

La placa de ADDRESS DATA DISPLAY nos muestra qué información tenemos en los buses da ADDRESS y DATA. Esta información la muestra tanto en forma hexadecimal usando displays de 7 segmentos, como en binario utilizando Bar Leds ordenados de bit más significativo a menos significativo. Se incluye un Led de OPCODE que se enciende cada vez que en el bus de datos hay una instrucción, tomando la señal del pin de SYNC del 6502.

BREADSTICK y BREADPAD

Tanto el joystick BREADSTICK como el pad BREADPAD permiten conectarse a un header, como ser el de la placa I/O LCD, ya que poseen como cable conectores dupont. Tienen también un pin de conexión de reset, 4 direcciones, botón de disparo y luces.

DUINO PROTOCOL ANALYZER

El DUINO PROTOCOL ANALYZER nos permite analizar lo que sucede dentro de los buses de la 20c. Esta placa se conecta a un Arduino Mega y mediante un sencillo programa nos permite analizar:

  • Contenido de los buses de ADDRESS, DATA y EXPANSION, en binario y hexadecimal
  • Si la computadora se encuentra en un ciclo de RESET
  • Qué dirección de memoria esta leyendo/escribiendo
  • A qué chip de la computadora se está dirigiendo
  • Si es una lectura o una escritura
  • Si está buscando una instrucción y cuál es esta, desensamblando el código en el DATA BUS y dándonos el equivalente en Assembler de 6502

La placa POWER MODULE nos da 3 salidas diferentes para poder dar electricidad a nuestra 20c. La usada por la misma es la de 5v, pero tenemos otros voltajes en caso de tener que soportar chips o periféricos que así lo necesiten. Finalmente, el SOPORTE PCB impreso en 3D nos deja atornillar una placa y conectarla mediante encastres a otras para poder armar nuestra 20c con un soporte adecuado.

EMPEZAR A APRENDER EN SERIO

Desde que diseñé y empecé a usar la 20c, puedo transmitir mucho mejor el amor por las computadoras y su funcionamiento en forma detallada partiendo de principios básicos o (como me gusta decirles) primeros principios. Los invito a que se unan en este viaje de aprender en serio, leyendo los artículos, viendo los videos y creando con la 20c. A continuación les dejo algunos links donde profundizar el tema:

WEBSITE: el sitio web de OsoLabs con todos los videos y artículos

https://www.osolabs.tech

VIDEOS: todos los videos correspondientes a la serie de la 20c

https://www.osolabs.tech/the20c

CÓDIGO y DISEÑO DE PLACAS PCB: aquí todos los PCB que conforman la 20c y los programas para usarla

https://github.com/osolabstech/The20c

SERIE 6502 vs 6510: la serie de mi creación comparando el 6502 con el 6510 tanto en video como en artículos

https://www.osolabs.tech/6502vs6510

https://blog.espaciotec.com.ar/c64-a-fondo-indice/

LOS CHICHES DE LA COMMODORE: todos los artículos sobre la serie «Los Chiches de la Commodore», donde repasamos todos esos periféricos que siempre quisimos tener y ver cómo funcionan con mucho detalle

https://www.osolabs.tech/los-chiches-de-la-commodore

OTROS RECURSOS: como siempre, la serie de Ben Eater sobre el 6502 que es excelente

https://eater.net/6502

LAS PLACAS: si quieren más información sobre las placas, saber cómo funcionan y cómo construirlas pueden ir la página de la 20c en osolobs.tech donde van a encontrar videos y artículos

https://www.osolabs.tech/the20c

Autor:
Carlos Rienzi
the20c@osolabs.tech

Deja un comentario

Comentarios

Aún no hay comentarios. ¿Por qué no comienzas el debate?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *