Я пишу код vhdl для игры в теннис для спартанского стартового набора 3E. Я хочу управлять игровой панелью своей клавиатурой PS2. Для этого мне нужно генерировать сигналы вверх и вниз от полученного кода клавиатуры.Как фильтровать события клавиатуры?
Вот пример кода
-- Instantiate key_board controller
my_keyobard : entity work.ps2_key(Behavioral)
port map(ps2_clk => ps2_clk, ps2_data => ps2_data, clk => clk,
data_out => data);
process(data)
begin
case data is
when X"15" => up <= '1'; -- Q key for UP
when X"1C' => down <= '1'; -- A key for DOWN
when others => up <= '0'; down <= '0';
end case;
end process;
Но если я использую этот код кнопки вверх остается «1» ВЫСОКОЕ всегда, даже после того, как relesing клавишу Q на клавиатуре. Я хочу, чтобы сигнал оставался высоким до тех пор, пока я не задержу кнопку Q, если я отпустите его, тогда сигнал вверх должен вернуться к «0». В основном я хочу, чтобы мои клавиши клавиатуры функционировали как обычные кнопки. Если я нажимаю и удерживаю, он должен давать сигнал HIGH else, если он отпущен, он должен выдавать сигнал LOW.