当前位置:
文档之家› 第1章(2) DSP的数字运算基础
第1章(2) DSP的数字运算基础
2013-7-15
19
1.6.2 乘法
X定标Qx,Y定标Qy,Z定标Qz
按照我们的运算z x y Z ( X Y ) 2
由于Z定标Qz,
( Qx Qy )
z x y Z q ( X q Yq ) 2
2013-7-15
Qz ( Qx Q y )
20
例 x=18.4,Qx=10, y=36.8, Qy=9, 求z=x*y,要求Qz=5 按前面的公式将浮点数xy转换成特定定标的定点数
计算z=x+y
Qy<Qx, 将Qy调整为15,数值变为 y=y × 2(Qx-Qy)=25395×2(Qx-Qy)= 25395×2(15-13)= 101580 Z=x+y=117964-------Qz=15 如果对z的Q有要求,则再按要求调整
2013-7-15 18
例如要求Qz=13 =13-15=-2 z=117964×2 ΔQ =117964×2-2 = 29491 如果结果超过16位,实际上是产生了溢出,如果不采取措施, 运算精度会变差,甚至出现错误。 DSP中累加器是32位,可以保留32位运算结果
x ( float) X q 2
Q
计算,例如 Q=15 (Q15), 0100110011001100B,当作整数计算
22 23 26 27 210 211 214 19660
等值得十进制数 19660 2-15 0.599975585
2013-7-15 11
对于Q15, 它是0.25
对于Q8,
2013-7-15
它是32
5
Q越大,表示的数值范围越小,数的精度越高。 数的表示范围
对于正数: (2 1) 2
15
Q
对于负数: 2 2
15
Q
数的表示精度: Q 2
2013-7-15
6
2. S 表示法
S后面明确标出整数位数和小数位数,整数和小数用小数点分隔。 例如 S3.12 —— 小数点左边3位,右边12位。
对于8192,用S法表示,可以是 S15.0
0010 0000 0000 0000B 对于0.25,用S法表示,可以表示为 S0.15 0010 0000 0000 0000B
2013-7-15
7
1.5.2 数的转换
包括定点数与浮点数之间的转换 定点二进制与十进制数之间的转换
2013-7-15
8
1.定点与浮点数之间的转换
Xq=18841,Yq=18841
18841*18841=354983281 Zq=(18841*18841)*25-(10+9)=21666 Z=Zq*2-Qz=21666*2-5=677.06
2013-7-15
21
1.6.3 除法运算
对于数x,y , X定标Qx,Y定标Qy,Z定标Qz
z x/ y Zq Xq 2
2013-7-15
15
舍入处理的应用
对DSP芯片的乘法运算,常会用到舍入处理。 例如 x和y都是定标为Q=15的带符号数,进行乘法运算,其结 果z也采用Q=15的16位带符号数表示。 (1)x与y相乘,结果放在32位的累加器中,由于Qx=Qy=15, 故Qz=15+15=30 (2)将累加器的数左移一位(乘法后累加器有两个符号位,左 移保留一个符号为),则累加器中的数Qz=31
(1)浮点数 x 转换为定点数XQ
X q (int)x 2
Q
例如 浮点数 x=0.6,定标Q=15,则对应的定点表示方式
X q 0.6 215 196608 19660 4CCCH .
定标不同,得到的数的代码不同。
取下确界
2013-7-15
9
(2)定点数转换为浮点数
对于16位的定点DSP芯片,16位二进制位,最高位表示数的符 号,剩余15位表示数的值。
Q表示法就是以Q做标记标注出小数点右边二进制位的位数。
例如 Q15——表示小数点右边有15位——全部是小数 Q8——小数点右边有8位 一个二进制(十六进制)数,定标不同,它的值是不同的。 例如 2000H,对于 Q0, 它是8192
第1章 第二部分 DSP的数字运算基础
2013-7-15
1
1.4 算法概述
DSP芯片的主要功能——快速进行数值运算。 DSP芯片——包括定点芯片、浮点芯片两大类。 定点芯片——操作数一般是定点整数。 实际上的数据——既有整数,又有小数。 定点DSP芯片如何处理小数?
2013-7-15
2
1.5 定点的基本概念
Qz Qx Q y
Yq
2013-7-15
22
指令
SSBX RSBX
SXM SXM
;置位SXM ;清除SXM
13
2013-7-15
1.5.4 舍入与截尾
对于一个数x进行取整操作 (1)截尾处理 truncation 简写为trunc 直接舍去小数部分 (2)#43;0.5,然后再舍去小数部分——四舍五入 舍入处理的精度高于截尾处理
1.5.1 数的定标 一个16位的定点数,在机器内部,它用补码表示。 在处理小数时,由程序设计者确定小数点的位置。 所谓定标,就是确定小数点的位置。 在机器内部,它还是一个整数。
如何表示小数点位置呢。
2013-7-15
3
小数点的位置有两种表示方法 Q表示法和S表示法。
2013-7-15
4
1. Q表示法。
(2)直接用Q确定小数点的位置,再按照二进制转换为十进制 的方法转换。 0 100 1100 1100 1100B 小数点位置
2 2 2 2 2 2 0.599975585
1
4
5
8
9
12
2
13
2013-7-15
12
1.5.3 符号扩展
对于16位定点DSP芯片,操作数一般为16位,累加器为32位, 因此需要对操作数进行符号扩展 把数的符号位扩展到累加器的高位。 对于C54**系列DSP处理器,可以通过指令设置是否进行符号 位扩展 ——设置ST1寄存器的SXM位,=1,进行符号位扩展 =0,不进行扩展
(3)为将结果表示为16位,可以使用
截尾处理——直接将低16位截尾,保留高16位。 舍入处理——在低16位的最高位加1,然后再做截尾处理
2013-7-15 16
1.6 定点运算基本原理
包括定点加、减法 定点乘、除法 四种运算
2013-7-15
17
1.6.1 加减法
需要保证两个数的Q值相同,也就是小数点位置对齐。 X、Y两个数Q值不同,则需要进行调整 为保证精度,将Q值小的数的Q值向大的Q值调整,这时数值要 对应变化——乘以2△Q。 例如 x=16384,Qx=15, y=25395,Qy=13
2013-7-15
14
例: x=123.3,y=123.7, 分别对x,y进行截尾或舍入处理
截尾处理:
trunc(x)=trunc(123.3)=123
trunc(y)=trunc(123.7)=123
舍入处理: round(x)=round(123,3)=trunc(123.3+0.5)=trunc(123.8)=123 round(y)=round(123.7)=trunc(123.7+0.5)=trunc(124.2)=124
XQ转换为浮点数x
x ( float) X q 2
Q
例如 如果定标Q=15的定点数XQ=19660,则对应的浮点数
x 19660 2
如果Q=10,则
15
0.599975585
x 19660 2
2013-7-15
10
10
2。定点数转换为十进制数
有两种方法 (1)先按整数计算出对应的十进制数,再按照定标值,利用公 式