Construye tu computadora Mínimum

Por: Oscar Toledo Esteva.       Septiembre de 2018.


En la década de los 70 del siglo XX, miles de transistores fueron encapsulados en un solo chip, y los aficionados construyeron el portento llamado computadora. La comunicación directa con el procesador fue con lenguaje máquina, 16 switches mecánicos fijaban la direccion de la memoria, la palanca hacia arriba indicaba el estado lógico 1 y la palanca hacia abajo el estado lógico 0. En el mismo panel otros 8 switches bits (dígitos binarios) introducian las instrucciones y los datos. Cuando las secuencias de instrucciones eran almacenadas en la memoria, se ejecutaba el programa y el resultado brillaba en los 24 focos instalados en el mismo panel. De esta máquina que el usuario programaba con entusiasmo, nació la computadora personal.

Fijando la dirección a: 0000 0000 0000 0000 y el dato a: 0000 0000 con los 24 switches, una instrucción sin operación (NOP) se ejecutaba y la máquina indicaba en los focos cada locación secuencial buscando otra instrucción del procesador. Hoy, por la alta integración de funciones en un microprocesador económico podemos construir una computadora más poderosa y con menos componentes, capaz de direccionar 4294967296 locaciones de memorias; mientras los anteriores no rebasaban las 65536 locaciones y no incluian ninguna memoria. El microprocesador actual contiene 4 gigabytes de locaciones segmentados que comparte con los periféricos, memorias internas o externas, y registros privados para usos especiales.

En una computadora todo sucede en su núcleo principal: el procesador digital. Los progresos de fabricación en espacio nanométrico cambió su nombre por el de microprocesador central o MPC, incluye memorias de uso temporal y de uso definitivo, reloj calendario, interfaz para memoria externa y MicroSD, interfaz serializado I2C, UART, USB, CAN, SPI, etc, y un conjunto de instrucciones para que el usuario maneje los registros internos de control y los programas.

Las herramientas para la programación facilitan el avance en los equipos electrónicos que son controlados por los microprocesadores digitales, desde el motor de la lavadora, reloj de pulsera, y otros aparatos domésticos, hasta sistemas automáticos guiados por satélites.

Foto 1. Para construir nuestra computadora necesitamos lo básico: Un microprocesador, un regulador de voltaje, un interfaz de comunicación, un circuito impreso y un switch para reiniciar nuestra máquina.

El microprocesador integra una unidad de control con una ruta de datos para procesar su conjunto de instrucciones, cada instrucción es una cifra binaria exclusiva, con una extensión de 16 bits o 32 bits.

El repertorio de instrucciones del microprocesador incluye manejo de punto flotante y procesamiento de señales análogas. Además, algunos tienen un programa depurador integrado (debug) con ordenes para escribir, leer y ejecutar programas temporales o definitivos del usuario. Cuentan con un oscilador de frecuencia interno que permite al microprocesador operar sin osciladores externos y puede ejecutar la mayoría de sus funciones.

La propiedad más llamativa de una computadora es su versatilidad, para cada necesidad concreta, el usuario especifica o cambia un programa y otra tarea es ejecutada por el microprocesador, sin quitar un tornillo de la computadora o cambiar un cable interno del circuito electrónico.

Foto 2. El microprocesador para nuestra computadora está encapsulado en un chip con 64 patas con norma LQFP-64 para montaje de superficie plana (SMD). Un punto señala la pata número uno y cada separación de patas o pin mide .5mm, por lo impráctico de esta medida se solda sobre un circuito impreso comercial donde cada pata va directo a perforaciones separadas por 2.54mm de fácil manipulación.

Fig 1. El microprocesador opera con 3.3V precisos y consume menos de 100 MA. Se conecta un módulo de 117 V.CA que suministra 5V de corriente continua al convertidor de precisión con 3.3V para el microprocesador.

Por el interés y la demanda de la tecnología microelectrónica, los circuitos impresos para determinados componentes se encuentran en sitios de venta de internet o tiendas especializadas.

