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 pin3pin1pin5secuencialmente en "001", "010"y "100".
Mientras escanea pin3pin1pin5como "001"y si pin4pin6pin7pin2es "0100", simplemente se presiona "9". Declaro en VHDL pin4pin6pin7pin2como pin3pin1pin5puertos de entrada y salida. Cuando presiono 6 y 9 al mismo tiempo pin6y pin7son 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, pin2y pin4son high.
He aquí la parte complicada. Cuando presiono 4 y 6 al mismo tiempo, espero pin7que sea, highpero se convierte en lowy 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 Pin5a tierra, una sola pulsación en 1,2,4,5,7,8, *, 0 no enciende el Pin3LED, pero si estoy presionando 6 y luego 4 al mismo tiempo, el Pin3LED está encendido y el Pin7LED sigue encendido, pero cuando mi código se está ejecutando, esto no sucede. Tal vez conecté algo mal y por suerte Pin7está encendido, no sé ...

A continuación se muestran los esquemas de la placa del teclado:


