FPGA相关知识点3 | 您所在的位置:网站首页 › 16bit数据范围 › FPGA相关知识点3 |
N位二进制数所能表示的数据范围 有符号数(补码): -2^(N-1) ~ 2^(N-1)-1 *正数范围-1,是因为0算在正数范围中 如,N = 8,则表示范围是:-128 ~ 127. 无符号数:0~2^N-1 如,N = 8,则表示范围是:0~255. 有符号定点数: 如N = 8, 3Q5 :意思为共8位,3位整数位5位小数位。 如果有符号,那么整数位被占去一位。 所以整数部分其实只有2位,最大为4。 小数位有5位,那么最大值为: 4 + ∑ 2^(-i) (i = 1…5) - 2^(-5) ; 整数 + 所有小数位为1时的值 - 精度(最小的小数值) 为什么最大值要减1个精度,同样是因为0占掉了一个范围。 最小值则为 -4 - ∑ 2^(-i) (i = 1…5)
N bit数和M bit数相加、相乘后需要多少bit? 相加相乘后需要的数据位宽,若无已知数据范围,按照基本规律: 相加位宽+1,相乘位宽为N+M(保证宽度足够) 若已知操作数范围,根据运算操作数所能表示数的绝对值最大值,求出运算结果极限值。 例如,两个8bit有符号数相乘,其结果需要的位宽是多少? 8bit有符号数补码所能表示的数据范围是:-128到127,具有最大绝对值的数是-128,所以极限情况下是-128*(-128) = 16384 = 2^14. 15bit有符号数所能表示范围是:-2^14到2^14-1,并不能表示2^14。综上,需要16bit位宽。 正好位宽扩大一倍,也就是8+8。
个人心得:在进行数字信号处理的过程中,数据的宽度是非常非常关键的一点。在FPGA中实现的系统,数据每多一位,都意味着消耗了更多的资源。那么,一个优秀的系统,应该尽可能的在保证正确的前提下,减少数据的宽度。如果我们在sysGen设计的过程中,使用了CMult乘法器,最后的输出选择全精度输出,那么输出的数据宽度就是输入的宽度加上乘数的数据宽度了,这个宽度的增长是非常惊人的,所以我们应该根据实际结果对宽度进行截取。
最后,感谢各位的观看,我是Rongye,下期再见。
|
CopyRight 2018-2019 实验室设备网 版权所有 |