Boletín No 48
1 de mayo 2015
CALCULADORA EGIPCIA CON CÓDIGO VHDL EN TARJETA SPARTAN 3A/3AN
Antonio Guadalupe Cruz Bautista,
Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.
,
I.T. Galván-García,
Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.
Centro de Innovación y Desarrollo Tecnológico en Cómputo I.P.N.
Abstract
El objetivo del presente trabajo es mostrar el resultado en el display de una tarjeta SPARTAN 3A/3AN de las operaciones básicas: suma, resta, multiplicación o división, en el sistema numérico egipcio. Las operaciones fueron basadas en entidades con estructura del programa Xilinx en lenguaje VHDL como la denominada UBC (Unidad Básica de Control) la cual hace uso de una máquina de estados que hacen transiciones dependiendo de las secuencias de instrucciones llamadas entradas, que se introducen por medio de un teclado PS/2 conectado a la tarjeta.
Introducción
Desde el tercer milenio A.C. los egipcios usaron un sistema de escribir los números en base diez utilizando los jeroglíficos de la figura para representar los distintos órdenes de unidades (ver Figura 1).
Figura 1. Símbolos de numeración egipcia |
Se usaban tantos de cada uno cómo fuera necesario y se podían escribir indistintamente de izquierda a derecha, al revés o de arriba abajo, cambiando la orientación de las figuras según el caso.
Para indicar la operación a realizar se introduce la instrucción en modo de comando, por ejemplo, si se desea sumar los números 3 y 5, se teclea el comando como sigue: SUM 3 5.
Para iniciar, se introduce la operación correspondiente; si se requiere una suma deberá teclearse SUM, para la resta, RES, multiplicación, MUL y división, DIV. Después de introducir la operación deseada se teclea el ESPACIO para dar fin a la cadena de operación; si se desea 0, se oprime el 0 del teclado numérico, en caso contrario se presiona 1 hasta llegar al número deseado entre 1 y 15, esto es, siendo acumulativo para la obtención de la representación del número en egipcio; nuevamente se presiona la tecla ESPACIO para finalizar la captura del primer número; por último, nuevamente se presiona 0 para el mismo número correspondiente a 0 o 1 hasta llegar al número deseado entre 1 y 15. Todos los datos se proporcionan a través del teclado PS2, el cual está conectado a la tarjeta Spartan 3A/3AN. En caso de que haya ocurrido algún error en la introducción de los datos o se desee comenzar será mediante la tecla ESCAPE.
Los 2 bits del selector representarán las siguientes operaciones: 00 suma, 01 resta, 10 multiplicación y 11 división.
En la Figura 1 se muestran los pines necesarios para la utilización del puerto PS2 con el teclado. En este caso sólo se utilizará el pin 1 que es el que manda los datos de la tecla presionada del teclado y el pin 5 que es el que proporciona la señal para el reloj interno del teclado.
Figura 1: Localización y señales del conector PS/2 |
La señal recibida por el pin 1 será el valor en binario de la tecla presionada, el valor de cada tecla estará representado por grupos de 8 bits y el valor de la tecla se muestra en la Figura 2.
Fig2: Código en hexadecimal en un teclado PS2 |
Se requiere la Unidad Aritmética que es la que se va a encargar de realizar la operación indicada por el selector. La operación será llevada a cabo con los valores de los números a y b.
Para mostrar el resultado se hará uso del LCD que trae la tarjeta, ésta tiene caracteres predeterminados para poder mostrar en el LCD, pero también se pueden personalizar hasta 8 caracteres. En la Figura 3 se muestra un ejemplo de cómo personalizar un carácter. Un carácter se forma de encender o apagar leds con una configuración de 5 columnas y 8 filas. Se introduce un 1 en los leds que se quieren activar y un 0 para los que deban desactivarse.
Figura 3: Tabla que muestra cómo se personaliza un carácter en la tarjeta Spartan 3A/3AN |
En la Figura 4, se muestra una tabla de los caracteres predeterminados que se pueden mostrar en el LCD. En la misma tabla se puede ver que los espacios para los caracteres personalizados son los correspondientes a los valores en binario del 00001000 al 00001111.
Fig 4: Tabla que muestra los caracteres válidos en el LCD de la tarjeta Spartan 3A/3AN |
Código utilizado para manejar el LCD
A continuación se muestran las partes principales del código para la implementación de la calculadora.
---------------------------------------------------------------------------------- --
Dar CLICK aquí para ver el CÓDIGO
Funcionamiento de la calculadora (ver Imagen 1 e Imagen 2).
--------------------------------------------------------------------------------------
Funcionamiento de la calculadora (ver Imagen 1 e Imagen 2). |
Imagen 1: LCD en funcionamiento con descripción de lo que representa cada sección |
Imagen 2: Resultado de la multiplicación de 15 por 15 = 225 en Númeación Egipcia |
Enlace para ver el video del funcionamiento de la calculadora: http://youtu.be/CS7WAo2BZRs
Conclusiones
El presente trabajo ha contribuido en cuanto al refuerzo de conocimientos de las aplicaciones del código VHDL, el funcionamiento de la tarjeta Spartan 3A/3AN, el uso del software Xilinx, así como la implementación de la máquina de estados, así como cultura general, acerca del sistema de numeración egipcia.
Referencias
• Spartan-3A/3AN FPGA Starter Kit Board. http://www.gta.ufrj.br/ensino/EEL480/spartan3/ug334.pdf. Consultada el 20 de junio de 2014.
• http://www.sectormatematica.cl/historia/egipcio.htm consultada el 3 de Enero de 2015