我试图将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