尽管正确声明了寄存器,但 Verilog 中的索引超出范围错误
Index out of range error in Verilog, although the register is declared correctly
我正在尝试学习 Verilog,并且我有这个简单的代码
module division (
output reg [14:0] A,
input [14:0] D);
reg[4:0] i;
always @(*) begin
for (i = 14; i >= 0; i = i-1) begin
A[0] = D[i];
end
end
endmodule
此 returns 错误:Index out of range for D.
。我不知道为什么,因为 D 是在那个时间间隔内声明的。你能帮我么?
我知道代码可能没有任何意义,但我只包含了问题的相关部分。
您已将 i
声明为无符号,因此表达式 i >= 0
将始终为真。
当i
到0时,下一次迭代是5'b11111,超出范围。您应该将 i
声明为 integer
或添加 signed
关键字。
我正在尝试学习 Verilog,并且我有这个简单的代码
module division (
output reg [14:0] A,
input [14:0] D);
reg[4:0] i;
always @(*) begin
for (i = 14; i >= 0; i = i-1) begin
A[0] = D[i];
end
end
endmodule
此 returns 错误:Index out of range for D.
。我不知道为什么,因为 D 是在那个时间间隔内声明的。你能帮我么?
我知道代码可能没有任何意义,但我只包含了问题的相关部分。
您已将 i
声明为无符号,因此表达式 i >= 0
将始终为真。
当i
到0时,下一次迭代是5'b11111,超出范围。您应该将 i
声明为 integer
或添加 signed
关键字。