1. 程式人生 > >【 Verilog 】暫存器資料型別(reg)與線網資料型別(wire,tri)

【 Verilog 】暫存器資料型別(reg)與線網資料型別(wire,tri)

暫存器資料型別

Verilog中規定,凡是在程式塊中被賦值的變數,都必須是暫存器型別的。(程式塊:例如always塊)

這裡未免還是會讓人產生疑惑?暫存器資料型別的變數最後一定會被綜合成暫存器嗎?

對應於實際的數位電路中,如果該程式塊描述的是時序邏輯,則該暫存器變數對應為暫存器;如果該程式塊描述的是組合邏輯,該暫存器變數對應為硬體邏輯;如果該程式塊描述的是不完全組合邏輯,那麼該暫存器變數也可以對應為鎖存器。由此可見,暫存器型別的變數不一定會綜合為暫存器。

線網資料型別

Verilog中規定,模組的input和inout埠必須是線網型別;連續賦值語句的被賦值物件必須是線網型別。對應於實際的數位電路,線網型別實際上就對應著硬體的連線,起到連線作用。

線網資料型別包括wire和tri等,wire最常見,不必多說,很多情況下直接宣告為wire即可。

至於tri其實和wire在用法上是一模一樣的,不過有時候,我們需要定義一些會被三態門驅動的硬體連線,用tri來命名會讓程式碼更具有可讀性,讓人一看就知道這根連線上會出現Z狀態,僅此而已!

至於其他的一些古怪的型別,用到了在總結吧,現在寫了用不到也是廢了!筆記內容來自於《FPGA之道》