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