verilog: невозможно сохранить несколько значений в регистре - PullRequest
0 голосов
/ 07 мая 2020

Я пытаюсь сохранить в регистре числа от 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

Вы знаете, как я могу почини это?

1 Ответ

1 голос
/ 07 мая 2020

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
...