你的时钟信号,在alway之前因先赋值,cin=1'b0
你的应该是对一个全加器进行仿真吧。
感觉模块也有点乱,从开始学就要养成一些好的习惯,我也是刚学,碰到问题多改改吧。会有很大收获的。
你这个问题就让我有很多收获,我把你的程序稍稍改了下。你对比看看吧,我也是个学生,可能也有不对的地方,互相学习吧。
`timescale 1ns/1ns
`include"addr3.v"
module top;
wire [3:0]a;
wire [3:0]b;
wire [3:0]sum;
wire cout;
wire cin;
addr3 add(.sum(sum),.cout(cout),.ina(a),.inb(b),.cin(cin));
add3_test add1(.a(a),.b(b),.cin(cin));
initial
begin
$monitor($time,,,"%d+%d+%b=%b%d",a,b,cin,cout,sum);
#160 $finish;
end
endmodule
module add3_test(a,b,cin);
output a,b,cin;
reg cin;
reg [3:0]a;
reg [3:0]b;
integer i,j;
initial
cin=1'b0;
always #5 cin=~cin;
initial
begin
a=0;
b=0;
for(i=1;i<16;i=i+1)
#10 a=i;
end
initial
begin
for(j=1;j<16;j=j+1)
#10 b=i;
end
endmodule |