【发布时间】:2020-02-25 23:10:46
【问题描述】:
是否可以在 Verilog 中使用 for 循环生成多个 always 语句
例如。假设我们要创建一个 4 位波纹/异步计数器。
我们可以这样做
always @(posedge MainClock)
begin
Q[0] = ~Q[0];
end
always @(posedge Q[0])
begin
Q[1] = ~Q[1];
end
always @(posedge Q[1])
begin
Q[2] = ~Q[2];
end
always @(posedge Q[2])
begin
Q[3] = ~Q[3];
end
是否可以这样做:
always @(posedge MainClock)
begin
Q[0] = ~Q[0];
end
for (i = 1; i <= 3; i = i+1)
begin
always @(posedge Q[i-1])
begin
Q[i] = ~Q[i];
end
end
我知道第一种方法有效,因为我对其进行了测试。第二种方法不行,我测试了一下。有没有其他方法可以做到这一点?
【问题讨论】:
-
如果您要为 FPGA 合成它,您可能会遇到混合逻辑和时钟这样的问题。