verilog有關wire與reg型別的一道題

時間 2022-01-14 12:40:06

1樓:匿名使用者

簡單:cin是input,只能是wire型別;

cout是output,可以是wire型別,也可以說reg型別。

c3是test內部連線到cin上的訊號,由於激勵的載入,因而可以說wire,也可以說reg型別。

c5是test內部直接連線到cout上的訊號,只能是wire型別。

2樓:

wire:線性訊號變數

reg為暫存器變數

input a,b,cin; 可推出 cin(wire)

output sum,cout; 可推出 cout(wire/reg)

module fadd(a,b,cin,sum,cout);呼叫如下:

c1->a,c2->b,c3->cin,c4->sum,c5->count

fadd m(c1,c2,c3,c4,c5);

可推出:c3為input c5 為output

c3(wire) c5(wire)

又因為 為內部呼叫 所以c3可以為:reg變數

綜上:cin(wire) cout(wire/reg) c3(wire/reg) c5(wire)

也請其他高人指點下

verilog變數reg和wire問題

3樓:匿名使用者

c3是reg型,你這個主函式是個testbench,子函式a,b,cin在testbench裡面對應的測試訊號是reg型,輸出sum,cout是wire型,你的答案是錯的,reg c1,c2,c3 ; wire c4,c5;

4樓:匿名使用者

verilog裡一般不宣告輸出型別的話 預設是wire型的如果你想在輸出處寄存一下:比如使用always語句,則必須宣告為reg型別

wire是線網,就是相當於實際中的連線線,你想assign的話就是直接連線,就是用wire型,他的值是隨時變化的。比如你想寄存一下,讓他在時鐘邊沿才變化就需要reg型別了

你的問題應該是主要討論下wire型和reg型的應用區別吧另外,團idc網上有許多產品**,便宜有口碑

5樓:長安小豆

輸入埠可以由wire/reg驅動,但輸入埠只能是wire;輸出埠可以使wire/reg型別,輸出埠只能驅動wire。

1.a,b,cin是輸入,只能是wire型的。

2.sum、cout是輸出。如果這個加法器,裡面用閘電路搭建,用assign直接寫邏輯函式,那麼輸出就是wire型的。

如果這是個用always@(a or b orcin)寫的,其實就是只有輸入變化輸出才重新計算,那麼就是說輸入都不變化的時候是要保持之前的值的,所以需要用reg型。

3. 輸入埠a,b,cin只能是wire型,但是在電路中他們是被前端其他訊號c1,c2,c3驅動的。那麼是可以由wire或者reg訊號驅動的。

舉個例子,如果cin前面連線個開關(c3),就是wire型的,如果他連線的是乙個暫存器的輸出(例如加法器輸出為reg時的級聯),那就是reg型的。

6樓:褐雨黑桐

你只要記住always裡賦值用reg,assign裡面賦值用wire

verilog hdl中如何實現wire型資料和reg型資料的連線

7樓:風雷小草

假設 reg a; wire b;

要將a連到b,則用:

always@(*)

begin

a = b;

end要將b連到a,則用:

assign b = a;

8樓:

使用assogn 語句

求高手指教verilog中reg型和wire型在模組引用中的用法?

9樓:

模組間的連線都是用wire的

因為out已經是reg了,模組連線時就是用一根線wire把reg裡的值引出來

10樓:匿名使用者

wire型資料常用來表示用以assign關鍵字指定的組合邏輯訊號。verilog程式模組中輸入、輸出訊號型別預設時自動定義為wire型。wire型訊號可以用作任何方程式的輸入,亦可以用作"assign"語句或例項元件的輸出。

reg型資料常用來表示"always"模組內的制定訊號,常代表觸發器。通常在設計中要由always模組通過使用行為描述語句來表示邏輯關係。通過賦值語句改變暫存器儲存的值,其作用與改變觸發器儲存的值相當。

為什麼在verilog中要定義wire?

11樓:

