Verilog:有可能在生成块中定义数组吗



如何在"generate"块中定义"register_bank"的数组并使用它们?我的意思是:

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

我刚刚找到了答案。我们可以使用块的名称来做到这一点。就像下面的代码一样:

genvar i;
generate
for(i = 0; i < 4; i = i + 1)
begin : my_reg_bank
reg [15:0] register_bank [0:31];
always @(posedge clk)
begin
if(we)
begin
my_reg_bank[i].register_bank[addr] <= data_i[i * 16 +: 16];
end
else
begin
data_o[i * 16 +: 16] <= my_reg_bank[i].register_bank[addr];
end
end
end
endgenerate

最新更新