四点四十四 发表于 2009-10-15 13:38

深入理解阻塞和非阻塞赋值——自触发always块

在那篇很流行的阻塞和非阻塞赋值论文中,有这样一个例子
例:采用非阻塞赋值的自触发振荡器
module osc2(clk);
   output clk;
   reg clk;
   
   initial #10 clk=0;
            always @(clk) #10 clk<=~clk;
endmodule
@(clk)的第一次触发之后,非阻塞赋值的RHS表达式便计算出来,并把值赋给LHS的时间并安排在更新事件队列中。在非阻塞赋值更新事件队列被激活之前,又遇到了@(clk)触发语句,并且always块再次对clk的值变化产生反应。当非阻塞LHS的值在同一时刻被更新时,@(clk)再一次触发。

问题:红色那一部分怎么理解?非阻塞赋值更新事件队列还没有发生,也就是clk还没有变化,它怎么又遇到@(clk)触发语句呢?谢谢。

ma9453 发表于 2009-10-22 21:56

楼主能吧论文共享下么?

zifeiyuuuu 发表于 2009-10-29 21:36

本帖最后由 zifeiyuuuu 于 2009-10-29 21:42 编辑

非阻塞语句中,可以允许别的语句同时执行,而阻塞语句则赋值时时不允许别的语句执行, 不知道对你理解这个有没有用,,
页: [1]
查看完整版本: 深入理解阻塞和非阻塞赋值——自触发always块