【发布时间】:2025-12-28 15:00:12
【问题描述】:
我在其他地方读到过这种语法 j = j + 1 是不允许的,但是否可以在 for 循环的循环表达式之外增加变量?
这就是我最初想做的事情。我不知道如何制作这个生成语句,所以我在想,我想生成带有参数20, 21, 22, 23, 25, 28, 29, 31 的模块,同时使用使用0, 1, 2, 3, 4, 5, 6, 7 索引的二维参数数组中的值。所以我想,我会做一个 for 循环,然后有第二个变量 j,它从 0 开始,到 7。我可以这样做吗?如果没有,有什么推荐的?
genvar i;
integer j = 0;
generate
for (i = 20; i <= 31; i = i + 1) begin : NUM_OF_FF
if (i != 21 && i != 24 && i != 26 && i != 27 && i != 30) begin
lfsr
#(
.num_of_ff(i),
.poly(lsfr_taps[j])
)
random_data_gen_lsfr
(
.clk(sys_clk),
.rst(rst),
.out(lsfr_bits[i])
);
j = j + 1;
end
end
endgenerate
【问题讨论】:
-
罗伯特在下面的回答是我也会这样做。但是关于您的代码,为什么不将 j 定义为 genvar 呢?在那种情况下,我不明白为什么你不能增加它。
标签: verilog