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

[复制链接]
 楼主| 四点四十四 发表于 2009-10-15 13:38 | 显示全部楼层 |阅读模式
在那篇很流行的阻塞和非阻塞赋值论文中,有这样一个例子
例:采用非阻塞赋值的自触发振荡器
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

主题

1

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部