2017-02-28 44 views
0

所以我明白,如果我們在時鐘進程中分配一個信號或輸出,以確定分配發生在下降沿,換句話說,當一個進程暫停時,但爲什麼在仿真過程中信號或輸出在上升沿期間被分配的時鐘? 作爲一個例子,我有以下代碼:仿真是否總是在時鐘邊緣顯示信號/輸出分配?

if(rising_edge(clk)) then 
    if(one_second_counter = "10111110101111000001111111") 
     one_second_counter <= (others=> '0'); 
    else 
     one_second_counter <= one_second_counter + 1; -- 
end if; 

我重視的仿真波形: waveform

回答

0

所以我明白,如果我們分配在分配發生在一個時鐘時的信號或輸出在下降沿,換句話說,當一個進程暫停時...

這是不正確的。當滿足過程的靈敏度條件時,分配發生。在你的例子中,這是rising_edge(clk) - 時鐘的上升沿。

+0

只要隱式條件最後一條語句等待語句對發生敏感('等待sensitivity_list;'),就會恢復具有敏感性列表的進程。外部if語句只允許在條件評估爲TRUE時在這裏的clk上升沿執行順序語句。 IEEE Std 1076-2008 IEEE標準VHDL語言參考手冊11.3過程語句,10.2等待語句,10.8 if語句,10.5信號分配語句/ 10.5.2簡單信號分配和16.8.4信號邊沿檢測。它顯示了提供VHDL片段的危險。 – user1155120