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