verilog:无法在寄存器中保存多个值
verilog: can not save multiple values in register
我正在尝试将 0 到 127 之间的数字保存到寄存器中。这样在执行此代码后寄存器中只存在数字 127。
module TOP();
reg [63:0] inputdata1;
//pass the numbers
integer count;
initial
begin
count = 0;
while (count < 128) // Execute loop till count is 127. exit at count 128
begin
// every timh that the integer variable count takes must be also passed into reg inputdata1
inputdata1 = count;
count = count + 1;
end
end
endmodule
你知道我该如何解决吗?
count
可以保存单个 32 位有符号值。 inputdata1
可以保存单个 64 位值;它不能同时保存多个值。
如果您在代码中添加 $display
,您会看到 inputdata1
正在采用您期望的值:
while (count < 128) // Execute loop till count is 127. exit at count 128
begin
// every timh that the integer variable count takes must be also passed into reg inputdata1
inputdata1 = count;
count = count + 1;
$display("inputdata1=%0d", inputdata1);
end
输出:
inputdata1=0
inputdata1=1
inputdata1=2
inputdata1=3
inputdata1=4
etc.
while
退出后,您只剩下最后一个值 (127)。
也许您想将多个值存储在一个数组中(如内存):
reg [63:0] inputdata1 [0:127];
// ...
while (count < 128) begin
inputdata1[count] = count;
count = count + 1;
end
我正在尝试将 0 到 127 之间的数字保存到寄存器中。这样在执行此代码后寄存器中只存在数字 127。
module TOP();
reg [63:0] inputdata1;
//pass the numbers
integer count;
initial
begin
count = 0;
while (count < 128) // Execute loop till count is 127. exit at count 128
begin
// every timh that the integer variable count takes must be also passed into reg inputdata1
inputdata1 = count;
count = count + 1;
end
end
endmodule
你知道我该如何解决吗?
count
可以保存单个 32 位有符号值。 inputdata1
可以保存单个 64 位值;它不能同时保存多个值。
如果您在代码中添加 $display
,您会看到 inputdata1
正在采用您期望的值:
while (count < 128) // Execute loop till count is 127. exit at count 128
begin
// every timh that the integer variable count takes must be also passed into reg inputdata1
inputdata1 = count;
count = count + 1;
$display("inputdata1=%0d", inputdata1);
end
输出:
inputdata1=0
inputdata1=1
inputdata1=2
inputdata1=3
inputdata1=4
etc.
while
退出后,您只剩下最后一个值 (127)。
也许您想将多个值存储在一个数组中(如内存):
reg [63:0] inputdata1 [0:127];
// ...
while (count < 128) begin
inputdata1[count] = count;
count = count + 1;
end