Thursday, July 4, 2013

Decodificador de números en hexadecimal

En este post veremos cómo hacer un decodificador que interprete nuestras entradas de 4 dígitos en binario y las muestre en hexadecimal en un display.

El planteamiento del problema es como sigue:

  • Se necesita que 5 bits funcionen como entradas a 7 circuitos lógicos diferentes.
  • Los 7 circuitos lógicos serán los segmentos de un display.
  • El primer bit de entrada sirve para seleccionar modo de operación.
    • Cuando este bit está apagado, significa que el modo de operación es numérico. En este modo, las otras 4 entradas servirán como 4 dígitos en binario, con 16 combinaciones posibles. Estos 4 bits serán un número que se mostrará en el display como número en notación hexadecimal.
    • Cuando el bit de modo esté encendido, se mostrarán las iniciales de los miembros de tu equipo (En este caso son 3 miembros y sus iniciales son L, A y E), y el número en binario que introduzcas será el número del integrante del equipo cuya letra se mostrará.
Lo primero que hicimos fue probar los diferentes displays de los que disponíamos: XDUR14A y XDUR14C. Nos decidimos por este último pues el que tenga cátodo común para todos los segmentos hace que se ajuste más a esta práctica.

Al final de la entrada encontrarán las datasheets de estos displays.


Después, tuvimos que definir cómo podíamos hacer los circuitos lógicos sin hacer un circuito demasiado espacioso. Lo que decidimos fue programar un GAL16V8B (programable con compuertas lógicas internas) con los programas Atmel Wincupl y Wellon, y el programador de circuitos VP-290 (por cierto, para descargar el archivo de código hacer clic aquí, y para el archivo .jed hacer clic aquí), con 5 entradas y 7 salidas.


Puesto que el proceso para obtener las fórmulas es largo y tedioso, es propenso a errores. Dicho proceso toma mucho tiempo, y el programador VP-290 no lo tuvimos disponible más que en nuestra hora de clase, por lo cual, para aprovechar al máximo el tiempo, prevenir errores y llegar con el código listo para compilarse y programar nuestro circuito, lo simulamos previamente en el programa Proteus, el cual acepta los archivos .jed, exportados por Atmel Wincupl basándose en las fórmulas lógicas de nuestro código.





El resultado fue el siguiente:









Datasheet del display de cátodo común

Datasheet del display de ánodo común

Datasheet del GAL16V8B

No comments:

Post a Comment