Construye tu computadora Mínimum.

Parte 1: Inicio de las microcomputadoras.

Por: Oscar Toledo Esteva.       Septiembre de 2018.


Este curso trata del futuro inmediato, no distante para poder ignorarlo, cuyo progreso puede ser calculado con exactitud, está transformando la sociedad en todos los niveles, comenzó en el siglo XVII con paso firme, con un lento desarrollo que ahora va ganando velocidad con ímpetu creciente. Un futuro que va tomando forma, por el progreso tecnológico de vanguardia que ha dado nacimiento a una serie de conocimientos e instrumentos cuyo impacto ya percibimos.

Muchas personas creen que todas las computadoras están hechas con la misma tecnología digital, y que solo hay un diseño básico de las mismas, un sistema operativo donde ejecutar todos los programas o software. Pero las computadoras difieren enormemente unas de otras, incluso en sus diseños y estructura básica.

Una ciencia exponencial histórica

Antes de todo lo que conocemos como computadoras, la humanidad inició un largo camino de aprendizaje y descubrimientos matemáticos, hasta poder diseñar calculadoras mecánicas. La primera calculadora digital automática fue inventada en 1623 por un desconocido astrónomo alemán llamado Wilhelm Schickard (1592-1635), así lo describe en sus cartas su discípulo, el astrónomo Johannes Kepler. Otra calculadora dada a conocer públicamente la construyó unos veinte años después el filósofo francés Blaise Pascal (1592-1692), en cuyo honor fue nombrado un lenguaje de programación. Su aparato asombró a muchos, aunque solo se pudiera sumar y restar con bastante torpeza, pues sólo era un mecanismo con ruedas dentadas del cero al nueve. Con las mejoras introducidas en 1673 por el filósofo alemán Gottfried Wilhelm Von Leibniz (1646-1716), pudo multiplicar y dividir, pero algunas fallas mecánicas evitaron que se hiciera popular. El primer científico de la computación, fue Charles Babbage (1792-1871) educado como matemático, se propuso construir una computadora automática que pudiera resolver ecuaciones de diferencia e "imprimir" las respuestas. Trabajó sobre ella durante unos 20 años apoyado por el gobierno inglés, pero finalmente en 1842 renunció a la empresa de terminarla por dificultades técnicas. En 1833 su imaginación fue capturada por un nuevo esquema más elegante y más ambicioso, una máquina analítica que fue su máxima realización, y que lo mantuvo ocupado por el resto de su vida.

En 1943 con la invención de los diodos y válvulas termoiónicas mas compactas fue posible diseñar y construir la primera computadora con 1500 válvulas, los británicos la llamaron Colossus Mark 1, en esta computadora Alan Turing (1889-1951) ejecutó su algoritmo con un programa, había esperado al menos nueve años para que sus ideas saltaran del papel a una computadora que el nombró "máquina universal". Para su diseñador Tommy Flowers, fue injusto que Winston Churchill destruyera sus 8 màquinas Colossus de acuerdo a la legislación Official Secret Act, Churchill reconoció que la computadora electrónica fue utilizada exitosamente en la Segunda Guerra Mundial. La gran aventura de los hombres con vocación científica que crearon productos y transformaron nuestra sociedad, aun no ha sido descrita apropiadamente, hay varias enseñanzas en estas historias para la nueva escuela, es necesario que el público lo conozca a través de todos los medios. Si lo olvidamos y solo usufructuamos los logros, el porvenir del hombre estará en duda y pudiera ser un porvenir atroz, o gracias a la ciencia y a la abundancia puede ser maravilloso.

