Я проектирую клавиатуру в VHDL. Все работает нормально, когда нажата только одна клавиша. Я сканирую каждый столбец на предмет нажатия клавиши на конечном компьютере, и когда ни одна клавиша не нажимается, это условие, при котором pin4pin6pin7pin2 = "0000"
я переключаюсь в следующее состояние для сканирования следующего столбца. Таким образом, я устанавливаю столбцы pin3pin1pin5
последовательно "001"
, "010"
и "100"
.
При сканировании « pin3pin1pin5
как» "001"
и «если pin4pin6pin7pin2
есть» "0100"
просто нажимается «9». Я объявляю в VHDL pin4pin6pin7pin2
как входные и pin3pin1pin5
выходные порты. Когда я нажимаю 6 и 9 одновременно pin6
и pin7
есть high
. Первая нажатая клавиша читается, вторая игнорируется. Когда я нажимаю 3 и 7 одновременно, первый нажимается за несколько мс до выигрыша, и первая клавиша читается, вторая клавиша игнорируется pin2
и pin4
остается high
.
Вот сложная часть. Когда я нажимаю 4 и 6 одновременно, я ожидаю, что pin7
это будет, high
но это становится low
и pin4pin6pin7pin2 = "0000"
, что я не понимаю, как и почему. Поскольку "0000"
обнаруживается, что не нажата ни одна клавиша, конечный автомат переходит из состояния в состояние. Удерживая 4 и 6, если один нажимает и уходит 4 несколько раз, это определяется как нажатие 6 несколько раз, что является большой ошибкой . Я был бы рад, если вы можете помочь мне отладить это!
То же самое происходит с «1» и «2», то же самое с «7» и «8» только для ключей в одном ряду. Поскольку это постоянный проект, я не могу разместить свой VHDL-код в Интернете :( Я был бы рад, если бы вы могли дать мне советы по преодолению этого!
Ниже я не загружаю свой код на доску, код не работает. При подключении Pin5
к заземлению однократное нажатие на 1,2,4,5,7,8, *, 0 не приводит к включению Pin3
светодиода, но если я нажимаю 6, а затем 4 одновременно, Pin3
светодиод светится и Pin7
светодиод все еще горит, но когда мой код работает, этого не происходит. Может быть, я подключил что-то не так и, к счастью, включен Pin7
, я не знаю ...
Ниже приведена схема платы клавиатуры: