打印

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

[复制链接]
2328|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
四点四十四|  楼主 | 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

粉丝