以下一组代码做同样的事情。它们之间有什么区别吗?如果没有,为什么wait (clk)
一般不被使用?
always @(posedge clk)
begin
end
always wait(clk)
begin
end
答案 0 :(得分:5)
@(posedge clk)
是边缘敏感的,因此它用于模拟同步电路。虽然wait(clk)
是水平敏感的。因为大多数电路设计为同步@(posedge clk)
主要用于
wait (expression)
"表达"如果为false,则进行计算,然后暂停执行直到表达式变为true。如果在达到语句时表达式为true,则等待无效,执行将继续执行受控语句。
@(posedge clk) - is an edge event.
posedge:0,x,z->1 negedge:1,x,z->0
边缘事件对于建模时钟逻辑元件(如触发器)非常有用。它们还可用于基于公共时钟同步模型中的活动。例如,在下面的always块中,它进入时钟下降沿的always
块。
always @(negedge clock)
x = f(y);