線網類與寄存器型區別


變量類型

verilog中有兩種變量類型。

  • 線網型:表示電路間的連線。

  • 寄存器型:verilog中一個抽象的存儲數據單元。

 凡是在always或initial語句中賦值的變量,一定是寄存器變量;凡是在assign語句中賦值的變量,一定是線網變量。

線網類型

 線網類型下又包括幾種子類型,它們具有線網的共性。

  • wire、tri:表示電路間的物理連線,tri主要用於多驅動源建模。

  • wor、trior:表示該連線具有“線或”功能。

  • wand、triand:表示該連線具有“線與”功能。

  • trireg:表示該連線具有總線保持功能。

  • tri1、tri0:表示當無驅動時,連線狀態為1(tri1)和0(tri0)。

  • supply1、supply0:分別表示電源和地信號。

     在以上描述的線網類型中,除了trieg末初始化時的值為“X”以外,其余子類型未初始化時的值均為“Z”。

    "X"與“Z”

     我們都知道,數字電路中,只有0和1,而在verilog中,增加了“x”和“Z”。

    • 當"X" 用作信號狀態時表示未知,當用作條件判斷時(在casex 或casez中)表示不關心;
    • "Z" 表示高阻狀態,也就是沒有任何驅動,通常用來對三態總線進行建模。
    • 但是在綜合工具中,或者說在實際實現的電路中,並沒有什么X值,只存在0、1和Z三種狀態。在實際電路中還可能出現亞穩態,它既不是0,也不是1,而是一種不穩定狀態,這種是要極力避免的。

     線網類型主要用在連續賦值語句中,並可以作為模塊之間的互連信號。

寄存器類型

 寄存器類型的變量在Verilog 語言中通常表示一個存儲數據的空間,在Verilog 仿真器中,寄存器類型的變量通常要占據一個仿真內存空間。

  • reg:是最常用的寄存器類型數據,可以是一位、多位或二維數組(存儲器)。

  • integer:整數型數據,存儲一個至少32 位的整數。

  • time: 時間類型,存儲一個至少64 位的時間值。

  • real 、realtime:實數和實數時間寄存器。

驅動和賦值

  • 線網是被驅動的,該值不被存儲,在任意一個仿真步進上都需要重新計算。

  • 寄存器是被賦值的,且該值將在仿真過程中被保存,直到再次對該變量進行賦值。

  • 在敘述時為了簡單起見,常將"驅動"和"賦值"統一說成賦值,但是我們一定要清楚
    其本質。

Question

這里提一個問題,verilog中的寄存器型一定對應電路中的寄存器嗎?


免責聲明!

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



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