Foto 3. Un circuito impreso comercial con norma LQFP-64 para ajustar y soldar con precisión cualquier componente, donde cada patita milimétrica va de acuerdo con los hoyos de conexión del circuito impreso.

Fig 2. Interfaz serializado con norma RS232C para la computadora anfitrión y el microprocesador. El switch de botón momentaneo reinicia el microprocesador desde una locación prefijada para iniciar el programa del usuario.

Fig 3. Diagrama de la computadora Minimum. Las puertas para entradas y salidas GPIO (General Purpose Input/Output) disponibles del microprocesador al inicio siempre están en el modo entrada, el modo para salida y otras funciones alternas deben ser programadas, para controlar un visualizador LCD, teclados para enviar ordenes, 4 canales de timer, lineas de control para manipular un robot, 4 motores paso a paso para CNC o impresora 3D. Otras puertas pueden interfazar un lector de memoria SD, sensores, teclado, etc.

Foto 4. Versión de la computadora Mínimum montada en un circuito impreso comercial con el regulador de voltaje y el interfaz UART con conectores para RS232C, fuente regulada de 5 voltios, display LCD, memoria SD, y botón RESET.

Foto 5. Circuito impreso de 3x3 centímetros de fabricación especial, donde están conectadas todas las patas que corresponden al diseño del microprocesador de nuestra computadora, con doble capa de pistas de conexión interconectadas al regulador de voltaje, y el interfaz RS232, incluye islas de conexión para futuros componentes como: condensadores de acoplo, resistencias y bobinas contra ruidos eléctricos, diodo para batería y cristal de cuarzo para el reloj calendario, cristal de cuarzo para el microprocesador con la precisión necesaria para el interfaz USB.

Foto 6. Computador Mínimum con su regulador de voltaje e interface RS232. Integrados en el mismo circuito impreso.

Foto 7. Nuestra laptop equipada con un conector USB o DB9 232C es el anfitrión de la computadora Minimum y del curso anual de la Familia Toledo "Construye y programa tu computadora". Un software de creación propia comunica las ordenes y las instrucciones de los programas, para depurar, listar y ejecutar instrucciones de multiples proyectos como: mecatrónica, almacenaje de memoria SD, programas educativos, autoaprendizaje, calculadora científica, comunicación inalambrica, sensores, etc. O grabar un programa piloto en la memoria flash del microprocesador de una tarea definitiva.

Fig 4. Conexión de un LED para ser controlado por la computadora Mínimum.

La primera tarea de Mínimum es tratar con el depurador interno, para programar y ejecutar el programa que enciende el LED. El depurador o debug está incluido dentro del microprocesador, cada fabricante instala un programa con normas diferentes de comunicación, algunos los nombran bootloader o ISP (In-System-Programming). En particular, Mínimum tiene un depurador con 12 ordenes: para escribir en la memoria, lectura de la memoria, ejecutar el programa guardado del usuario, examinar y listar las ordenes incluidas, además de borrar y programar la memoria flash de 1,048,576 bytes, que inicia en la dirección 0800:0000 hexadecimal.

El microprocesador incluye seis UART (Universal Asynchronous Receiver And Transmitter), en una comunicación con el debug este examina cada UART hasta seleccionar el que está activado con la computadora anfitrión, y desconecta todos los periféricos restantes de comunicación. La computadora anfitrión previamente ha enviado la clave 7F hexadecimal para activar Mínimum, mientras el debug sincroniza la velocidad en baudios del UART anfitrión, cuando el procesador establece la conexión, en forma automática emite la clave 79 hexadecimal, como señal de reconocimiento para la computadora anfitrión, indicando que el enlace está establecido y el procesador preparado para recibir ordenes del anfitrión.

El depurador utiliza la W para enviar la orden de escritura (Write), pide al usuario teclear la dirección de la locación donde comienza el volcado de los datos e instrucciones y escribir el programa correspondiente. La orden G es para Ir (Go) a ejecutar en la dirección indicada el programa correspondiente. El volcado del programa inicia con dos datos de 32 bits para fijar los espacios de la memoria del microprocesador, seis instrucciones para activar las puertas del periférico C (GPIOC), dos instrucciones para activar el encendido del LED y una instrucción para detener el programa.

