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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 7410|回复: 7

[求助] [已解决]关于verilog加法运算溢出的问题

[复制链接]
发表于 2011-8-27 23:34:23 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 estyzq 于 2012-2-9 19:06 编辑

有一个3bits的寄存器cnt,如果cnt此时的值为3'b111,那么当cnt+1执行后,cnt应该是3'b000吧?
假设此时有一个reg [2:0] temp=3'b000;
那么if( temp == cnt+1 )的判定结果是否应该是真?
为何我用modelsim进行function simulation时,发现if此时的判定是假
发表于 2011-8-28 21:20:37 | 显示全部楼层
问题就出在楼主的+1上。
不指明位宽的1默认是32位的,也就是32'h0000_0001。
cnt+1是一个3比特加32比特的加法,会将cnt扩展为32比特后相加,因此结果是32'h0000_1000。
最后,tmp==cnt+1,是一个3比特数和32比特数的比较,会将3比特熟扩展成32比特,也就是比较32'h0000_0000与32'h0000_1000。这个当然是假的。
所以楼主应该用+1'b1。
发表于 2011-8-28 22:08:50 | 显示全部楼层
解答犀利~学习了
发表于 2011-8-29 10:36:22 | 显示全部楼层
2楼正解,在verilog中位宽相当的重要。要好不要使用整型的,因为用工具来扩展位宽太危险了。
发表于 2011-11-16 18:26:36 | 显示全部楼层
2楼高人也。
发表于 2011-11-16 22:40:51 | 显示全部楼层
明白了,多谢楼上赐教
发表于 2011-11-17 00:19:57 | 显示全部楼层
以后提问的朋友,请把你们的源码都放上来....
这个一看就是位宽问题...
不要大家讨论半天,结果是你信号申明的时候没做...
当然,如果你非常确定你能表述清楚问题以及清楚问题一定不是在XXX地方的除外...
发表于 2018-7-17 15:57:38 | 显示全部楼层
回复 2# orlye


   厉害
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

×

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

GMT+8, 2024-4-19 04:20 , Processed in 0.033461 second(s), 8 queries , Gzip On, Redis On.

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