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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 2096|回复: 5

[求助] 请教这几种编码,结果有什么不同,因为什么?

[复制链接]
发表于 2012-11-29 21:43:20 | 显示全部楼层 |阅读模式

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

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

x
附件中的几种编码方式有什么结果有什么异同,为什么
test1.jpg
发表于 2012-11-30 06:30:56 | 显示全部楼层
就是阻塞与非阻塞的异同
发表于 2012-11-30 08:09:55 | 显示全部楼层
组合逻辑不应该用非阻塞赋值,另外个人觉得应该把data_out放在case所在的always块外面,声明成wire类型(也可以不声明,因为verilog默认输出为wire),用assign data_out = temp;
发表于 2012-12-4 07:52:43 | 显示全部楼层
个人分析一下,结果都是基于data_in改变的时间点发生的:
1. 前7个结果一样,data_out等于temp之前的值,temp等于case里面取决于data_in的值。
2. 最后一个结果是,data_out等于temp在case里面赋的值,temp等于case里面取决于data_in的值。
当然,推荐的代码风格是最后一种
 楼主| 发表于 2012-12-4 20:43:26 | 显示全部楼层
回复 4# acgoal


    最右侧两个结果是一样的,剩下六个结果是一样的。
发表于 2012-12-5 09:23:01 | 显示全部楼层
这就是verilog不好的地方,太自由了,很多人想当然的写代码。语法上都能通得过,但是结果完全不一样。verilog默认的原则是很多的,上面代码却没有遵守:不要在同一个always块里面混合使用“阻塞赋值”和“非阻塞赋值”!
即使不遵照默认的规则也有可能仿真出正确的结果,但前仿结果也许会和后仿结果不匹配。研究为什么不一样是没有意义的,真想知道8个例子为什么会出现这种结果,看下最后生成的电路就知道了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

X

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

GMT+8, 2025-6-10 02:01 , Processed in 0.024534 second(s), 10 queries , Gzip On, MemCached On.

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