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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
楼主: larlyii

[求助] 关于补码的加法和乘法运算

[复制链接]
 楼主| 发表于 2011-6-1 21:35:32 | 显示全部楼层
回复 7# dlb05061131


    谢谢你的资料哈!超级感谢!我留着慢慢看
 楼主| 发表于 2011-6-1 21:40:17 | 显示全部楼层
回复 8# AmoiBB


    加法器确实不知道输入的是源码还是补码,但是我验证过,当把乘法器设置成unsigned时,它把输入当做无符号数,设置成signed时当做有符号数。当对有符号数运算时,设置成signed就是对的
发表于 2011-6-7 09:18:58 | 显示全部楼层
按照我的经验:补码直接相加减,不用高位扩展,结果溢出的最高位也可以直接不用。
发表于 2011-6-7 21:31:57 | 显示全部楼层
楼主最后的代码是正确的
发表于 2011-6-10 08:28:21 | 显示全部楼层
不要人工去枚举符号位,用signed来表明你设计的思路。必要时可用cast函数:$signed(),$unsigned.
发表于 2011-6-10 08:36:03 | 显示全部楼层
本帖最后由 wangxuede220 于 2011-6-10 08:37 编辑

加法的说法13楼是正确的,楼主你乘法时之所以只取低8位正确,因为你的结果没有超出8位,而乘法有可能超出8位的,这个时候再像你这么截断就不对了。你或者可以设计一个补码乘法器,但是结果一定要保持8+8-1的宽度。如果直接用“*”的话,也是15位,最高位是符号位相异或的结果,其他低14是两个低七位原码乘法,乘完之后再转化成为补码。
发表于 2011-6-10 10:35:23 | 显示全部楼层
变量声明的时候直接声明 signed 有符号数,然后考虑到溢出的情况就成…

不用那么麻烦…仿真软件会自动支持…综合软件也会帮你综合好…
发表于 2011-7-14 12:21:42 | 显示全部楼层
我也碰到问题了 可能就是这个问题
发表于 2011-7-14 16:38:51 | 显示全部楼层
回复 10# larlyii


    实际上,你根本不需要考虑去掉高位,输入进行有符号扩展,输出和输入位宽一致即可。
发表于 2011-7-15 00:19:47 | 显示全部楼层
学习了!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

×

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

GMT+8, 2024-4-17 03:06 , Processed in 0.028224 second(s), 6 queries , Gzip On, Redis On.

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