2013-03-24 44 views
-1
module circuit_1 (a, b, c); 
input [1:0J a,b; 
output [3:0J c; 
assign c = a + b; 

如果輸入=爲2'b11和輸入B = 2'b10,的Verilog:分配和使用始終

將輸出C有什麼價值?請給出一個描述性的答案。

也好心告訴我分配和總是的功能。我有點困惑。

+0

您可以通過運行模擬來輕鬆回答自己的問題。但首先你需要使用正確的Verilog語法('J'?)。任何Verilog書籍都可以描述你需要的東西。 – toolic 2013-03-24 12:52:27

+0

這是更多[二進制數學](http://en.wikipedia.org/wiki/Binary_number#Addition)的問題。請閱讀[維基百科](http://en.wikipedia.org/wiki/Binary_number#Addition)頁面,然後用您提出的答案更新問題。 – Morgan 2013-03-25 08:12:34

+0

RE分配和總是,這裏的問答格式不適合其他問題。你可以問一個新的問題,但答案很可能是檢查[LRM - 語言參考手冊 - SystemVerilog 2012](http://standards.ieee.org/getieee/1800/download/1800-2012.pdf)特別是部分10,從第196頁開始的作業說明。 – Morgan 2013-03-25 09:07:35

回答

3
c = 4'b0101  // Output, implicitly a wire 

「分配」用於網類型聲明(電線,三棱等)根據該值驅動它們。由於導線改變值,每當在RHS改變操作數,該值被評估並分配給LHS (模擬電線)

始終 - 用於寄存器+組合邏輯。 如果它總是(@ posedge clk) - 事件posedge clk觸發always塊,並且塊內的邏輯被評估和分配。

always @(*) - 如果always塊的RHS中的某些內容發生更改,則會評估和分配該特定表達式。

想象一下,因爲它們的行爲是相同的,因此將它們分配爲導線並始終將塊作爲寄存器(現在)。

+0

對不起英語 – chitranna 2013-03-26 00:25:02

+2

'always @ *'用於'reg'類型而不是寄存器,'assign'意味着與'always @ *'相同的組合邏輯。 「always @(posedge clk)」意味着觸發器(寄存器)。 – Morgan 2013-03-26 07:40:18

+0

我的壞..我知道但它沒有解釋它 – chitranna 2013-03-26 10:30:50