使用上升沿和下降沿的邊緣,我一個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;
當我改變了兩個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之外的觸發器。 –