在Verilog中何時(shí)用wire,何時(shí)用reg?
Verilog HDL中的變量可以定義為wire型和reg型,這兩種類型的變量在定義時(shí)要設(shè)置位寬,缺省為1位,變量的每一位可以取0、1、x、z,其中x代表未預(yù)置初始狀態(tài),z代表高阻狀態(tài)。
reg相當(dāng)于存儲(chǔ)單元,wire型相當(dāng)于物理連線,即reg型變量保持最后一次的賦值,而wire型變量需要持續(xù)的驅(qū)動(dòng)。
那么,在Verilog HDL中何時(shí)用wire,何時(shí)用reg型變量呢?
wire為連線,本身不帶邏輯性,所以輸入什么輸出就是什么
若變量放在begin…end內(nèi),則聲明為reg型;否則,聲明為wire型
在always塊中的變量,只能是reg型
使用wire型變量時(shí),必須搭配assign
input、output、inout聲明的變量,默認(rèn)都是wire型
若wire和reg用錯(cuò)了,編譯器會(huì)提醒,一般不用太擔(dān)心,下面再?gòu)?a target="_blank">仿真和綜合的角度解釋一下。
簡(jiǎn)單來(lái)說(shuō),硬件描述語(yǔ)言有兩種用途:仿真、綜合,對(duì)于wire和reg的理解,也可以從這兩個(gè)角度來(lái)考慮。
從仿真的角度來(lái)說(shuō),HDL語(yǔ)言面對(duì)的是編譯器,相當(dāng)于軟件思路,這時(shí):
wire對(duì)應(yīng)于連續(xù)賦值,如assign
reg對(duì)應(yīng)于過(guò)程賦值,如always塊、initial塊
從綜合的角度來(lái)說(shuō),HDL語(yǔ)言面對(duì)的是綜合器,要從電路的角度來(lái)考慮,這時(shí):
wire型的變量綜合出來(lái)一般是一根導(dǎo)線。
reg變量在always塊中有兩種情況:(1) always后的敏感表中是(a orb or c)形式的,也就是不帶時(shí)鐘邊沿的,綜合出來(lái)還是組合邏輯。(2) always后的敏感表中是(posedgeclk)形式的,也就是帶邊沿的,綜合出來(lái)一般是時(shí)序邏輯,會(huì)包含觸發(fā)器。
在設(shè)計(jì)中,一般來(lái)說(shuō)我們并不知道輸入信號(hào)是來(lái)自上一級(jí)寄存器的輸出還是組合邏輯的輸出,那么對(duì)于本級(jí)而言就是一根導(dǎo)線,也就是wire型。而輸出信號(hào)則由你自己來(lái)決定是寄存器輸出還是組合邏輯輸出,wire型和reg型都可以,但通常整個(gè)設(shè)計(jì)的外部輸出(即最頂層模塊的輸出)是寄存器輸出,這樣電路比較穩(wěn)定。
責(zé)任編輯:xj
原文標(biāo)題:在Verilog中何時(shí)用wire,何時(shí)用reg?
文章出處:【微信公眾號(hào):FPGA設(shè)計(jì)論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
-
Verilog
+關(guān)注
關(guān)注
28文章
1351瀏覽量
110100 -
Reg
+關(guān)注
關(guān)注
0文章
20瀏覽量
11486 -
Wire
+關(guān)注
關(guān)注
0文章
23瀏覽量
15880
原文標(biāo)題:在Verilog中何時(shí)用wire,何時(shí)用reg?
文章出處:【微信號(hào):gh_9d70b445f494,微信公眾號(hào):FPGA設(shè)計(jì)論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論