“ wait”和“ @”语句之间的区别

use*_*682 3 verilog

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

always @(posedge clk)
begin

end


always wait(clk)
begin 

end
Run Code Online (Sandbox Code Playgroud)

chi*_*nna 5

@(posedge clk)由于对边沿敏感,因此可用于对同步电路进行建模;对wait(clk)电平敏感;由于大多数电路设计为同步,@(posedge clk)因此主要使用

wait (expression)
Run Code Online (Sandbox Code Playgroud)

计算“表达式”,如果为假,则暂停执行,直到表达式变为真为止。如果到达该语句时该表达式为true,则等待无效,执行将继续执行受控语句。

@(posedge clk) - is an edge event.
posedge:0,x,z->1    negedge:1,x,z->0
Run Code Online (Sandbox Code Playgroud)

边缘事件对于建模时钟逻辑元素(如触发器)很有用。它们对于在基于公共时钟的模型中同步活动也很有用。例如,在以下始终块中,它always在时钟的负沿进入该块。

always @(negedge clock)
    x = f(y);       
Run Code Online (Sandbox Code Playgroud)