阻塞赋值和非阻塞赋值在可综合的代码中不需要严格的区分,但是在仿真文件中就尤为重要。阻塞赋值是指,只有当前赋值操作完成之后,后面的赋值操作才会发生;非阻塞赋值是指,当前块中的所有赋值操作完成后再计算各个变量的值,后续的赋值操作会覆盖之前的值。举个例子。

a、b和c的值分别为a=1, b=2, c=3。

a=b;

a=c;

b=a;

以上操作后,a的值为c,b的值为3。其过程是,a=b时,a的值被修改为2后才开始执行a=c;a=c执行后,a的值已经变成3,然后才开始执行b=a;执行b=a时,a的值已经为3,所以b的值为3。如果改为非阻塞赋值:

a<=b;

a<=c;

b<=a;

上述操作后,a的值为3,b的值为1,c的值为3。其过程是,a首先被赋值为b,接着a被赋值为c。上述过程之后最后一个对a的赋值有效。因为非阻塞赋值就像他的名字,不会等到a<=b结束后才执行a<=c,而是畅通无阻的向下执行,所以只有最后一个赋值是有效的。b<=a执行时,a还是1。只有当上述操作所在的块结束后,每个变量才会被赋值。

非阻塞赋值的行为也可以简单描述为:赋值语句块中,对同一个变量的赋值以最后一次赋值为准;当前赋值语句块结束之前,所有变量都保持原有的值;当赋值语句块结束时,所有变量被同时赋值。如a=1, b=2, c=3:

always @ (posedge clk) begin

a<=b;

a<=c;

a<=4'hf;

b<=a;

c<=b;

end

执行完毕后,a等于4'hf,b等于1,c等于2。

以下我仿真时使用的一个task的例子。

task tk_eset_wr( input           [`ESET_ADDR_WID: 0]             depth,input   logic   [`ESET_WID*`ESET_DEPTH-1: 0]    data
);localparam FACTOR       = `ESET_WID / `REG_WID;automatic reg         [`ESET_WID*`ESET_DEPTH-1: 0]    data_tmp=0;mem_sel = 0;mem_rst = 1'b1;#(PERIOD*2) mem_rst = 1'b0;repeat (`CH_PER_SUB) begin data_tmp = data;repeat (depth) beginrepeat (FACTOR) begin@(posedge clk);mem_wr = 1'b1;mem_data = data_tmp[`ESET_WID*`ESET_DEPTH-1: `ESET_WID*`ESET_DEPTH-`REG_WID];data_tmp = {data_tmp[`ESET_WID*`ESET_DEPTH-`REG_WID-1: 0], {`REG_WID{1'b0}} };end @(posedge clk);mem_wr = 1'b0;end mem_sel++;end mem_wr <= 1'b0;
endtask : tk_eset_wr

上例中,task中没有延时控制语句,是阻塞赋值保证了data_temp的向左移位。mem_data = data_tmp[`TSET_MAP_WID*16-1: `TSET_MAP_WID*16-`REG_WID];首先将data_temp的一个段赋值给mem_data,只有当该赋值结束后,data_tmp的向左移位才会发生。

阻塞/非阻塞——纸上得来终觉浅,绝知此事要躬行相关推荐

  1. 纸上得来终觉浅 绝知此事要躬行

    摘自:https://baike.baidu.com/item/%E7%BA%B8%E4%B8%8A%E5%BE%97%E6%9D%A5%E7%BB%88%E8%A7%89%E6%B5%85%EF%B ...

  2. 纸上得来终觉浅,绝知此事要躬行。

    在ITPUB上看帖子的时候,有个网友的回复就是标题中的一句诗:纸上得来终觉浅,绝知此事要躬行. 为弄明白这首诗的含义,我GOOGLE了,在百度知道中找到相关解释.觉得其中的意思比较适合我目前的状态. ...

  3. 纸上得来终觉浅,绝知此事要躬行

    周末时,领导在团队一个小群分享了一篇文章,全文很长 周二时打开了看了十几分钟,因为其他事情被打断,只看了1/5不到就搁置了 今天是周三,负责技术管理的同事将文章转到了大群,一起发出来的还有一张思维导图 ...

  4. 【人生参悟】纸上得来终觉浅,绝知此事要躬行

    这几天一直在研究saltstack和zabbix,参看了不少文档和博客,终于saltstack的部署研究得7788,zabbix所需要的LNMP环境也搭建完毕了.纵观这几天的工作,我有一个很深的感悟, ...

  5. 就业感言:纸上得来终觉浅,绝知此事要躬行

    来源:华清远见嵌入式学院就业部   学员姓名:曲仕辉   所在班级:北京1001期班   就业单位:朝歌宽带   工作职位:应用开发工程师 转眼间在华清远见嵌入式培训结束了,我也找到了一份比较满意的工 ...

  6. 学内核之十八:纸上得来终觉浅,绝知此事要躬行

    目录 0 前言 1 ioremap.vmalloc与原子上下文 2 copy_to_user与进程上下文 3 fasync与指针初始化 4 wait_event_interruptible与条件变量 ...

  7. 每日启程——2019.12.15(纸上谈来终觉浅,绝知此事要躬行。)

    每日启程--2019.12.15(纸上谈来终觉浅,绝知此事要躬行.) 早上本来想多睡一会.没想到对面的工地可不答应.硬是一锤一锤的把我叫醒.好吧,谁叫我昨天晚上睡得太晚了呢.不过呢.昨天没有做启程和总 ...

  8. 纸上得来终觉浅,绝知此事要躬行——Spring boot任务调度

    前言:之前今日开讲项目的时候,用到了Quartz进行任务调度.后来做一个电商项目的时候,还用到了Quartz任务调度. 觉得挺简单的,a peace of cake.  忽略了总结,当时闭着眼睛都能捉 ...

  9. 2020上半年总结:纸上得来终觉浅,绝知此事要躬行

    Author:AXYZdong 自动化专业 工科男 有一点思考,有一点想法,有一点理性! 定个小小目标,努力成为习惯!在最美的年华遇见更好的自己! CSDN@AXYZdong,CSDN首发,AXYZd ...

最新文章

  1. 适配iOS 13 tabbar 标题字体不显示以及返回变蓝色的为问题
  2. Covariance and Contravariance in C#的搜索条件
  3. Zedboard学习(六):XADC读取数据
  4. Css中Position属性的含义
  5. 转载:Spring AOP (下)
  6. 谈谈asp.net中的% %,%= %,%# %%$ %的使用
  7. (16)Verilog HDL常量:数值表示
  8. 微博转发的内容如何实现点击人名跳转到个人主页
  9. android photopicker怎么修改状态栏,一个非常好看的图片选择框架LPhotoPicker,确定不来看看么...
  10. pdf转换成jpg图片不清晰怎么办?
  11. 计算机桌面的图片要点开才可以看,在桌面上的图片文件都不显示具体图片了 只能打开这个图片才能看到是哪张图片 请问怎么处理?...
  12. Delphi使用逍遥安卓模拟器
  13. java ssm框架论文,基于SSM框架的个人博客系统(源码+论文)
  14. bugku 我永远喜欢穹妹
  15. uniapp jql操作数据库
  16. P7选修 深度学习介绍
  17. 网易运营微专业_运营基础
  18. 成为高可视化地图应用专家-赋能智慧城市建设
  19. 【单片机毕业设计】【mcuclub-hj-002】基于单片机的多路温度控制设计
  20. EasyExcel 自定义标题样式

热门文章

  1. mac brew的卸载和重装
  2. 推荐几个机器学习和数据挖掘领域相关的中国大牛
  3. 两个mysql数据同步
  4. oralce 集合比较 和常用方法
  5. Java开发者!2021年Java面经分享
  6. 在线编辑软件之幕布与腾讯文档,语雀
  7. python时间加减秒_Python 日期时间datetime 加一天,减一天,加减一小时一分钟,加减一年...
  8. 增强人体免疫力的方法
  9. android打开相册功能,Android 常用系统功能(打开相册,打开系统设置等等)
  10. arcsoft人脸识别sdk使用方法(java版本)