Programa con lenguaje ensamblador para encender el LED

Primeramente, se envia la orden W para iniciar el volcado de las claves para encender el LED y por último se envía la orden G para activar las claves del microprocesador.

W 20010000 = W (Write) Orden del depurador interno y 20010000 (dirección del inicio del programa)
        Dirección       Clave máquina   Nemónico                Comentario

        2001:0000       00 C0 01 20     Datos de 32 bits que fijan los
        2001:0004       09 00 01 20     espacios de la memoria del MPC
        2001:0008       43 F6 00 00     MOVW R0,#3800           ; Registro 0 = 0000:3800 con 16 bits
        2001:000C       C4 F2 02 00     MOVT R0,#4002           ; Registro 0 = 4002:3800 con 32 bits
        2001:0010       04 21           MOVS R1,#04             ; Se habilitan las puertas C (GPIOC)
        2001:0012       01 63           STR R1,[R0,#30]         ; Puerta C activada
        2001:0014       20 F4 40 50     BIC R0,R0,#3000         ; Registro 0 = 4002:0800 para puertas C
        2001:0018       01 21           MOVS R1,#01             ; Clave 01 = Salida solo para la puerta PC0
        2001:001A       01 60           STR R1,[R0]             ; Puerta PC0 activada como salida
        2000:001C       F2 E7           B 2001:001C             ; Programa detenido
G 20010000 = G (Go) Orden del depurador interno y 20010000 (dirección del inicio del programa)

Una vez enviada la orden G con 20010000, el programa enciende el LED. Oprimiendo el botón del RESET el programa se interrumpe y el LED se apaga.

La lógica del programa habilita los 16 bits de la puerta C y activa únicamente como salida la puerta C0 (PC0) que corresponde a la pata 8 del microprocesador. Una vez activada la función de salida para PC0, esta puerta transmite por omisión la lógica 0, equivalente al polo eléctrico negativo de los 3.3V positivos. Un LED con una resistencia de 330 ohmios consume poca carga para la pata del microprocesador. Al programa se le pueden agregar otras instrucciones para intervalos de retardos y el apagado del LED para producir un parpadeo continuo. Volviendo a las primeras computadoras, el primer dato de 32 bits estaría escrito de la siguiente manera para operar 32 apagadores de palancas:
        0000 0000 1100 0000 0000 0000 0001 0010 0000
¡Mi laptop solo tiene conector USB y no RS232C! No hay problema, coloque en el circuito impreso un cristal de cuarzo de 8 MHZ y dos condensadores para que el microprocesador tenga una precisión de 20 PPM (Partes por millones) que necesita el interfaz USB. También se puede usar un convertidor de USB a UART RS232C.

Fig 5. Circuitos adicionales para mejorar la computadora Minimum.

Para los aficionados a las tarjetas comerciales les será fácil programar Mínimum, aunque a los novatos les puede tomar semanas antes de establecer una conexión y programar el primer ejemplo con lenguaje máquina. Afortunadamente, la computadora no se quemará con una mala programación. La instrucción para los nuevos conocimientos es un proceso comunicativo y complejo, pocos científicos pueden elaborar ejemplos didácticos de los nuevos componentes, para adoptar o rechazar materiales para diseños de larga duración. De momento, se trabaja con Mínimum, mientra se prueba en laboratorio a su sucesor con más ventajas para estudiantes del dominio de las ciencias de la computación. Científicos que honran su trabajo evolucionan de los creadores que comenzaron hace cientos de años, continúan en la búsqueda de un procesador del pensamiento humano, pueden proponer y decantar la historia de los materiales y su transformación, así como la mecánica evolucionó a los relevadores eléctricos, bulbos a transistores y actualmente el circuito integrado, capaz de proyectar sus respuestas en el televisor. Para algunas personas esto puede ser un proceso vocacional que felizmente les permitirá estar en el ambiente relacionado con las mentes brillantes.

Bibliografía: