我不知道下面的代码有什么问题,有人可以帮我调试
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
Run Code Online (Sandbox Code Playgroud)
您的代码具有无限循环.您已声明i为5位寄存器,这意味着其值范围为(十进制)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
Run Code Online (Sandbox Code Playgroud)
我想你想要的i<31.
或者,也许你想要a使用逐位OR运算符将所有位组合在一起:
s = |a;
Run Code Online (Sandbox Code Playgroud)
你应该用语言解释你想要实现的目标.
| 归档时间: |
|
| 查看次数: |
2211 次 |
| 最近记录: |