【发布时间】:2021-03-04 20:49:25
【问题描述】:
reg A,B,C;
always @(*)begin
//some other computations
C=B;
//some other computations
A=C;
end
always @(posedge clk)begin
B<=A;
end
你好,
在上面的代码中,在 clk 的 posedge reg A 改变了 reg B 的值,并且由于 B 在敏感列表中,这开始了第一个 always 阻塞的过程。我的问题是“C=B”行会发生什么,因为 reg C 也在敏感列表中?这会再次启动第一个循环的过程并导致无限循环吗?
我在模拟中检查了它,它工作正常。但我不知道硬件上会发生什么。
我的猜测是它不会造成问题。由于 Verilog 只创建一个 LUT 来模拟 always 块内部的算法,因此不会导致硬件问题。但是,我不确定,所以我想问一下。
谢谢,
【问题讨论】: