Verilog 延時模型


  眾所周知,Verilog提供了5中表示延遲的語句:

1 (#5) a = b;// blocking assignment with LHS··············1
2 
3 a = (#5) b;// blocking assignment with RHS··············2
4 
5 (#5) a <= b;// non-blocking assignment with LHS·········3
6 
7 a <= (#5) b;// non-blocking assignment with RHS·········4
8 
9 assign (#5) a = b;// continuous assignment with LHS·····5

  前面四個都是寫在always塊內。

 

  連續賦值沒有RHS。

 

  1.0時刻,計算右邊表達式的值,生成左邊的結果,暫存,等待5個時鍾單位,再把結果賦值給a。等待期間,b的任何變化不起作用。在tb里面常用,例如生成時鍾。不能用來模擬任何器件特性。

  2.0時刻,開始計時,除此之外什么也不做,計時到5時,右側的值等待5個時間單位賦值給左邊,等待期間,b的任何變化都會生效,只是有5個時間單位的延遲。可以用來模擬組合邏輯傳輸延遲

  3.和1沒有實質區別。

  4.右側的值等待5個時間單位賦值給左邊,用在時鍾沿觸發的always塊內就可以模擬FF傳輸延遲,C到Q端。

  5.0時刻,計算右邊表達式的值,生成左邊的結果,暫存,等待5個時鍾單位,再把結果賦值給a。等待期間,b的任何變化都生效。組合邏輯慣性延遲(電容濾波效果)。

 

  5與2的區別在於,2把所有變化都記錄下來,在5個時間單位之后賦值給左邊。但是5在右邊每次變化都會把上次暫存的值清空更新,因此5對於小於5個時鍾周期的變化不敏感。

  而為什么5能模擬慣性延遲,1卻不行呢?答案很簡單,我們只需要把實際的電路波形圖畫出來,就明白了。 

 

  可以,但永遠不要使用0延遲。

  不同仿真器的結果可能不同。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM