for循环还是不走啊。什么情况
时间:10-02
整理:3721RD
点击:
刚刚学verilog编了一个加法器,代码如下,仿真的时候a怎么总是在00处,不往下面走啊。
`timescale 1ns/100ps
module adder2b(output reg [1:0] C,S, input [1:0] A,B);
initial
C[0]=1'b0;
always@(A,B)
begin
#1 S[0]=A[0]^B[0]^C[0];
#1 C[1]=(A[0]&B[0])|(C[0]&(A[0]^B[0]));
#1 S[1]=A[1]^B[1]^C[1];
end
endmodule
`timescale 1ns/100ps
module adder2b_tb;
reg [1:0] a,b;
reg i;
initial
begin
#10 a[1:0]=2'b00;
b[1:0]=2'b00;
for( i=0;i<=3;i=i+1)
#10 b=b+i;
#10 a[1:0]=2'b01;
b[1:0]=2'b00;
for( i=0;i<=3;i=i+1)
#10 b=b+i;
#10 a[1:0]=2'b10;
b[1:0]=2'b00;
for( i=0;i<=3;i=i+1)
#10 b=b+i;
#10 a[1:0]=2'b11;
b[1:0]=2'b00;
for( i=0;i<=3;i=i+1)
#10 b=b+i;
end
adder2b test(.C(),.S(),.A(a),.B(b));
endmodule
`timescale 1ns/100ps
module adder2b(output reg [1:0] C,S, input [1:0] A,B);
initial
C[0]=1'b0;
always@(A,B)
begin
#1 S[0]=A[0]^B[0]^C[0];
#1 C[1]=(A[0]&B[0])|(C[0]&(A[0]^B[0]));
#1 S[1]=A[1]^B[1]^C[1];
end
endmodule
`timescale 1ns/100ps
module adder2b_tb;
reg [1:0] a,b;
reg i;
initial
begin
#10 a[1:0]=2'b00;
b[1:0]=2'b00;
for( i=0;i<=3;i=i+1)
#10 b=b+i;
#10 a[1:0]=2'b01;
b[1:0]=2'b00;
for( i=0;i<=3;i=i+1)
#10 b=b+i;
#10 a[1:0]=2'b10;
b[1:0]=2'b00;
for( i=0;i<=3;i=i+1)
#10 b=b+i;
#10 a[1:0]=2'b11;
b[1:0]=2'b00;
for( i=0;i<=3;i=i+1)
#10 b=b+i;
end
adder2b test(.C(),.S(),.A(a),.B(b));
endmodule
好吧 解决了。
