verilog:不能在寄存器中保存多个值

问题描述 投票:0回答:1

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

您知道该如何解决吗?

verilog cpu-registers
1个回答
0
投票

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
© www.soinside.com 2019 - 2024. All rights reserved.