FPGA中加减乘除运算的注意问题

FPGA中有关加减乘除运算的位宽问题:

1:在进行加减乘除运算时一定要注意位宽,保证足够大的位宽,防止数据溢出,如果溢出结果就会出现错误,尤
其是加和乘运算,一定要计算好位宽(位宽的计算可以都取其最大值,看最大值计算后的位宽就是最大位宽,采
用这个位宽数据就溢出不了)

2:除法运算时:除法和减法都是缩小数据,得到的最后结果如果要比原来的位宽小的时候,那取数据的低位,把
高位抛弃,取低位的位宽数和输出结果的位宽数一致就行
例如:结果data_out是8位数据位宽
      原来的数sum是11位位宽,sum经过除法运算(sum/8,就是右移3位),
      那么结果data_out=sum[7:0](即取低8位才是结果)

3:乘法运算时注意位宽足够就行,别溢出

4:乘法:就是左移,移动是位数是2的指数,即*8就是左移3位,*16就是左移4位
   除法:就是右移,移动位数原则和乘法一样。

5:除法运算:例子:m=n/9;怎样计算一个数除以9(这个数不是2的整数倍)m是要求的结果,n是原来的数
   首先我们可以先解决9,比如我们利用1024(这个数正好是2^10,便于移位计算),因为1024/9=113.7我们取

整即为113(64+32+16+1),因此可以得到9=1024/113,这样我们就把1024/113这个数当成9,
   即m=n/(1024/113)=(n*113)/1024
         =(n*113)>>10,这样就有可以转换为移位操作了,就变的简单了,其中那个113可以用乘法的移位来计算
   这其中1024是自己任意取的主要是要和2的指数倍相关,便于移位,其中这个1024取的越大,出来的结果的精
度就越高,比如还能取2048,4096等,越大精度越高。
  • 10
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值