Projektuję klawiaturę w VHDL. Wszystko działa dobrze po naciśnięciu tylko jednego klawisza. Skanuję każdą kolumnę w poszukiwaniu naciśnięcia klawisza w maszynie stanów i kiedy żaden klawisz nie jest wciśnięty, co jest warunkiem, pin4pin6pin7pin2 = "0000"że przełączam się do następnego stanu w celu skanowania następnej kolumny. W ten sposób mogę ustawić kolumny pin3pin1pin5sekwencyjnie "001", "010"a "100".
Podczas skanowania pin3pin1pin5jak "001"i wtedy pin4pin6pin7pin2jest "0100"po prostu wciśnięte „9”. Deklaruję w VHDL pin4pin6pin7pin2jako pin3pin1pin5porty wejściowe i wyjściowe. Kiedy naciskam 6 i 9 w tym samym czasie pin6i pin7są high. Pierwszy naciśnięty klawisz jest czytany, drugi jest ignorowany. Kiedy naciskam 3 i 7 w tym samym czasie, pierwszy naciśnięty z kilkoma ms przed wygraną i pierwszy klawisz jest czytany, drugi klawisz jest ignorowany pin2i tak pin4jest high.
Oto trudna część. Kiedy naciskam 4 i 6 w tym samym czasie, oczekuję, że pin7tak będzie, highale staje się lowi pin4pin6pin7pin2 = "0000", czego nie rozumiem, jak i dlaczego. Ponieważ "0000"jest wykrywany jako brak naciśnięcia klawisza, automat stanowy przeskakuje ze stanu do stanu. Przytrzymując 4 i 6, jeśli ktoś popycha i opuszcza 4 kilka razy, jest wykrywany jako 6 wciśnięty kilka razy, co jest dużym błędem . Byłbym zadowolony, jeśli możesz mi pomóc w debugowaniu tego!
To samo dzieje się z „1” i „2”, to samo z „7” i „8” tylko dla klawiszy w tym samym rzędzie. Ponieważ jest to projekt ciągły, nie mogę umieścić mojego kodu VHDL online :( Byłbym szczęśliwy, gdybyś mógł dać mi wskazówki, jak to rozwiązać!

Poniżej nie przesyłam mojego kodu do tablicy, żaden kod nie jest uruchomiony. Po Pin5podłączeniu do uziemienia, pojedyncze naciśnięcie przycisku 1,2,4,5,7,8, *, 0 nie włącza Pin3diody LED, ale jeśli naciśniesz 6, a następnie 4 w tym samym czasie, Pin3dioda LED jest włączona, a Pin7dioda nadal świeci, ale gdy mój kod działa, tak się nie dzieje. Może połączyłem coś źle i na szczęście Pin7jest włączone, nie wiem ...

Poniżej znajdują się schematy płytki klawiatury:


