等待'之间的区别和' @'声明

时间:2014-11-03 11:49:32

标签: verilog

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

always @(posedge clk)
begin

end


always wait(clk)
begin 

end

1 个答案:

答案 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);