2014-03-25 99 views
0

我試圖實現的Verilog以下邏輯方程:Verilog的組合邏輯

A1 '* B1 + A1' * A0 '* B0 + A0' * B1 * B0

其中,A1,A0 ,B1,B0是輸入,'表示否定。這是我第一次使用Verilog進行編碼,我想看看我是否在正確的軌道上。任何幫助將非常感激。

這是我的工作了:

1 module HW7P1(A1, A0, B1, B0, O) 
2  input A1, A0, B1, B0 
3  output reg O; 
4  
5  always @(A1 or A0 or B1 or B0) 
6  begin 
7   if(!A1 && B1) begin 
8    O <= 1; 
9  end else if(!A1 && !A0 && B0) begin 
10    O <= 1; 
11  end else if(!A0 && B1 && B0) begin 
12    O <= 1; 
13  end else begin 
14    O <= 0; 
15  end 
16  end 

有我在這裏做錯了什麼?

+0

它是模擬你期望的方式嗎? – toolic

+1

如果您尚未安裝模擬器,請嘗試[EDAplayground](http://www.edaplayground.com/)。 – Morgan

+0

完美。謝謝摩根。 –

回答

1

我相信下面的連續分配等同於你的邏輯等式:

wire O = (!A1&B1) | (!A1&A0!&B0) | (!A0&B1&B0); 

您應該創建一個測試平臺,以證明這是你想要的邏輯。

+0

這會被放置在always塊中,以便更新其中一個輸入的更改嗎? –

+0

不可以,它取代了你的整個模塊。 – toolic

+0

所以你可以聲明一個線,並不斷地分配給它在同一行? –