2014-04-10 89 views
0

我正在嘗試使用VHDL設計一個交通燈控制器,我正在用Altera EPM240T100C5編程,並使用自定義擴展板來顯示交通信號燈。最慢的時鐘電路板上設置仍然較快,比我想,我需要寫一個我一樣這麼一個時鐘分頻器:VHDL時鐘分頻器在板上工作但仿真失敗

LIBRARY ieee; 
USE ieee.std_logic_1164.all; 

entity clockdivider is 
    port 
    (
     clkin : in std_logic; 
     dividedclk : out std_logic 
    ); 
end clockdivider; 

architecture divider of clockdivider is 

signal J : std_logic; 
signal K : std_logic; 


begin 
J <= '1'; 
K <= '1'; 


process(clkin) 
variable tempdividedclk : std_logic; 
begin 
if (rising_edge(clkin)) then 
    tempdividedclk := (NOT(tempdividedclk) AND J) OR (tempdividedclk AND (NOT(K))); 
end if; 
    dividedclk <= '0'; 
    dividedclk <= tempdividedclk; 
end process; 

END divider; 

這將運行在板上,但在模擬器(精細的ModelSim )「dividedclk」輸出無法初始化任何東西。我想知道是否有人知道爲什麼?

回答

5

在模擬開始時,「tempdividedclk」被初始化爲「單元化」。 當時鍾邊緣出現時,tempdividedclk將被分配給(not(U)and 1)或(U and 0),這是「未定義」。要正確模擬,tempdividedclk必須通過重置或僅在仿真級別進行初始化。它可以在硅片上找到,因爲「U」狀態可以是1或0.

+3

在此過程中,可以爲tempdivideclk的變量聲明提供默認值'0'或'1'。 'variable tempdividedclk:std_logic:='0';' – user1155120

相關問題