在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 3634|回复: 11

详谈阻塞与非阻塞赋值,权威经典论述

[复制链接]
发表于 2009-9-7 01:02:01 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
越是看似简单、经常接触的。我们越是不知其所以然。

        阻塞赋值“=”与非阻塞赋值“<=”的本质区别在于:非阻塞赋值语句右端表达式计算完后并不立即赋值给左端,而是同时启动下一条语句继续执行,我们 可以将其理解为所有的右端表达式RHS1、RHS2等在进程开始时同时计算,计算完后 ,等进程结束时同时分别赋给左端变量LHS1、LHS2等。
        而阻塞赋值语句在每个右端表达式计算完后立即赋给左端变量,即赋值语句LHS1=RHS1执行完后LHS1是立即更新的,同时只有LHS1=RHS1执行 完后才可执行语句LHS1=RHS2,依次类推。前一条语句的执行结果直接影响到后面语句的执行结果。
        非阻塞赋值不能用于“assign”持续赋值中。阻塞赋值则既能用于“assign”持续赋值,也能用于“initial”和“always”等过程块 中,阻塞赋值则即能用于“assign”持续赋值,也能用于“initial”和“always”等过程赋值中。对于时许逻辑描述和建模,应尽量使用非阻塞赋值方式。

当用“always”块来描述组合逻辑时,既可以用阻塞赋值,也可以采用非阻塞赋值。但在同一个过程块中,最好不要同时用阻塞赋值和非阻塞赋值,虽然同时使用这两种赋值方式在综合时并不一定会出错。
在向函数(function)的返回值赋值时,应使用阻塞赋值“=”。
        不能在一个以上的“always”过程块中对同一个变量赋值,这样会引起冲突,在综合时会报错。
        在一个模块中,严禁对同一个变量既进行阻塞赋值,又进行非阻塞赋值,这样在综合时会报错。
        对时序逻辑描述和建模,应尽量使用非阻塞赋值方式,此外,若在同一个“always”过程块中描述时序和组合逻辑混合电路时,也最好使用非阻塞赋值方式。

请仔细阅读权威论文的讲解。

详谈阻塞与非阻塞赋值.pdf

364.57 KB, 下载次数: 116 , 下载积分: 资产 -2 信元, 下载支出 2 信元

发表于 2009-9-7 09:51:16 | 显示全部楼层
very good,thanks!
发表于 2009-9-7 18:02:49 | 显示全部楼层
if neccesriy
发表于 2009-9-16 12:37:37 | 显示全部楼层
学习了。。。
发表于 2009-10-18 09:56:11 | 显示全部楼层
学习了!!!
发表于 2009-10-18 12:59:14 | 显示全部楼层
谢谢。。。。。。。。
发表于 2009-10-28 09:08:44 | 显示全部楼层
非常感谢!!!太有用了!!!
发表于 2011-10-2 19:44:35 | 显示全部楼层
很有必要啊
发表于 2011-10-3 19:27:52 | 显示全部楼层
sdfsdfd
发表于 2011-10-3 19:55:06 | 显示全部楼层
拜读过这篇文章
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-18 10:45 , Processed in 0.032244 second(s), 11 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表