私はFPGAで50MHzのクロックを使用しており、5秒のタイマーを作ろうとしています。 cnt_tの下に5 x 50MHz(x "0EE6B280" - > 250,000,000)に達した後、time_tick_32を1にしてcnt_tを< = x "00000000";にします。以下のコードは、15秒タイマーVHDL
signal cnt_t : STD_LOGIC_VECTOR(31 DOWNTO 0) := x"00000000";
signal time_tick : STD_LOGIC:= '0' ;
signal time_tick_32 : STD_LOGIC_VECTOR(31 DOWNTO 0):= x"00000000";
process (clk_50) IS
begin
if falling_edge(clk_50) then
cnt_t <= cnt_t + '1';
end if;
if (cnt_t = x"0EE6B280") then --if 5 seconds
time_tick <= '1';
cnt_t <= x"00000000";
time_tick_32(0)<=time_tick;
else
time_tick <= '0';
time_tick_32(0)<=time_tick;
end if;
end process;
わからないが、しかし、あなたはあなたの番号は、条件内の文字列と比較するにしてもよろしいですか? – Gogol
@Gogol 'x" .... "は16進数のリテラルです。したがって、(文字)文字列との比較ではありません。 – Paebbels
完全なコードを表示してください。ここにいくつかのヒントがあります:1. 'cnt_t'の型を' unsigned'または 'natural'に変更します。 2. 32ビットは必要ありません。 3.マジックナンバー=>整数値を使用しないでください。 (unsigned型は整数型と比較できます) – Paebbels