に立ち下がり、立ち上がりの両エッジを使用して、私は次のようにFPGA & VHDLの初心者が..FPGA:同じプロセス
私の開発環境があるんです。
FPGA:スパルタン6 XC6SLX9
コンパイラ:ISE 14.04
シミュレータ:ISIM
私はシンプルなカウンターを作ってるんだが、私は理解できないいくつかのものがあります。
次のコードは私が書いたものです。私が期待したのは、クロックの立ち下がりエッジごとにw_countが増加し、クロックの立ち上がりエッジでw_countがN_dataに達すると0にリセットされたことでした。コンパイルプロセスには問題はなく、シミュレーションも期待通りに機能しました。しかし、本当のFPGAに適用した場合に、w_countは、各トリガのために増分されましたが、N_DATAに達したときにゼロに初期化されませんでした。..
w_state_proc : process(r_clk, reset_n_clean)
begin
if(reset_n_clean = '0') then
w_count <= 0;
elsif(r_clk'event and r_clk = '0') then
if(state = write_state and w_proc = '1') then
w_count <= w_count + 1;
end if;
elsif(r_clk'event and r_clk = '1') then
if(w_count = N_data) then
w_count <= 0;
end if;
end if;
end process w_state_proc;
私は2つのELSIFステートメントの位置を変更した場合、w_countは全く増加しませんでした..
w_state_proc : process(r_clk, reset_n_clean)
begin
if(reset_n_clean = '0') then
w_count <= 0;
elsif(r_clk'event and r_clk = '1') then
if(w_count = N_data) then
w_count <= 0;
end if;
elsif(r_clk'event and r_clk = '0') then
if(state = write_state and w_proc = '1') then
w_count <= w_count + 1;
end if;
end if;
end process w_state_proc;
私はこれらの記述は、推奨されていないことを多くのフィードバックを見ることができますが、これらの記述は、この問題を引き起こすなぜ私はを理解していない...
w_procが入力を有効にしていると思われますか? – Staszek
はい。それはfpgaの外から来るトリガーです。 –