2014-03-25 101 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

所以你可以声明一个线,并不断地分配给它在同一行? –