Hola!
Hoy, entre tutorial y tutorial, he estado frikeando con la FPGA y un teclado matricial de 4x4. He implementado un controlador para leer las teclas fácilmente. No lo tengo documentado todavía, pero os paso algunas fotos del montaje:
En este vídeo de youtube podéis ver su funcionamiento. Al apretar cada tecla se muestra su valor en el display de 7 segmentos:
Este es el circuito:
El teclado tiene 8 pines, 4 para las filas y 4 para las columnas. La tectura de las teclas se lee por columnas. En la icezum Alhambra están conectadas a los pines DD0 - DD3. Las 4 filas se conectan a los pines D0-D4. El controlador está constantemente escaneando el teclado (una línea cada 10ms, pero esto es configurable). Cuando se pulsa una tecla aparece un tic por la salida clicked del controlador, y el código de la tecla (de 4 bits) en key. En este ejemplo se captura el código en un registro, cuya salida está conectada a un display de 7-segmentos (a través del decodificador bcd-7seg)
Normalmente implemento los bloques en verilog, pero este lo he implementado por bloques. En su interior podéis ver las partes que tiene:
El ejemplo está de momento en este directorio de este repo:
Y el bloque controlador aquí:
Este es el tutorial de Luis Llamas, donde está toda la información sobre el teclado. Es muy bueno. Lo tiene implementado para Arduino. Yo he hecho lo mismo pero para la FPGA:
Más adelante lo documentaré mejor. De momento ahí está esa información por si alguien quiere ir probando :-)
¡Es super divertido! Y por supuesto, es muy fácil de adaptar a cualquier otra placa con FPGA libre: tinyFPGA, icestick, blackice...
Saludos, Obijuan