Al comienzo de los años 60 se pudo encapsular transistores en circuitos integrados que posteriormente ya contenìan miles de ellos, primeramente se usaron en relojes, calculadoras, videojuegos, etc. En los 70, nuevos avances en la tecnología condujeron a la fabricación del microprocesador para uso personal, que es un conjunto de circuitos integrados en un chip, ejecuta programas de acuerdo a sus instrucciones y realiza las funciones principales de una computadora dígital, cuya propiedad mas llamativa es su versatilidad, para cada necesidad concreta el usuario solo cambia el programa para otra tarea ejecutable del microprocesador, sin quitar un circuito integrado o cambiar cables del circuito electrónico, con solo cambiar los códigos del programa de un robot este realizará una nueva tarea, un robot diplomático puede ser un robot agricultor o un robot médico. Ahora todos los equipos domésticos, juguetes, instrumentos, automóviles, aviones, teclados, computadoras, celulares, etc, se construyen alrededor de un microprocesador, que básicamente contiene circuitos transistorizados que funcionan como: compuertas lógicas, procesador lógico aritmético, control del oscilador de frecuencia, memoria para escritura y lectura temporal, y una memoria para grabar desde el exterior un programa con las instrucciones del microprocesador. La unión del repertorio de instrucciones con el microprocesador fue la idea que originó la arquitectura de John von Neumann (1903-1957), cuando él construía computadoras con bulbos termoiónicos, con el tiempo se fabricaron microprocesadores con su repertorio de instrucciones integradas en el mismo chip lo que facilitó que estuvieran al alcance de todos, los microprocesadores se diseñan para operar con datos desde 1 bit hasta 64 bits, cada extensión de datos del microprocesador se nombra palabra, y Mínimum procesa cada instrucción con palabras de 32 bits.

Memoria EPROM y memoria SRAM conectadas en paralelo al microprocesador de 8 bits, el núcleo típico de las computadoras de la década de 1970, similar al circuito de la primera computadora mexicana, que usaba un conjunto de 16 memorias DRAM de un kilobyte x 1, Un kilobyte para guardar los programas y un kilobyte para manejar el sistema de video.

El mercado de las microcomputadoras comenzó en 1971, cuando la compañía japonesa Busicom utilizó un microprocesador de 4 bits para fabricar sus calculadoras, cuando los aficionados construían con circuitos integrados, controles de mecanismos, relojes, frecuencímetros, etc, todos cableados para una sola tarea, manejando pulsos binarios con circuitos flip-flop y lógicas de compuertas, en ese entonces las computadoras ocupaban un enorme espacio, y ningun aficionado podía construir una computadora personal. Al estar disponible el microprocesador de 8 bits, conectaron memorias volátiles SRAM (Static Random Access Memory) para guardar los programas temporales, y la memoria no-volatil EPROM (Erasable Programmable Read-Only-Memory) para guardar el programa operativo de todo el conjunto. A esta máquina pequeña y portentosa fue bautizada como microcomputadora. Entonces no se conocía el concepto "software", no había lenguajes de programación, compiladores, intérpretes, ensambladores, incluso editores, los programas se tenian que escribir con el idioma que entiende el microprocesador, códigos binarios de unos y ceros, que con papel y lapiz trasladaba a la base numérica octal y hexadecimal, que finalmente codificaba a datos decimales que colocaba en la memoria pulsando botones o interruptores mecánicos, hasta que pude almacenar mis programas en memorias UV EPROM 2708 que significa (Ultraviolet Light Erasable And Electrically Reprogrammable Memory), por cada corrección de mi software las colocaba al sol para borrarlas y volver a utilizarlas. La comunicación directa con el microprocesador fue con códigos máquina, desde el exterior 16 switches mecánicos fijaban la direccion binaria de la memoria, un interruptor hacia arriba era el estado lógico 1 y hacia abajo el estado lógico 0. En el mismo panel otros ocho switches eran utilizados para introducir instrucciones de 8 bits (dígitos binarios). Cuando todas las instrucciones estaban almacenadas en la memoria, el programa se ejecutaba y centelleaban los 24 focos instalados en el mismo panel. Con el RESET que fija la dirección a: 0000 0000 0000 0000 y fijando una instrucción a: 0000 0000 que significa NOP (Sin operación), se ejecutaba la orden en microsegundos, mientras la máquina indicaba con números binarios a través de 16 focos cada locación en forma secuencial, por la búsqueda de otra instrucción del microprocesador. De esta máquina que el usuario programaba con entusiasmo, nació la computadora personal.

La primera computadora mexicana, con 7 conectores para las tarjetas de circuito impreso, con un programador de memorias EPROM y una llave para decodificar claves morse.

Programación digital

