Verilog: возможно ли определить массив в блоке генерации? - PullRequest
0 голосов
/ 08 ноября 2018

Как я могу определить массив «register_bank» в блоке «generate» и использовать их?Я имею в виду что-то вроде этого:

genvar i;
generate
   for(i = 0; i < 4; i = i + 1)
   being
      reg [15:0] register_bank [0:31];

      always @(posedge clk)
      begin
         if(we)
         begin
            register[i][addr] <= data_i[i * 16 +: 16];
         end
         else
         begin
            data_o[i * 16 +: 16] <= register[i][addr];
         end
      end
   end
endgenerate

1 Ответ

0 голосов
/ 08 ноября 2018

Я только что нашел ответ. Мы можем сделать это, используя имя блока. Так же, как следующий код:

genvar i;
generate
   for(i = 0; i < 4; i = i + 1)
   being : my_reg_bank
      reg [15:0] register_bank [0:31];

      always @(posedge clk)
      begin
         if(we)
         begin
            my_reg_bank[i].register[addr] <= data_i[i * 16 +: 16];
         end
         else
         begin
            data_o[i * 16 +: 16] <= my_reg_bank[i].register[addr];
         end
      end
   end
endgenerate
...