Spartan 3E スターター キット用の pong ゲーム vhdl コードを書いています。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;
しかし、このコードを使用すると、キーボードの Q キーを離した後でも、up キーは常に '1' HIGH のままになります。Qボタンを押したままにして離すまでアップ信号をハイのままにしておき、その後アップ信号を「0」に戻す必要があります。基本的に、キーボードのキーを通常のボタンのように機能させたいと思っています。押したままにすると、HIGH 信号を出す必要があり、離すと、LOW 信号を出す必要があります。