Para esta enseñanza experimental se eligió un microprocesador con DSP (Digital Signal Processing), punto flotante y con entradas o salidas analógicas. Este microprocesador es ampliamente utilizado en la telefonía celular, discos duros, aparatos domésticos, computadoras, tablets, etc. Este curso se dirige a las personas con un nivel educativo básico que en poco tiempo comprenderan como los fundamentos binarios son llevados a la práctica y luego a la labor intelectual de la programación. Programar optimamente un microprocesador se deriva del caracter y la voluntad de adquirirlo, afortunadamente, hay personas con vocación que buscan calidad de vida, que con desafios ya diseñan programas de dispositivos de control hasta sistemas biológicos moleculares. La educación, como la vida, está en todas las noticias, una vez comprendido vemos que su fin divulgativo es dotar de sentido a la realidad, y nos ilustra que a través de nuestros sentimientos y pensamientos logramos la gran palanca de nuestra liberación.

El microprocesador central

En una computadora todo sucede en el núcleo central, que procesa sus señales electrónicas con números binarios, con el avance en la fabricación de circuitos integrados en un espacio nanométrico cambió su nombre por el de microprocesador central o MPC, que hoy incluye internamente memorias EEPROM (Electrically Erasable Programmable Read-Only-Memory) y SRAM, reloj calendario, convertidor de señal análogo a digital (ADC), y señal digital a análogo (DAC), interfaz para memoria externa y MicroSD, interfaz serializado I2C, UART, USB, CAN, SPI, etc, y un repertorio de instrucciones con sus registros, que el usuario usa para crear todo tipo de programas.

Actualmente en la búsqueda de la máxima velocidad y el bajo consumo de energía, están cambiando los fundamentos del diseño y la terminología del microprocesador. Por la alta integración de funciones en un microprocesador económico ya 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 tenian memorias internas. El microprocesador para construir Minimum opera con 32 bits en paralelo para colocar datos o instrucciones, los 4 gigabytes direccionan las locaciones compartidas con los periféricos, memorias internas o externas y registros privados para usos especiales.


Microprocesador central de Mínimum con sus periféricos integrados.

El progreso incesante en microelectrónica beneficia a la ciencia y enfrenta ganadores y perdedores en la competencia por ofrecer velocidad de procesos de los microprocesadores, acelerando al máximo las frecuencias de trabajo, interfaces sofisticadas para cámaras, controladores LCD TFT, criptografía y conexiones en paralelo de memorias externas, con mayor capacidad y velocidad de las memorias SRAM y FLASH.

Los lenguajes estructurados de programación facilitan la innovación rápida en el diseño de equipos electrónicos que son controlados por los microprocesadores, desde el motor de la lavadora, reloj de pulsera, teléfonos celulares, drones, aviones, automóviles, robots para cirugia médica, hasta sistemas automáticos guiados por satélites. Una evolución que no ha terminado y no creo que termine algún día.

Materiales básicos para construir Mínimum: Un microprocesador, regulador de voltaje, interfaz de comunicación, switch para reiniciar nuestra máquina y circuito impreso comercial con norma LQFP-64 para soldar con precisión el microprocesador y extensión de las pistas de los pines a hoyos de 2.54mm.

En la construcción y programación de Mínimum ampliamos los conocimientos basados en la práctica desde lo básico hasta lo mas avanzado de la microelectrónica. Las computadoras ya determinan los puestos de trabajo, que se originan en todos los campos del quehacer humano, cambios revolucionarios que surgen del talento científico y tecnológico de una investigación de vanguardia. De esta experiencia y desarrollo nacen nuevas ideas para el diseño, imprimiendo al trabajo un caracter creador, con más contenido productivo, desde el diseño de circuitos impresos por medio del microprocesador, hasta la programación optimizada que reduce en una tercera parte el tiempo del proyecto, y se puede ahorrar mas tiempo si en el proceso de fabricación se emplea una máquina-herramienta CNC controlada por motores paso a paso por un microprocesador, produciendo circuitos impresos milimétricos para montaje de superficie SMD, diseñadas para equipos electrónicos que interfazan el mundo análogo con el mundo digital. Que nadie se sienta sorprendido o atropellado por estas nuevas tecnologías y sus efectos, al participar en los nuevos conocimientos nadie quedará excluido, solo se necesitan personas con intuición para entender una sofisticada tecnología electrónica.

