Я проектирую клавиатуру в 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, я не знаю ...

Ниже приведена схема платы клавиатуры:


