miércoles, 23 de noviembre de 2016

TALLER TECLADO MATRICIAL 4X4


Buenas tardes a todos

El objetivo de esta entrada, es mostrar la aplicación de un tema muy conocido en la electrónica digital, como lo es el teclado matricial de 4x4, interactuando con el lenguaje VHDL de programación de FPGA, ya que es la misma nuestro medio de procesamiento y visualización.

A continuación se explicara las especificaciones, del ejercicio propuesto.

ESPECIFICACIONES

El propósito es conectar el teclado matricial de 4x4 al puerto PMOD JA de la tarjeta NEXYS 4. Cada vez que se presione una tecla, su valor se mostrara en el diaplay de 7 segmentos (D7S) numero 0, el ultimo visto desde la derecha del conjunto de displays de la FPGA. tal como se muestra en la siguiente ilustración.


Desarrollo

1.     Como primer paso del desarrollo es importante recordar cómo es la configuración y el algoritmo funcional del teclado matricial. Se debe tener en cuenta que al oprimir una tecla del teclado, lo que se hace es poner en corto la posición de una fila con una columna, como se ilustra en la gráfica 1.


Por las columnas siempre hay un 1 y por las filas ingresa un 0, de acuerdo a lo anterior, al presionar la tecla con posición c1f2, se está haciendo rotar un cero hasta dicha posición desde la fila 2.

Una vez explicado lo anterior, vamos a mostrar el diagrama de flujo del teclado.



Ahora tenemos que considerar la secuencia que debe llegar al display 7 segmentos de la FPGA,  proveniente del teclado



Secuencia de encendido de los segmentos del display
numero
g
f
e
d
c
b
a
# 1
1
1
1
1
0
0
1
# 2
0
1
0
0
1
0
0
# 3
0
1
1
0
0
0
0
# 4
0
0
1
1
0
0
1
# 5
0
0
1
0
0
1
0
# 6
0
0
0
0
0
1
1
# 7
1
1
1
1
0
0
0
# 8
0
0
0
0
0
0
0
# 9
0
0
1
1
0
0
0
# 0
1
0
0
0
0
0
0

MODELO MATEMÁTICO DEL TECLADO MATRICIAL 4X4 


TECLA = 4 X Fi + Cj

TECLA= tecla oprimida en binario (#9 = 1001)
Fi= número de fila escaneado

Cj= número de columna donde se encontró la tecla

F3
F2
F1
C3
C2
C1
C0
1
0
0
0
1
1
1






Esta tabla, muestra como está construido el vector, con el que se programa en la FPGA, la posición de la tecla oprimida para este caso. 

con el objetivo de hacer un poco mas fácil su comprensión del tema explorado, vamos a incluir un listado de errores que durante el desarrollo fuimos encontrando y a los que fácilmente usted podría llegar. 

DIAGRAMA DE ESTADOS






ahora procedemos a adjuntar, el codigo descriptivo de VHDL  realizado para el funcionamiento del teclado.
en la primera imagen, se muestra la estructuración de la entidad declarando las entradas y salidas



en la arquitectura  se declaran las señales y constantes en forma de vector, correspondientes a las columnas y filas del teclado.



en la siguiente imagen, se ve la descripción para el inicio del funcionamiento.


en el camino de datos, se incluye el process el cual diseñael case que debe ejecutar el programa.











para finalizar, mostramos la implementacion del teclado matricial, con la FPGA, funcionando correctamente.





1. pensar que VHDL es un lenguaje de programación, tal como lo es c++, c, etc. VHDL es un lenguaje de descripción de hardware, que ejecuta todas las instrucciones dadas, en bloque, es decir al mismo tiempo. en nuestro caso, modelamos la descripción del lenguaje del teclado en arduino y tratamos de incluirlo en VHDL y no fue posible.

2. durante la descripcion en VHDL, no se ha tenido claridad sobre la estructura y que lleva cada bloque, es decir como incluir variables, señales de reloj, ciclos de espera etc. en nuestro caso nos toco, investigar mas sobre el lenguaje VHDL ya que las bases impartidas en le curso no fueron suficientes.

3.  no tener en cuenta que la FPGA trabaja a tal altas velocidades, que si no se incluyen ciclos de espera adecuados, no se podra visualizar en los displays lo que se quiere ver. 

4.  otro error de hardware que nos paso, fue no fijar bien las conexiones del teclado (cableado), con las entradas de la FPGA, pues una mala conexion lleva a que no sea cierta la informacion en los displays, nos sucedio y en los displays se evidenciaba, todos los segmentos activados al mismo tiempo y con el efecto de intermitencia, pero cuando moviamos los cables, se estabilizaba la señal y se podia observar claramente el numero. 

bibliografia

libro
el arte de programar sistemas digitales VHDL