Mínimum es una computadora que como los demás sistemas digitales usa únicamente dos valores discretos, denominados señales digitales, cada pata del microprocesador usa dos rangos de valores, excepto para las funciones análogas, el valor alto es el uno, y el valor bajo es el cero, el voltaje de alimentación de Mínimum determina el valor alto con un voltaje que oscila entre 3.3 y 1.5 voltios, y el valor bajo entre 1 y 0.5 voltios. Estos rangos pueden tener diferentes nombres como: alto = high o 1, bajo = low o 0. 0 = falso. 1 = verídico. 0 y 1 es la asociación binaria y a cada dígito se le llama bit. Las computadoras digitales presentan su información por grupos de bits, 4 dígitos binarios es un cuarteto, 8 dígitos binarios o bits es un byte. Las instrucciones y los datos que procesa Mínimum son de 32 bits, los microprocesadores no usan directamente cifras decimales, octales, hexadecimales, claves ASCII, UUEncode, pero nosotros si. Todos los datos de texto, imágenes, numéricos, audio, etc. cuando son procesados en la computadora, se convierten a un formato con cifras binarias que maneja el microprocesador. Los dos estados del número binario se representan con unos y ceros, pero cada pata del microprocesador usa señales eléctricas, un voltaje presente es igual a un uno binario (on = encendido), su ausencia igual a cero binario (off = apagado).

Tabla de conversión numérica


La numeración binaria es un sistema en base 2, hexadecimal es un sistema en base 16 y la decimal a un entero como potencia en base 10. En la numeración octal en base 8 cada cifra son 3 dígitos binarios.

Aunque la electrónica digital maneja los dos estados; cero y uno, hay un tercer estado menos conocido llamado estado Z o triestado, que se sitúa en un umbral eléctrico o alta impedancia y significa la ausencia de los estados uno y cero binarios, como desconectando una pata del microprocesador para emitir una señal de salida. El triestado facilitó la creación de los microprocesadores y tener puertas programables al alcance de todos, permitiendo que una sola pata tenga diversas funciones, como señales de entrada, salida o análogo, y programar proyectos prácticos en pequeños espacios. Todas las patas del microprocesador inicialmente tienen la función de entradas, internamente poseen circuitos con compuertas triestado que sirven de interruptores lógicos para ser programadas como entradas o salidas de lógicas bajas o lógicas altas con cargas de resistencias o carga flotante, para recibir o transmitir señales ademas de otros parámetros eléctricos suministrados por los fabricantes.

En las primeras computadoras, el triestado era un circuito con diodos bipolares para conducir, bifurcar y desconectar el flujo de datos con los relevadores, bulbos o transistores. Ahora los microprocesadores usan compuertas lógicas triestado que conectan y desconectan señales en nanosegundos, aunque sus patas operativas operan en milisegundos, velocidad suficiente para manejar periféricos externos, y ser analizados sus estados lógicos por instrumentos multicanales sofisticados y costosos. La alternativa económica es el uso de un detector lógico para detectar en cada pata los tres estados lógicos con los pulsos de flancos positivos o negativos.


Detector lógico con punta de prueba para captura estática cero y uno, pulsos positivos, pulsos negativos y triestado.

Circuito electrónico de Mìnimum

El microprocesador de Mínimum integra una unidad de control con una ruta de datos para procesar su conjunto de instrucciones, cada instrucción es un código máquina exclusivo de 16 o 32 bits para crear programas, que incluye transferencia de datos, manipulación de datos, control del programa, manejo de punto flotante, procesamiento de señales análogas, un programa depurador integrado (debug) con ordenes para escribir, leer y ejecutar programas temporales o grabadas por el usuario. Cuando no se conecta un cristal de cuarzo u oscilador externo, se cuenta con un oscilador de frecuencia interno que permite operar y ejecutar la mayoría de sus funciones.

El microprocesador de 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 entre pines mide .5mm, por lo impráctico de esta dimensión se solda sobre un circuito impreso donde cada pata va directo a perforaciones separadas por 2.54mm de fácil manipulación.

Por el interés y la demanda en la tecnología microelectrónica, los circuitos impresos para montar los microprocesadores estàn disponibles en tiendas de componentes electrónicos y en internet.

El microprocesador opera con 3.3 voltios y consume menos de 100 miliamperes. Un módulo conectado a la red eléctrica suministra 5V de corriente continua al regulador de 3.3V para el microprocesador.

