Construye tu computadora Mínimum.

Parte 2: Diagrama esquemático.

Por: Oscar Toledo Esteva.       Septiembre de 2018.


La computadora Mínimum está orientada al campo educativo, control de mecanismos, manipular algoritmos con el repertorio de instrucciones del microprocesador, activar las puertas de entradas, salidas o analógicas para monitorizar el tiempo y el medio ambiente por medio de instrumentos de laboratorio, manejar las señales de otros dispositivos para diseñar productos industriales o desarrollar nuevas tareas en el area de la ingeniería y la ciencia. Para crear Mínimum con pocos componentes en una dimension de 3x3 centímetros, se emplearon varias computadoras de diseño propio, para comprobar cada etapa del circuito, la fabricación del circuito impreso, comunicación con el lenguaje ensamblador, programas para ilustrar el uso de cada periférico interno del microprocesador, instrumentos para medir los intervalos de temporización, creación del software para cumplir los protocolos de grabación del MicroSD. UART, I2C, etc, grabación de datos en la memoria flash interna, y el programa de enlace para el interface con el microprocesador.

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

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. Los rangos altos y bajos 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 representan 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 para procesar en Mínimum es con grupos de bits, las computadoras no usan directamente cifras decimales, octales, hexadecimales, claves ASCII, UUEncode, pero nosotros si.

Fig 4. Diagrama de la computadora Minimum. Las patas de las puertas para entradas y salidas GPIO (General Purpose Input/Output) disponibles del microprocesador al inicio siempre están en el modo para entrada, el modo para salida y otras funciones alternas deben ser programadas, para controlar visualizadores LCD, canales de timer, lineas de control para manipular periféricos, motores paso a paso, CNC, impresoras 3D, robots, drones, teléfonos y automóviles. Otras puertas pueden interfazar lectores de memoria SD, sensores, teclados, etc.
Foto 4. La computadora Mínimum montada en dos circuitos impresos comerciales con el regulador de voltaje, conectores para el interfaz UART, la fuente regulada de 5 voltios, display LCD, memoria SD, y botón RESET.
Foto 5. Circuito impreso de 3x3 centímetros exclusivo para Mínimum, con doble capa de pistas conectadas a los componentes del diseño del microprocesador de nuestra computadora, con regulador de voltaje e interfaz RS232, incluye islas de conexión para otros componentes como: condensadores de acoplo, resistencias e inductores contra ruidos eléctricos, diodo para batería, cristales de cuarzo para el reloj calendario y el microprocesador con la precisión que exige el interfaz USB.

Manejo de puertas

Cada pata del microprocesador corresponde a una puerta programable para diferentes funciones multiplexadas, los perífericos integrados requieren estas patas para realizar su tarea, y puede ser un lujo usar cada puerta para interfazar una memoria externa de 2 megabytes en paralelo que ocuparía 40 patas del microprocesador, concientes de esto, los fabricantes de microprocesador incluyen la memoria en su producto.

Las lineas de las puertas de entrada y salida se conocen como GPIO (General Purpose Input/Output), cada grupo de 16 puertas corresponde a una letra, por ejemplo: GPIOA (0) indica que es el GPIO del grupo A señalando la puerta 0 (0-15). Cada puerta puede manejar un bit de dato en una conexión en paralelo, o miles de bits en una comunicación serializada. Hay 10 registros para operar los grupos de puertas y fijar los parámetros de cada función.

Registros para manejo de puertas

MODER           Fija la función de la puerta para transmitir o recibir datos
OTYPER          Convierte la puerta en niveles eléctricos Open Colector o Push Pull
OSPEEDR         Fija la velocidad mínima o máxima de trabajo de cada puerta
PUPDR           Fija un estado lógica 0 o 1 a cada puerta
IDR             Dato de lectura del exterior
ODR             Dato de la escritura al exterior
BSPR            Fija y borra los bits de la puerta
LCKR            Fija el candado de la puerta
AFRL            16 bits bajos de la función alterna (AF0-AF15)
AFRH            16 bits altos de la funciòn alterna (AF0-AF15)

Al reiniciar el microprocesador la mayoría de los registros de las puertas contienen ceros, por ejemplo:

Al reinicio del microprocesador MODER es igual a 00

MODER   00      Modo como entrada de la puerta
        01      Modo como salida de la puerta
        10      Modo para una función alterna
        11      Modo para uso análogo de la puerta

El registro MODER (Mode Register) usa dos bits para fijar la función de cada puerta, el bit 0 y el bit 1 es donde se coloca la clave del GPIOC puerta 0, cada grupo de puertas tiene una dirección para colocar la clave de cada registro. La dirección del registro MODER de GPIOC (0) es 4002:0800 y hexadecimal = 32 bits. Al reinicio esta dirección contiene ceros.

4002:0800 = MODER o 4002:0800 = 0000 0000 hexadecimal

Vista del contenido de MODER y sus funciones

Clave de la función MODER       Bit 31 30 29 28 ... 3  2  1  0

                                    0  0  0  0  ... 0  0  0  0  =  Modo entrada

Puerta                               15    14         1     0

Lenguaje ensamblador

Un modo de implementar funciones en un microprocesador es escribir los algoritmos en lenguaje ensamblador, tiende a resultar ventajoso por la ejecución rápida y eficiente aunque la optimización con ensamblador es un trabajo paciente y extiende el tiempo para concluir el desarrollo. La otra alternativa es usar lenguaje C o C++, por la escritura y mantenimiento fácil, es sencillo implementarlo en otras máquinas o procesadores, pero los compiladores para lenguajes de alto nivel como el C no son amistosos. El compilador puede trasladar el lenguaje escrito a microclaves poco óptimas, con errores de redondeo o programas dificiles de leer que alejan al usuario del lenguaje original del microprocesador. Es como si se dialogara con un nativo diidxazá en idioma inglés y el traductor-compilador lo comunicara en otro idioma.

El iniciado en lenguaje ensamblador gradualmente aprende por repeticiones al operar las instrucciones de los microprocesadores, y descubre que hay otra manera de aplicarlos en los algoritmos clásicos, a la luz de la necesidad de encontrar una mejor solución al procesamiento digital. Si realmente se busca rapidez u optimizar un programa, hay que bajar hasta el nivel del lenguaje máquina del procesador.

 

Artículo anterior Artículo anterior Siguiente artículo Siguiente articulo