verilog调试
我不知道下面的代码有什么问题。有人能帮我调试吗verilog调试,verilog,Verilog,我不知道下面的代码有什么问题。有人能帮我调试吗 module iloop(z,a); input [31:0] a; output z; reg [4:0] i; reg s, z; initial begin s = 0; for(i=0; i<32; i=i+1) s = s | a[i]; z = !s; end endmodule 模块iloop(z,a); 输入[31:0]a; 输
module iloop(z,a);
input [31:0] a;
output z;
reg [4:0] i;
reg s, z;
initial begin
s = 0;
for(i=0; i<32; i=i+1) s = s | a[i];
z = !s;
end
endmodule
模块iloop(z,a);
输入[31:0]a;
输出z;
reg[4:0]i;
注册s,z;
初始开始
s=0;
for(i=0;i您的代码有一个无限循环。您已将i
声明为5位reg,这意味着它的值范围是(十进制)0到31。但是,for循环检查i<32
,这始终是真的。
一旦i=31,i
将递增并滚动到0
$display
是您的好友。如果将其添加到for循环,您将看到问题:
for(i=0; i<32; i=i+1) begin $display(i); s = s | a[i]; end
您应该用文字解释您试图实现的目标。您的代码有一个无限循环。您已将i
声明为5位reg,这意味着它的值范围是(十进制)0到31。但是,for循环检查i<32
,这总是正确的。
一旦i=31,i
将递增并滚动到0
$display
是您的好友。如果将其添加到for循环,您将看到问题:
for(i=0; i<32; i=i+1) begin $display(i); s = s | a[i]; end
你应该用语言来解释你想要达到的目标