以下代码集做同样的事情,它们之间有什么区别吗?如果没有,为什么通常wait (clk)不使用?
always @(posedge clk)
begin
end
always wait(clk)
begin
end
Run Code Online (Sandbox Code Playgroud)
@(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)