プロジェクトに OR1200 を使用しており、FPGA ボードの 8 番目のボタンに割り込みを割り当てたいと考えています。割り込みを生成するコードは次のとおりです。
inrpt: process(CLK_I, RST_I)
begin
if RST_I = '1' then
butt_int_pul <= '0';
butt_int_tmp <= '0';
elsif rising_edge(CLK_I) then
if(DATA_I(8) = '1' and butt_int_tmp = '0') then
butt_int_pul <= '1';
else
butt_int_pul <= '0';
end if;
butt_int_tmp <= DATA_I(8);
end if;
end process inrpt;
process(CLK_I, RST_I)
begin
if RST_I = '1' then
butt_int <= '0';
elsif butt_int_pul = '1' then
butt_int <= '1';
elsif clear_int = '1' then
butt_int <= '0';
end if;
end process;
この割り込みを 1 回だけ処理する必要があるため (ボタンを押したままにすると、再度割り込みが呼び出されないようにする必要があります)、これをチェックするフラグを含めたのはそのためです ( butt_int_tmp
)。
問題は、割り込み呼び出しが安定していないことです。ボタンを押すたびに呼び出されるわけではありません。フラグを外すと動作するのですが、この場合はボタンを押している回数だけ処理されます。
私たちは何を間違っていますか?