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 pin3pin1pin5
sekwencyjnie "001"
, "010"
a "100"
.
Podczas skanowania pin3pin1pin5
jak "001"
i wtedy pin4pin6pin7pin2
jest "0100"
po prostu wciśnięte „9”. Deklaruję w VHDL pin4pin6pin7pin2
jako pin3pin1pin5
porty wejściowe i wyjściowe. Kiedy naciskam 6 i 9 w tym samym czasie pin6
i pin7
są 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 pin2
i tak pin4
jest high
.
Oto trudna część. Kiedy naciskam 4 i 6 w tym samym czasie, oczekuję, że pin7
tak będzie, high
ale staje się low
i 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 Pin5
podłączeniu do uziemienia, pojedyncze naciśnięcie przycisku 1,2,4,5,7,8, *, 0 nie włącza Pin3
diody LED, ale jeśli naciśniesz 6, a następnie 4 w tym samym czasie, Pin3
dioda LED jest włączona, a Pin7
dioda nadal świeci, ale gdy mój kod działa, tak się nie dzieje. Może połączyłem coś źle i na szczęście Pin7
jest włączone, nie wiem ...
Poniżej znajdują się schematy płytki klawiatury: