zoukankan      html  css  js  c++  java
  • 阻塞赋值和非阻塞赋值

    2017-12-01

    在Verilog语言中,赋值语句经常使用,阻塞赋值和非阻塞赋值经常带给我们很多困扰。在此讨论两种赋值方式的差异性。

           首先根据表面含义深刻理解阻塞和非阻塞:

           阻塞:在进程语句块中(initial或者always或者其他),当前赋值语句的执行阻塞了后面语句的执行。即后面语句的赋值需要等到当前赋值过程完成才能得以执行,即可认为执行过程是顺序执行(我们要明白Verilog中,大多数情况模块都是并发执行的)。

           非阻塞:当前赋值语句的执行不会阻塞后续语句的执行,即可以认为当前赋值语句的完成和后续的执行过程是并发执行的

           下面通过一个例子说明:

    initial                       initial
    begin                          begin
    b=a;                            b<=a;
    c=b;                            c<=b;
    end                             end             

        上述左侧为阻塞赋值,右侧为非阻塞赋值;

         左侧代码中,当b=a执行完之后,即b的值已经变成了a;此时,c的值被赋给b的值,实际上,c的值就是a的值了,即c=b=a;

         而右侧代码,b被赋给a的值,c被赋给b的值同时发生,即c得到得到的b的值,并非是改变后的b的值,而是b没有改变之前的原来的值。    

  • 相关阅读:
    用mescroll实现无限上拉增加数据,下拉刷新数据 (学习笔记)
    jackson使用问题:mapper.readValue()将JSON字符串转反序列化为对象失败或异常
    常用 NHibernate.Criterion
    Threading
    并口
    电子称 弹钱箱脉冲
    ZIP文件解压
    wpf 异步加载 只需6段代码
    Newtonsoft.Json使用
    接口post +json +bean
  • 原文地址:https://www.cnblogs.com/shaonianpi/p/7944234.html
Copyright © 2011-2022 走看看