有幾種情況變數需要定義成wire。

第一。assign 語句

例如:reg a,b;

wire and_result;

...assign and_result =a&&b;

你可以試試把wire定義成reg。綜合器會報錯。

第二。元件例化時候的輸出必須用wire

例如:wire dout;

ram u_ram

(...

.out(dout)

...);

wire按照國外的教材上面的定義:

wire為無邏輯連線。只做連線,wire本身是不帶邏輯性的,所以輸入什麼輸出就是什麼。所以你嘗試著用always語句對wire變數賦值。綜合器就會報錯。

那麼你可能會問。assign c =a&&b不是就是對wire的賦值嗎?

其實並非如此。綜合器綜合時將a&&b綜合成ab經過乙個與門。而c只是連線到與門輸出的線。正真綜合出與門的是&&。而不是c。

12樓:一諾千金丨

兩者差別很大,完全不能取消。

在verilog中,wire永遠是wire,就是相當於一條連線,用來連線電路,不能儲存資料,無驅動能力,是組合邏輯,只能在assign左側賦值,不能在always @ 中賦值;

但reg可以綜合成register,latch,甚至wire(當其只是中間變數的時候),可以用於組合邏輯或者時序邏輯,能儲存資料,有驅動能力,在always @模組表示式左側被賦值。

兩個共同具有性質:都能用於assign與always @模組表示式的右側。

13樓:

這個,wire通俗的理解就是線,難道你在設計電路的時候不需要用線將各個設計模組或者設計模組的內部訊號連線起來~????

wire 型變數與reg型變數有什麼本質區別?它們可用於什麼型別的語句中?

14樓:

1、型別不同

wire型資料常用來表示以assign關鍵字指定的組合邏輯訊號,模組的輸入輸出埠型別都預設為wire型,預設初始值是z。

reg型表示的暫存器型別,always模組內被賦值的訊號,必須定義為reg型,代表觸發器,預設初始值是x。

2、資料不同

reg型資料保持最後一次的賦值。

wire型資料需要持續的驅動。

3、應用不同

wire用在連續賦值語句assign中。

reg用於always過程賦值語句中。

15樓:抗新覺宮濤

wire

//構件之間的物理連線

wire

//構件之間的物理連線

reg//虛擬的資料儲存單元

module

fadd(a,b,cin,sum,cout)input

a,b,cin;

output

sum,cout;

......

endmodule

module

test;

......

faddm(c1,c2,c3,c4,c5)......

endmodule

16樓:匿名使用者

過程語句中使用reg型變數,連續賦值語句中使用wire型變數。希望可以幫到你!

verilog變數reg和wire問題

c3是reg型,你這個主函式是個testbench,子函式a,b,cin在testbench裡面對應的測試訊號是reg型,輸出sum,cout是wire型,你的答案是錯的,reg c1,c2,c3 wire c4,c5 verilog裡一般不宣告輸出型別的話 預設是wire型的如果你想在輸出處寄存一...

輪胎24570r16與22575r16的區別在哪

耿衍卻辭 225的代表輪胎的斷面寬度225毫米,245的代表輪胎的斷面寬度245毫米,70 75代表輪胎的扁平比,就是輪胎截面高度除以輪胎寬度的百分比,r代表的是子午線輪胎,16代表輪輞直徑為16寸。 看這輪胎型號,你的車是美系的嗎,別克最好還是安裝原車型號的,這對安全性,油耗有很大影響。245是輪...

20190r14與18565r14的輪胎區別

day嘎嘣脆丶 區別 1 前者胎寬為195mm,後者胎寬為185mm。2 前者輪胎斷面的扁平比為60 後者輪胎斷面的扁平比為65 輪胎型號含 釋 輪胎規格常用一組數字表示,前一個數字表示輪胎斷面寬度,後一個表示輪輞直徑,以英寸為單位。例如165 70r14表示胎寬165毫米,扁平率70,輪輞直徑14...