||
1. DSP中的数据表述
DSP中数据通常是有定点数与浮点数表示,其中可以对字长进行相关定义,可以选取字长为16位、24位、32位不同字长使用。而格式与字长决定了数据的精度与动态范围,同时也一定程度上决定了DSP处理器的功耗、成本与编程难度。
定点数:小数点位置为确定的。
浮点数:小数点位置可以改变。
定点运算的硬件实现较为简单,功耗较小,主要注意的是数据的定标、溢出以及误差。
浮点器减结构较为复杂,但是精度较高,高级语言容易支持。
2. 定点数的格式与相关运算
2.1 定点数格式
定点数格式:Qn 格式,n为小数位数。即Q15 ,小数点右边有15个小数位,如果我们定义了一个长度为32位的数字,那么小数位为15,1位符号位,16位为整数位。
整数小数点固定在最后,定点数小数位固定使用上文的Qn 格式表示,两者都使用二进制补码形式表示。
例: Q4格式:01010011b=1•2^2+1•2^0+1•2^(-3)+1•2^(-4)=83/24=5.1875
对于负数(最高位MSB为1),要先把它转化为无符号二进制数,再进行计算,最后加上负号。
位 | 7(MSB) | 6 | 5 | 4 | 3 | 2 | 1 | 0(LSB) |
二进制补码 | 0 | 1 | 0 | 1 | 0 | 0 | 1 | 1 |
Q0 | 符号 | 2^6 | 2^5 | 2^4 | 2^3 | 2^2 | 2^1 | 2^0 |
Q4 | 符号 | 2^2 | 2^1 | 2^0 | 2^(-1) | 2^(-2) | 2^(-3) | 2^(-4) |
Q7 | 符号 | 2^(-1) | 2^(-2) | 2^(-3) | 2^(-4) | 2^(-5) | 2^(-6) | 2^(-7) |
图2-2 定点数与浮点数转化关系
浮点数转换为定点数时,由于小数点后的位数有限,会产生截断误差。
2.2 数值范围与精度
Qn 格式,字长为N数值范围: -2^(N-1)/2^n~(2^(N-1)-1)/2^n
精度:
由于符号位占1位,所以数据位为N-1,n越大范围越小,但精度越高。
2.3 动态范围
分贝表示:dsp大多采用16位定点数,动态范围为90.3db。
Dsp大多采用16为定点数,运算硬件实现较为简单,更大动态范围应用可以使用拓展字长方式。
3 定点数算术运算3.1 定点数加减法运算
图3-1 饱和模式与非饱和模式
3.2 定点数乘法
DSP处理器都有硬件乘法器和乘法指令,可实现单周期乘法运算。二进制乘法运算包含了移位与加法运算。
定点数乘法不要求小数点位统一,两个相乘数分别为Qn和Qm格式,字长为N,结果为Q(n+m)格式,字长为2N。
在进行运算时,需要字长保持不变,则两个定点小数作乘法运算,结果左移一位,保存高位得到运算结果,结果为Qm(m≤ n)格式。
若整数乘小数,则输出结果为整数,丢弃后8位为截尾误差。误差小于等于Qn格式精度的一半,即小于等于
单次计算误差不大,但连续计算,尤其是递归算法中,误差影响较大。
整数相乘,结果为Q0格式,需查询标志位确定保存的位数,结果不需要左移一位。若结果没有超出8位数的表示范围时,结果在低8位,保存低8位。若结果超出8位数的表示范围时,则高8位也包含乘积结果,应保存整个16位结果。
————————————————
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/wasser000/article/details/90575201
————————————————
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-11-21 23:45
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社