2020-04-08 21:54:53
1 DSP中的数据表述
DSP中数据通常是有定点数与浮点数表示,其中可以对字长进行相关定义,可以选取字长为16位、24位、32位不同字长使用。而格式与字长决定了数据的精度与动态范围,同时也一定程度上决定了DSP处理器的功耗、成本与编程难度。
定点数:小数点位置为确定的。
浮点数:小数点位置可以改变。
定点运算的硬件实现较为简单,功耗较小,主要注意的是数据的定标、溢出以及误差。
浮点器减结构较为复杂,但是精度较高,高级语言容易支持。
2 定点数的格式与相关运算
2.1 定点数格式
定点数格式:Qn 格式,n为小数位数。即Q15 ,小数点右边有15个小数位,如果我们定义了一个长度为32位的数字,那么小数位为15,1位符号位,16位为整数位。
整数小数点固定在最后,定点数小数位固定使用上文的Qn 格式表示,两者都使用二进制补码形式表示。
例: Q4格式:01010011b=1•22+1•20+1•2-3+1•2-4=83/24=5.1875
对于负数(最高位MSB为1),要先把它转化为无符号二进制数,再进行计算,最后加上负号。
图2-1 二进制Q格式表示
定点数与浮点数转化时需要使用2n 的关系进行转化。
转化关系如下图:
图2-2 定点数与浮点数转化关系
浮点数转换为定点数时,由于小数点后的位数有限,会产生截断误差。
2.2 数值范围与精度
Qn 格式,字长为N数值范围: -2N-12n~2N-1-12n
精度:12n
由于符号位占1位,所以数据位为N-1,n越大范围越小,但精度越高。
图2-3 数值范围与精度
2.3 动态范围
数据格式中最大值与最小值之比即为动态范围。
N位定点数动态范围:
分贝表示:dsp大多采用16位定点数,动态范围为90.3db。
Dsp大多采用16为定点数,运算硬件实现较为简单,更大动态范围应用可以使用拓展字长方式。
3 定点数算术运算
3.1 定点数加减法运算
首先需要保证小数点对齐,但是运算结果可能会溢出。如果进位位与最高位(MSB)相同无溢出,不同则有溢出。
处理溢出通常有饱和模式与非饱和模式,饱和模式溢出时会对溢出进行限幅,如图。非饱和模式不会处理。
图3-1 饱和模式与非饱和模式
3.2 定点数乘法
DSP处理器都有硬件乘法器和乘法指令,可实现单周期乘法运算。二进制乘法运算包含了移位与加法运算。
定点数乘法不要求小数点位统一,两个相乘数分别为Qn和Qm格式,字长为N,结果为Q(n+m)格式,字长为2N。
在进行运算时,需要字长保持不变,则两个定点小数作乘法运算,结果左移一位,保存高位得到运算结果,结果为Qm(m≤ n)格式。
若整数乘小数,则输出结果为整数,丢弃后8位为截尾误差。误差小于等于Qn格式精度的一半,即小于等于12n+1 。单次计算误差不大,但连续计算,尤其是递归算法中,误差影响较大。
整数相乘,结果为Q0格式,需查询标志位确定保存的位数,结果不需要左移一位。若结果没有超出8位数的表示范围时,结果在低8位,保存低8位。若结果超出8位数的表示范围时,则高8位也包含乘积结果,应保存整个16位结果。
参考:https://blog.csdn.net/wasser000/article/details/90575201
原文地址:https://www.cnblogs.com/CCWangsj/p/12663164.html