DSP 芯片的定点运算---Q 格式(转)
2008-09-03 15:47
DSP 芯片的定点运算
1. 数据的溢出:
1> 溢出分类:
上溢(overow):
下溢(underow)
2>溢出的结果:
Max
Min
Min Max
unsigned char 0 255
signed char -128 127
unsigned int 0 65535
signed int -32768 32767
上溢在圆圈上按数据逆时针移动;下溢在圆圈上顺时钟移动。
例:signed int :32767+1=-32768; -32768-1=32767
unsigned char:255+1=0; 0-1=255
3>为了避免溢出的发生,一般在 DSP 中可以设置溢出保护功能。当发生溢出时,自动
将结果设置为最大值或最小值。
2. 定点处理器对浮点数的处理:
1> 定义变量为浮点型(oat,double),用 C 语言抹平定点处理器和浮点处理
器的区别,但是程序的代码庞大,运算速度也慢。
2> 放大若干倍表示小数。比如要表示精度为 0.01 的变量,放大 100 倍去运算,
运算完成后再转化。但是这个做法比较僵硬,如要将上面的变量重新定义成
0.001 精度,又需要放大 1000 倍,且要重新编写整个程序,考虑溢出等问
题。
3> 定标法:Q 格式:通过假定小数点位于哪一位的右侧,从而确定小数的精
度。
Q0:小数点在第 0 位的后面,即我们一般采用的方法
Q15 小数点在第 15 位的后面,0~14 位都是小数位。
转化公式:Q=(int)(F×pow(2,q))
F=(oat)(Q×pow(2,-q))
3. Q 格式的运算
1> 定点加减法:须转换成相同的 Q 格式才能加减
2> 定点乘法:不同 Q 格式的数据相乘,相当于 Q 值相加
3> 定点除法:不同 Q 格式的数据相除,相当于 Q 值相减
4> 定点左移:左移相当于 Q 值增加
5> 定点右移:右移相当于 Q 减少
4. Q 格式的应用格式
实际应用中,浮点运算大都时候都是既有整数部分,也有小数部分的。所以要选
择一个适当的定标格式才能更好的处理运算。一般用如下两种方法: