FPGA定点小数二进制乘法运算

此次采用有符号位宽为6bit的输入变量in_a和in_b。其中最高位为符号位,“0”表示正数,“1”表示负数。低5bit表示小数位。所有数据范围均为-1~1之间。
一、正数×正数
正数乘法可直接运算,去除乘数和被乘数的符号位进行相乘,结果为10bit(如果位数不够,最高位加0),符号位为乘数和被乘数符号位取异或。
如图为:0.78125(011001)×0.75(011000)

结果位宽为11bit。
二、正数×负数
1、进行乘法之前,首先将负数转化为正数再进行运算(补码)。
方法:负数整个按位取反再加一。
2、再按两个正数相乘的方法进行运算(即乘数和被乘数去除符号位相乘)(如果不够,根据符号位添加,如果符号位为“1”,则最高位添加“1”)
3、结果的符号位也是乘数,被乘数取异或运算。
4、如果符号位为“1”,则步骤2相乘的结果最高位补位为“1”,符号位为“0”,最高位补“0”,凑够10bit位宽(如果步骤2结果本来为10bit,则不需要添加)。
5、添加符号位,结果为11bit,最高位符号位,低10bit为小数位。
如图:eg:111001(-0.21875)×011000(0.75)
在这里插入图片描述
ps:负数×负数与上述方法一样,不一一列举。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值