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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 13488|回复: 14

[求助] 关于verilog中$signed疑惑

[复制链接]
发表于 2016-10-9 17:43:40 | 显示全部楼层 |阅读模式

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

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

x
$signed的作用是将无符号数强制转换成有符号数,但是verilog里面的数据都是二进制码流,用不用$signed存的数据都一样,那$signed应该什么时候使用呢?求大神解惑。比如:
dout1 <= $signed ( din + 1 );
dout2 <= $signed ( din ) + 1;

dout3 <=  din  + 1;

其中din = 4’b1010, 仿真结果:dout1 = dout2 = dout3 = 4'b1011;既然结果一样为什么还要用$signed,至于到底是有符号数还是无符号数应该读取数据的时候要考虑的。


求大神解惑,谢谢。
 楼主| 发表于 2016-10-10 11:07:23 | 显示全部楼层
求大神解惑
发表于 2016-10-10 12:18:17 | 显示全部楼层
为了计算啊,-2+1=-1,要是不是有符号的肯定就算错了。
 楼主| 发表于 2016-10-10 12:26:00 | 显示全部楼层
回复 3# neoitachi


   -2的补码是4‘b1110, -2 + 1, 按照上边三个计算的结果是一样的,输出都是4’b1111,它就是-1的补码。换句话说用不用$signed输出结果都是一样的。
发表于 2016-10-10 13:15:58 | 显示全部楼层
好吧,首先,你犯了一个错误,就是两个数相加,其结果的位宽要比两个相加的数的最大位宽大1bit对吧,要不然数据肯定会出现截断错误,然后你在对每个数据进行遍历相加,就知道结果不同了,不要一点盖全。仿真要有覆盖率。比如-8+0=4'b1000+0000=5'b01000,这个数据等于?
 楼主| 发表于 2016-10-10 19:05:11 | 显示全部楼层
回复 5# neoitachi


   -8的补码不是4‘b1000
发表于 2016-10-10 19:14:40 | 显示全部楼层
回复 6# xxrw2007


   请写出正确答案
 楼主| 发表于 2016-10-10 19:22:48 | 显示全部楼层
回复 7# daneast


   4bit表示-8不超范围?
发表于 2016-10-10 19:28:30 | 显示全部楼层
回复 8# xxrw2007


   4bit的范围不是4'b1000~4'b0111?
发表于 2016-10-11 09:22:17 | 显示全部楼层
回复 6# xxrw2007


   基础不过关啊,4bit有符号数表示范围:-8~+7
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

GMT+8, 2024-12-22 17:27 , Processed in 0.046124 second(s), 9 queries , Gzip On, Redis On.

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