【发布时间】:2014-09-19 00:22:09
【问题描述】:
我试图理解为什么我们在 verilog 中使用 generate 和 for 循环。
同时使用 generate 和 for 循环:
reg [3:0] temp;
genvar i;
generate
for (i = 0; i < 3 ; i = i + 1) begin:
always @(posedge sysclk) begin
temp[i] <= 1'b0;
end
end
endgenerate
仅使用 for 循环:
reg [3:0] temp;
genvar i;
always @(posedge sysclk) begin
for (i = 0; i < 3 ; i = i + 1) begin:
temp[i] <= 1'b0;
end
end
我正在考虑两个 sn-ps 基本上会产生相同的结果,即 temp[0] 到 temp[10] 等于值 0。在这种情况下,我们使用 generate 语句看到的区别/优势是什么?
【问题讨论】:
-
你试过编译这些sn-ps吗?第二个应该是语法错误。只有当 for 循环在 generate 中时,您才能将 always 放在 for 循环中!
-
@user1995025,
i需要是genvar -
@Ari:感谢您为我解惑。我现在了解生成的要求。
-
@Greg:我确实在第一个 sn-p 中将
i声明为 genvar。 -
@user1995025 它是第二个 sn-p 中的
integer并且需要是genvar才能合法
标签: verilog