这个结构在 verilog 中会做什么?
z= a && (b[1:0]=0) && c
哪里
a:电线
c:[3:0] 线
z:[3:0] 线
看起来像是布尔运算和按位运算的混合?
正如 dave_59 提到的,您的代码中有语法错误。假设您的意思是
z = a && (b[1:0] == 0) && c
,则相当于 z = a && (b[1:0] == 0) && |c
。这意味着如果 z=0001
是 a
并且所有 1
位都是 b
并且 0
的至少一个位是 c
,则意味着 1
。否则z=0000
。
接下来,我创建模块及其测试平台,并打印模块的真值表。希望有用。
module stackoverflow_78202191(a, b, c, z);
input a;
input [1:0] b;
input [3:0] c;
output [3:0] z;
assign z = a && (b[1:0] == 0) && c;
endmodule
module stackoverflow_78202191_tb();
reg a;
reg [1:0] b;
reg [3:0] c;
wire [3:0] z;
stackoverflow_78202191 uut (
.a(a),
.b(b),
.c(c),
.z(z)
);
initial begin
a = 0;
repeat(4) #128 a = ~a;
end
initial begin
b = 2'b00;
repeat(8 * 2) #32 b = b + 1;
end
initial begin
c = 4'b0000;
repeat(128 * 2) #2 c = c + 1;
end
initial
begin
#1;
repeat(128 * 2) #2 $display("uut(%b, %b, %b) = %b", a, b, c, z);
$finish ;
end
endmodule