reg、wire与logic的区别
文章目錄
- 一、wire
- 二、logic
- 三、logic
- 四、總結
一、wire
wire類型設計時表示導線結構,它不存儲狀態,只能負責傳遞驅動級的輸出。wire型數據常用來表示用以assign關鍵字指定的組合邏輯信號。Verilog程序模塊中輸入、輸出信號類型默認時自定義為wire型。wire型信號可以用做任何方程式的輸入,也可以用做“assign”語句或者實例原件的輸出。
<font color=#999AAA >wire [n-1:0] my_wire0,my_wire1,...,my_wirem-1; //定義了m條總線,每條線位寬為n。 wire my_wire= A & B; //assign組合邏輯,定義了一個輸出信號mysignal0,A、B兩個輸入驅動。二、logic
reg類型設計用于表示存儲結構,它內部存儲狀態,并在時鐘沿到來或異步信號改變等條件觸發時改變內部狀態。reg類型數據需要使用過程賦值(procedural assignment),即賦值定義在always、initial、task或function語法塊中。reg類型數據默認初始值為不定值x。reg雖然是寄存器類型,但也可能被綜合工具綜合為組合邏輯。
reg類型通常用于always模塊中的指定信號,always塊中每個被賦值的信號必須是reg類型,輸入信號不做要求。
三、logic
logic類型是在reg類型基礎上進行改進,使得它除了作為一個寄存器變量外,還可以被連續賦值、門單元和模塊所驅動。任何使用wire線網類型的地方都可以使用logic,但是logic類型不能有多個結構性的驅動。
wire定義時賦值是連續賦值,而logic定義時賦值只是賦初值,并且賦初值是不能被綜合的。
四、總結
所以總結Verilog wire和reg的區別:
wire表示導線結構,reg表示存儲結構。
wire使用assign賦值,reg賦值定義在always、initial、task或function代碼塊中。
wire賦值綜合成組合邏輯,reg可能綜合成時序邏輯,也可能綜合成組合邏輯。
所以總結SystemVerilog logic的使用方法:
單驅動時logic可完全替代reg和wire,除了Evan提到的賦初值問題。
多驅動時,如inout類型端口,使用wire。
總結
以上是生活随笔為你收集整理的reg、wire与logic的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 博客模块设计
- 下一篇: 2018至2021年新春挡电影票房分析