Estou projetando um teclado em VHDL. Tudo funciona bem quando apenas uma tecla é pressionada. Estou digitalizando cada coluna para pressionar uma tecla em uma máquina de estado e quando nenhuma tecla é pressionada, que é a condição que pin4pin6pin7pin2 = "0000"eu alterno para o próximo estado para digitalizar a próxima coluna. Assim, defino as colunas pin3pin1pin5sequencialmente para "001", "010"e "100".
Durante a digitalização de pin3pin1pin5como "001"e se pin4pin6pin7pin2é "0100", em seguida, simplesmente "9" é pressionado. Declaro em VHDL pin4pin6pin7pin2como pin3pin1pin5portas de entrada e saída. Quando eu pressiono 6 e 9 ao mesmo tempo pin6e pin7são high. A primeira tecla pressionada é lida, a segunda é ignorada. Quando pressiono 3 e 7 ao mesmo tempo, o primeiro pressiona com alguns ms antes de vencer e a primeira tecla é lida, a segunda tecla é ignorada pin2e o pin4é high.
Aqui está a parte complicada. Quando pressiono 4 e 6 ao mesmo tempo, espero pin7ser, highmas ele se torna lowe pin4pin6pin7pin2 = "0000", o que não entendo como e por quê. Como "0000"é detectada como uma tecla não pressionada, a máquina de estado pula de estado para estado. Enquanto segura 4 e 6, se alguém empurra e sai 4 várias vezes, é detectado como 6 pressionado várias vezes, o que é um grande erro . Ficaria feliz se você puder me ajudar a depurar isso!
O mesmo acontece com "1" e "2", o mesmo com "7" e "8" apenas para as chaves na mesma linha. Como este é um projeto em andamento, não posso colocar meu código VHDL on-line :( Ficaria feliz se você pudesse me dar dicas para superar isso!

Abaixo, não estou carregando meu código no quadro, nenhum código está sendo executado. Ao conectar Pin5ao terra, uma única pressão de 1,2,4,5,7,8, *, 0 não Pin3acende o LED, mas se eu estiver pressionando 6 e 4 ao mesmo tempo, o Pin3LED está aceso e o Pin7LED ainda está aceso, mas quando meu código está sendo executado, isso não acontece. Talvez eu tenha conectado algo errado e, felizmente, Pin7esteja ligado, eu não sei ...

Abaixo está o esquema da placa do teclado:


