理解Q格式与定点DSP运算

理解Q格式与定点DSP运算

※Q格式:小数点位于第 n 位元之右侧,称为Qn 格式。例如;

16 位元二进位无号数:0100 0010 1000 0001

à在Q0格式下其表示的是:2^14+2^9+2^7+2^0=17025(d)

à在Q8格式下其表示的是:2^6+2^1+2^-1+2^-8=66.50390~(d)

à在Q16格式下其表示的是:2^-2+2^-7+2^-9+2^-16=0.25978~(d)

进行加法或减法时,Q格式并不会影响运算法则,两个Q8 格式的小数相

加,所得到的数值仍是Q8格式。两个Q6格式相减,所得到的数值仍是Q6格

式。因此在定点数之加减运算并不因Q格式不同而有差异。不过可能会产生溢位(overflow),而且不同格式的数值不能直接相加减。

乘法时,Q格式便会影响运算结果。两个16 位元数做乘法,会得到32 位元数。此时只能取16位元。

àQ0 格式:取运算结果最低的16 位元,删除较高的16 位元。

àQ16 格式:取运算结果最高的16 位元,删除较低的16 位元。

、、-----------------------------------------------------------------------------------------------------------------------------------------

Q格式的运算

1> 定点加减法:须转换成相同的Q格式才能加减

2> 定点乘法:不同Q格式的数据相乘,相当于Q值相加

3> 定点除法:不同Q格式的数据相除,相当于Q值相减

4> 定点左移:左移相当于Q值增加

5> 定点右移:右移相当于Q减少

、、----------------------------------------------------------------------------------------------------------------------------------------------------

那么是不是说定点DSP芯片就不能处理各种小数呢?当然不是。这其中的关键就是由程序员来确定一个数的小数点处于16位中的哪一位。这就是数的定标。通过设定小数点在16位数中的不同位置,就可以表示不同大小和不同精度的小数了。数的定标有Q表示法和S表示法两种。表1.1列出了一个16位数的16种Q表示、S表示及它们所能表示的十进制数值范围。

Q 表示 S 表示 十进制数表示范围

Q15 S0.15 -1≤x≤0.9999695

Q14 S1.14 -2≤x≤1.9999390

Q13 S2.13 -4≤x≤3.9998779

Q12 S3.12 -8≤x≤7.9997559

Q11 S4.11 -16≤x≤15.9995117

Q10 S5.10 -32≤x≤31.9990234

Q9 S6.9 -64≤x≤63.9980469

Q8 S7.8 -128≤x≤127.9960938

Q7 S8.7 -256≤x≤255.9921875

Q6 S9.6 -512≤x≤511.9804375

Q5 S10.5 -1024≤x≤1023.96875

Q4 S11.4 -2048≤x≤2047.9375

Q3 S12.3 -4096≤x≤4095.875

Q2 S13.2 -8192≤x≤8191.75

Q1 S14.1 -16384≤x≤16383.5

Q0 S15.0 -32768≤x≤32767

浮点数与定点数的转换关系可表示为:

浮点数(x)转换为定点数(xq):xq=(int)x* 2 Q

定点数(xq)转换为浮点数(x):x=(float)xq*2 -Q

例如,浮点数 x=0.5,定标 Q=15,则定点数 xq=L0.5*32768J=16384,式中 LJ 表示下取整。反之,

一个用 Q=15 表示的定点数 16384,其浮点数为 16384 *2^-15=16384/32768=0.5。浮点数转换为定点

数时,为了降低截尾误差,在取整前可以先加上 0.5。

浮点转为定标 是乘法 简称浮沉

相关推荐

合作伙伴