集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 324|回复: 1

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

[复制链接]
dameihuaxia 发表于 2022-6-17 11:00:13 | 显示全部楼层 |阅读模式
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等,越大精度越高
雷磊 发表于 2022-6-17 15:37:34 | 显示全部楼层
基于FPGA的信号灯冲突检测电路的设计与实现.pdf
http://www.fpgaw.com/forum.php?m ... 4&fromuid=54563
(出处: fpga论坛|fpga设计论坛)
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

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

QQ|小黑屋|手机版|Archiver|集成电路技术分享 ( 京ICP备20003123号-1 )

GMT+8, 2024-5-16 02:37 , Processed in 0.073969 second(s), 29 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表