以下代码集做同样的事情,它们之间有什么区别吗?如果没有,为什么通常不使用wait (clk)

always @(posedge clk)
begin

end


always wait(clk)
begin

end

最佳答案

@(posedge clk)是边沿敏感的,因此它被用来对同步电路建模。而wait(clk)是电平敏感的,因为大多数电路被设计为同步的@(posedge clk)主要用于

wait (expression)

计算“表达式”,如果为假,则暂停执行,直到表达式变为真为止。如果到达该语句时该表达式为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);

09-13 10:43