码迷,mamicode.com
首页 > 其他好文 > 详细

verilog中阻塞与非阻塞

时间:2014-10-29 16:42:08      阅读:263      评论:0      收藏:0      [点我收藏+]

标签:io   使用   sp   on   log   bs   ef   as   res   

越是看似简单、经常接触的。我们越是不知其所以然。这就是我写本文的原因。
阻塞和非阻塞赋值一般使用在进程中,包括always和initial进程、assign赋值等操作中。

阻塞赋值与非阻塞赋值

always @(event-expression)

    begin     <LHS1=RHS1>

                  <LHS2=RHS2>

      ......   

    end

同样可将采用非阻塞赋值方式的always进程块写成下面的形式:

always @(event-expression)

    begin     <LHS1<=RHS1>

                  <LHS2<=RHS2>

   ......

    end

        阻塞赋值“=”与非阻塞赋值“<=”的本质区别在于:非阻塞赋值语句右端表达式计算完后并不立即赋值给左端,而是同时启动下一条语句继续执行,我们 可以将其理解为所有的右端表达式RHS1、RHS2等在进程开始时同时计算,计算完后 ,等进程结束时同时分别赋给左端变量LHS1、LHS2等。
        而阻塞赋值语句在每个右端表达式计算完后立即赋给左端变量,即赋值语句LHS1=RHS1执行完后LHS1是立即更新的,同时只有LHS1=RHS1执行 完后才可执行语句LHS1=RHS2,依次类推。前一条语句的执行结果直接影响到后面语句的执行结果。

verilog中阻塞与非阻塞

标签:io   使用   sp   on   log   bs   ef   as   res   

原文地址:http://www.cnblogs.com/yulone/p/4059737.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!