Para conocer una computadora con capacidades que desafían nuestra inteligencia primero hay que descubrir lo que hay en la estructura del núcleo del microprocesador, su hardware, firmware y su software, como manejan los algoritmos en nanosegundos, y su conversión de señales análogas al dominio digital. Minimum cumple estas funciones para una amplia area: educativa, control de mecanismos, programación de algoritmos con instrucciones del microprocesador, manejo de puertas de entradas y salidas para activar señales digitales o analógicas, para predecir el clima, cuidado del medio ambiente, construcción de instrumentos de laboratorio, manejo de señales de dispositivos, productos industriales o nuevas tareas en el area científica y tecnológica.

El propósito de crear Mínimum en solo 3x3 centímetros facilita los proyectos mecatrónicos, donde cada gramo y espacio es valorable. Al construirlo utilizamos varias computadoras e instrumentos de precisión de diseño propio, para comprobar cada etapa del circuito electrónico, se fabricó un circuito impreso de doble capa con pistas milimétricas, agregamos un enlace de comunicación con el lenguaje ensamblador, y finalmente el firmware que ilustra todos los los periféricos del microprocesador. Además de instrumentos de medición para los intervalos de temporización, al fijar los protocolos de grabación del MicroSD. UART, I2C, etc, un interface gráfico a color, grabación del firmware en la memoria flash interna, y el programa para que la computadora anfitrión se comunicara con el microprocesador de Mínimum.

Diagrama de la computadora Minimum. Con las pines de las puertas para entradas y salidas GPIO (General Purpose Input/Output) del microprocesador, al inicio siempre están en el modo para entrada, y se programan al modo para salida y otras funciones alternas, para visualizar LCD, canales de timer, lineas de control para periféricos, motores paso a paso, CNC, impresoras 3D, robots, drones, teléfonos o automóviles. Algunas puertas son exclusivas para interfazar memorias SD, USB, y otros periféricos especializados.
Circuito impreso de 3x3 centímetros de Mínimum, con pistas de doble capa para los componentes del microprocesador de la computadora, con regulador de voltaje e interfaz RS232, incluye islas de conexión para otros componentes como: condensadores contra ruidos, resistencias e inductores, diodo para batería, cristales de cuarzo para la frecuencia del reloj calendario y la frecuencia del interfaz USB del microprocesador.

Reinicio del microprocesador

Al activar una computadora y aún no hay un sistema básico de entrada y salida grabado en su memoria de inicio, su microprocesador no puede operar ninguna tarea, su pila de memoria aún no se inicia, no hay sistema interruptor, ni activado el timer o puertas de entrada y salida. Para que funcione, un circuito de retardo activa en milisegundos un pulso lógico que envía a la pata RESET del microprocesador, Mínimum usa un botón interruptor que al oprimirlo activa el reinicio (RESET), este interruptor crea un pulso lógico cero que dura unos milisegundos mientras carga un condensador alimentado por un voltaje a través de una resistencia, después retorna al nivel lógico uno, que es el estado activo de la computadora, el boton RESET ayuda al programador a corregir o interrumpir un programa, oprimiéndolo reinicia el microprocesador desde el principio para continuar desarrollando programas.

El microprocesador cuenta con un oscilador interno que inicia por omisión a 16 megaherzios (MHZ) y en pasos prefijados divide la frecuencia para cada periférico interno. El oscilador es un generador de ondas cuadradas con una frecuencia determinada de señales periódicas de estados alto y bajo, los estados bajos y altos repetitivos son los niveles cero y uno lógicos de cada ciclo de la frecuencia. Originalmente la frecuencia era llamada "ciclos por segundo" (CPS), las altas frecuencias eran kilociclos, megaciclos o gigaciclos, lo que en la actualidad se conoce como hertz, kilohertz, megahertz y gigahertz. Al escalar la frecuencia 1000,000,000,000 hz ya es un terahertz. La frecuencia se mide en unidades de hertzios, de la frecuencia de 16 millones de hertzios se obtiene un periodo del ciclo de 62.5 nanosegundos, que utilizan las instrucciones del microprocesador. Un programa adicional puede sintetizar la frecuencia de 16 MHZ para elevarla hasta 168,000,000 herzios, en esto se utilizan los registros de control del oscilador (RESET RCC_CR, RESET AND CLOCK CONTROL), la frecuencia generada se divide para la cadencia de trabajo de las puertas de entradas o salidas, y para los periféricos que va a utilizar el microprocesador.


Cada ciclo de reloj de una frecuencia de onda cuadrada consiste de unos y ceros.

 

Siguiente artículo Siguiente articulo