1. 程式人生 > >Modelsim模擬一些簡單問題

Modelsim模擬一些簡單問題

  1. 在學習時序邏輯的時候,我們明白暫存器賦值總有一拍的延遲但是有的時候模擬的時候會發現會沒有延遲,比如下面這段程式碼對應的modelsim模擬。

     

    原始碼程式碼如下:

    測試激勵如下:

    模擬截圖如下:

2.從模擬截圖可以看出work_flag與se_flag幾乎是同時拉高的,那麼造成這個現象的原因是什麼呢?

對程式碼的理解應該是這樣的:如果時鐘上升沿到來與se_flag == 1,那麼在下一個時鐘延到來時會讓work_flag ==1,而在我們手動給se_flag激勵的時候modelsim會認為在時鐘上升沿之前se_flag已經等於1了,雖然這個在波形中看不出來,但是我們需要明白。

3:如何解決這種問題呢?其實辦法很簡單,就是我們在激勵中儘量se_flag與時鐘上升沿錯開,即滯後一點再給激勵,具體如下。

模擬截圖如下:

4.這樣在時鐘上升沿到來時,se_flag還是0並未是1,便可以看到我們希望的理想結果。