Verilog 多个始终块用于循环
是否可以在Verilog中使用for循环生成多个always语句 举个例子。假设我们想要创建一个4位涟波/异步计数器 我们可以这样做Verilog 多个始终块用于循环,verilog,fpga,Verilog,Fpga,是否可以在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])
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
始终@(posedge主时钟)
开始
Q[0]=~Q[0];
结束
对于(i=1;i您可以使用generate
来执行此操作:
genvar i;
generate
for (i = 1; i <= 3; i = i+1) begin : ripple
always @(posedge Q[i-1])
Q[i] = ~Q[i];
end
endgenerate
genvari;
生成
对于(i=1;i如果你要为FPGA合成它,你可能会遇到这样的逻辑和时钟混合问题。我模糊地记得在灵敏度列表中使用索引名称时收到警告消息。但这可能是特定于模拟器的…这对于学术研究来说是可以的,但如果你使用非时钟信号作为触发器中的时钟。您应该改用时钟。