2015-10-20 68 views
-1

我有以下剪斷VHDL代碼:VHDL處理分派不起作用

signal state_last_pushbutton     : std_logic;  

process (clk_clk) 
begin 
    if rising_edge(clk_clk) then 
     userleds_external_connection_export(0) <= '0'; 
    else 
     userleds_external_connection_export(0) <= '1'; 
    end if; 

    state_last_pushbutton <= pushbuttons_external_connection_export(0); 

end process; 

問:

爲什麼信號state_last_pushbutton從來沒有得到pushbuttons_external_connection_export(0)的價值?在模擬中,它的值始終爲'U'。

感謝

+0

還有什麼驅動信號? –

+0

您的代碼在ModelSim DE 10.4c中適用於我。你不是在說pushbuttons_external_connection_export(0)的值,但是信號也被設置爲'U'的可能性是什麼? – pc3e

回答

0

好像你正試圖寫一個時鐘的過程,在這種情況下,你應該寫這樣的事:

signal state_last_pushbutton : std_logic;  

process (clk_clk) 
begin 
    if rising_edge(clk_clk) then 
     state_last_pushbutton <= pushbuttons_external_connection_export(0); 
    end if; 
end process; 

這將更新state_last_pushbutton存儲在寄存器中的值或在時鐘的每個上升沿上發出信號pushbuttons_external_connection_export(0)

您是否檢查過pushbuttons_external_connection_export(0)實際設置爲某個已知的值,並且您的時鐘運行正常?

+0

好的,但** pushbuttons_external_connection_export(0)**需要根據clk邊緣設置(請參閱我的示例代碼) – Norick

+0

請嘗試解釋你正在嘗試做什麼。你是否需要在上升沿設置爲低電平,在下降沿設置爲高電平?很難理解你的代碼,因爲它顯然是被竊聽的。 – anderswb

+0

** state_last_pushbutton **從** pushbuttons_external_connection_export(0)獲取值; **取決於時鐘沿(0或1) – Norick