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