赞
踩
目录
字长(位宽)和小数部分字长共同构成了定点数的两个要素。以wl表示字长,fl表示小数部分字长,那么有符号定点数以Fix_wl_fl的形式表示,无符号定点数的字长以UFix_wl_fl的形式表示。对于定点小数,一旦wl和fl确定,那么小数点的位置即可固定。
下表给出了Fix_5_3与十进制小数的对应关系:
位权 | 十进制小数 | ||||
-2 | 1 | 0.5 | 0.25 | 0.125 | |
0 | 0 | 0 | 1 | 0 | 0.25 |
0 | 0 | 1 | 1 | 0 | 0.75 |
1 | 1 | 0 | 0 | 1 | -0.875 |
1 | 0 | 1 | 0 | 0 | -1.5 |
在定点小数中,有一类值得关注,那就是只有一位整数位的定点小数。下表给出了Fix_5_4与十进制小数之间的对应关系。可见,此类定点小数只能表示(-1,1)区间内的纯小数,范围受限。
位权 | 十进制小数 | ||||
1 | 0.5 | 0.25 | 0.125 | 0.0625 | |
0 | 0 | 0 | 1 | 0 | 0.125 |
0 | 0 | 1 | 1 | 0 | 0.375 |
1 | 1 | 0 | 0 | 1 | -0.5625 |
1 | 0 | 1 | 0 | 0 | -0.75 |
在表2中,如果将小数点抹掉,把其视为整数,那么也就是将数字放大了16倍,这对运算结果并没有实质的影响。采用FPGA实现数字信号处理是可以这么做的。
定点数据在运算时要防止溢出,包括上溢(Overflow)和下溢(Underflow)。
上溢是指运算结果超出了定点数整数部分所能表示的范围,下溢是指运算结果超出了定点数小数部分所能表示的范围。
例如UFix-4-2所能表示的定点数的范围是[0,3.75],步进(精度)为0.25,如果运算结果为4,则发生上溢;如果运算结果为0.125,则发生下溢。一旦溢出将会造成计算精度的损失甚至结果的错误。因此,合理选择字长尤为重要。
定点数据的量化模式决定了当运算结果的精度高于定点数所能表达的精度时如何对超出精度的比特处理。通常有两种方法:Truncate和Round。
Truncate为直接截尾,将超出精度部分的比特舍弃掉。
Round为“四舍五入”,将舍去的比特的最高位加到要保留的比特的最低位。
采用Round可以获得更高的精度,但是也需要额外的资源(因为需要相加)。这两种方式都是针对发生下溢时的处理方式。
定点数据的溢出模式决定了当运算结果大于定点数所能表示的最大值时如何对溢出部分进行处理。通常有两种方式:Saturate和Wrap。
Saturate为饱和处理,一旦溢出就将计算结果饱和处理为最大值。(所能表示的最大值)
Wrap为截断处理。
如下表,为溢出模式的两种处理方式。
0 | 0 | 1 | 1 | 0 | . | 0 | 0 | 1 |
Wrap(-1.875)Fix_5_3 | 1 | 0 | . | 0 | 0 | 1 | ||
Saturate(1.875)Fix_5_3 | 0 | 1 | . | 1 | 1 | 1 |
用Fix_5_3表示小数时,6.125明显发生了上溢,需要进行溢出模式处理,采用wrap方式时,得到的结果为-1.875
采用saturate时,得到的结果是1.875.
不难看出,溢出对于计算结果的不利影响。这两种方式都是对发生上溢时的处理方式。
有篇文章链接先放这,有时间我可能需要看!
最后本文内容参考:《基于FPGA的数字信号处理》电子工业出版社,设计者的思想
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。