[Icestudio][Periféricos] Lectura de un teclado matricial 4x4

132 views
Skip to first unread message

Obijuan

unread,
Oct 12, 2018, 2:18:32 PM10/12/18
to FPGAwars: explorando el lado libre
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

Ángel Millán

unread,
Oct 12, 2018, 3:54:38 PM10/12/18
to FPGAwars: explorando el lado libre
Al intentar abrir los archivos de IceStudio me da "Formato de archivo no válido"


Juan Gonzalez Gomez

unread,
Oct 12, 2018, 4:57:32 PM10/12/18
to FPGA-WARS: explorando el lado libre
Hola Angel,

Tienes que pinchar en raw para bajarte el fichero, seguramente te has bajado la página html

El enlace directo es este:


Saludos, Obijuan




El vie., 12 oct. 2018 21:54, Ángel Millán <angelm...@gmail.com> escribió:
Al intentar abrir los archivos de IceStudio me da "Formato de archivo no válido"


--
Has recibido este mensaje porque estás suscrito al grupo "FPGAwars: explorando el lado libre" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a fpga-wars-explorando-el...@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a fpga-wars-explora...@googlegroups.com.
Visita este grupo en https://groups.google.com/group/fpga-wars-explorando-el-lado-libre.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/fpga-wars-explorando-el-lado-libre/2f157dd9-464f-428e-8794-fce7f94fe930%40googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

Democrito

unread,
Oct 12, 2018, 6:00:12 PM10/12/18
to FPGAwars: explorando el lado libre

raw.png

Jesús Arroyo

unread,
Oct 13, 2018, 5:34:33 AM10/13/18
to FPGAwars: explorando el lado libre
Brutal Juan!!

Es un placer ver el partido que le sacas a Icestudio!

 :D

Ángel Millán

unread,
Oct 13, 2018, 6:07:29 AM10/13/18
to FPGAwars: explorando el lado libre
Todo correcto. Ya me funciona. 
Gracias!


El viernes, 12 de octubre de 2018, 20:18:32 (UTC+2), Obijuan escribió:

Obijuan

unread,
Oct 14, 2018, 7:55:40 AM10/14/18
to FPGAwars: explorando el lado libre
He hecho una mini-cutre calcualdora, que sólo suma números de 1 dígito, para probar el teclado

Aquí está el vídeo en youtube:


y esta es la foto del montaje





He añadido sonido a las teclas, para tener feedback auditivo de las pulsaciones. El circuito en Icestudio es este:


El ejemplo lo he dejado en este repositorio:


La verad es que el teclado es muy adictivo. Y hacer este tipo de ejemplos es muy útil para practicar el pensamiento hardware: cómo resolver problemas pensando en hardware.  Este pensamiento es básico para desarrollar la capacidad de hacer circuitos avanzados con lenguajes HDL. La clave no es tanto el lenguaje, sino el saber pensar en hardware. Luego lo describes usando un lenguaje u otro


Saludos, Obijuan



El viernes, 12 de octubre de 2018, 20:18:32 (UTC+2), Obijuan escribió:

Democrito

unread,
Oct 14, 2018, 8:29:46 AM10/14/18
to FPGAwars: explorando el lado libre
He observado el funcionamiento y me ha encantado. He estado pensando en cómo lo hubiera abordado yo y pienso que me habría salido un circuito similar, la otra posibilidad hubiera sido con registros de desplazamiento. Y aparte de la electrónica en sí, tienes la habilidad de crear pequeñas obras de arte! Al menos a mí, al ver tus circuitos me produce satisfacción visual.

Muchas gracias!

Obijuan

unread,
Oct 14, 2018, 2:44:35 PM10/14/18
to FPGAwars: explorando el lado libre
¡Gracias Demócrito!  :-)
Reply all
Reply to author
Forward
0 new messages