下面这组代码可以做同样的事情。它们之间是否有区别?如果不是,为什么wait (clk)
通常不被使用?'wait'和'@'语句之间的区别
always @(posedge clk)
begin
end
always wait(clk)
begin
end
下面这组代码可以做同样的事情。它们之间是否有区别?如果不是,为什么wait (clk)
通常不被使用?'wait'和'@'语句之间的区别
always @(posedge clk)
begin
end
always wait(clk)
begin
end
@(posedge clk)
是边缘敏感的,因此它被用来同步circuits.While建模,wait(clk)
被水平sensitive.Since最电路被设计成同步@(posedge clk)
主要使用
wait (expression)
“表达“被评估,如果为false,则执行被暂停直到表达式变为真。如果在达到语句时表达式为真,则等待不起作用,并且执行继续到受控语句。
@(posedge clk) - is an edge event.
posedge:0,x,z->1 negedge:1,x,z->0
边缘事件对建模时钟逻辑单元(如触发器)很有用。它们对基于普通时钟的模型中的活动同步也很有用。例如,在以下总是阻止的情况下,它会在时钟的下降沿输入always
块。
always @(negedge clock)
x = f(y);
请注意,如果块内没有其他延迟,则'clk'变为1时,第二个'always'块将挂起模拟器。它将陷入无限循环。 – 2014-11-03 15:20:42