我有两个文件名为: summation.v 和 summationtest.v
summation.v 的代码在这里:
module summation(a, b, c);
input [3:0] a;
input [3:0] b;
output reg[7:0] c;
reg[3:0] anum;
reg[3:0] bnum;
always @(a) begin
anum <=a;
bnum <=b;
c = anum + bnum;
end
endmodule
summation.v的目的是从 summationtest.v 获取两个十进制输入,处理小数值,并将结果c
发送回输出,即 summationtest .v 再次。
summationtest.v 的代码如下:
module summationtest;
reg[3:0] a;
reg[3:0] b;
wire[7:0] c;
summation a1(a, b, c);
initial begin
a = 3;
b = 4;
$display("%d", c);
end
endmodule
现在程序运行时:a和b的值没有从 summationtest.v 传递到 summation.v ,因此没有赋值给{{1} }。
我是verilog的新手并且知识不足。请帮忙。 :(
答案 0 :(得分:0)
这不是模拟组合逻辑的正确方法。您的敏感度列表不完整,不应使用非阻止分配(<=
)。您应该使用$monitor
代替display
来查看所有信号更改。
这是一种更简单的加法器编码方式:
module summation(a, b, c);
input [3:0] a;
input [3:0] b;
output [7:0] c;
assign c = a + b;
endmodule
module summationtest;
reg[3:0] a;
reg[3:0] b;
wire[7:0] c;
summation a1(a, b, c);
initial begin
$monitor("%d", c);
a = 3;
b = 4;
end
endmodule