Estoy diseñando un teclado en VHDL. Todo funciona bien cuando se presiona una sola tecla. Estoy escaneando cada columna para presionar una tecla en una máquina de estado y cuando no se presiona ninguna tecla, esa es la condición pin4pin6pin7pin2 = "0000"
que cambio al siguiente estado para escanear la siguiente columna. Por lo tanto, establezco las columnas pin3pin1pin5
secuencialmente en "001"
, "010"
y "100"
.
Mientras escanea pin3pin1pin5
como "001"
y si pin4pin6pin7pin2
es "0100"
, simplemente se presiona "9". Declaro en VHDL pin4pin6pin7pin2
como pin3pin1pin5
puertos de entrada y salida. Cuando presiono 6 y 9 al mismo tiempo pin6
y pin7
son high
. Se lee la primera tecla presionada, se ignora la segunda. Cuando presiono 3 y 7 al mismo tiempo, el primero presiona con unos pocos ms antes de que gane y la primera tecla se lee, la segunda tecla se ignora, pin2
y pin4
son high
.
He aquí la parte complicada. Cuando presiono 4 y 6 al mismo tiempo, espero pin7
que sea, high
pero se convierte en low
y pin4pin6pin7pin2 = "0000"
, lo que no entiendo cómo y por qué. Como "0000"
se detecta como una tecla sin presionar, la máquina de estado salta de estado a estado. Mientras mantiene presionado 4 y 6 si uno empuja y deja 4 varias veces, se detecta que 6 presionó varias veces, lo cual es un gran error . ¡Me alegraría si me pueden ayudar a depurar esto!
Lo mismo sucede con "1" y "2", lo mismo con "7" y "8" solo para las teclas en la misma fila. Dado que este es un proyecto en curso, no puedo poner mi código VHDL en línea :( ¡Me gustaría que me dieras consejos para superar esto!
A continuación, no estoy cargando mi código en el tablero, no se está ejecutando ningún código. Conectando Pin5
a tierra, una sola pulsación en 1,2,4,5,7,8, *, 0 no enciende el Pin3
LED, pero si estoy presionando 6 y luego 4 al mismo tiempo, el Pin3
LED está encendido y el Pin7
LED sigue encendido, pero cuando mi código se está ejecutando, esto no sucede. Tal vez conecté algo mal y por suerte Pin7
está encendido, no sé ...
A continuación se muestran los esquemas de la placa del teclado: