第7章应用程序设计 内容提要: ■7.1定标与溢出处理 ■7.2基础算术运算 ■7.3FIR滤波器 ■7.4IIR滤波器 ■7.5快速傅里叶变换(FFT) ■7.6 DSPLIB的使用 3
第7章 应用程序设计 内容提要: ◼ 7.1 定标与溢出处理 ◼ 7.2 基础算术运算 ◼ 7.3 FIR滤波器 ◼ 7.4 IIR滤波器 ◼ 7.5 快速傅里叶变换(FFT) ◼ 7.6 DSPLIB的使用 3
7.1 定标与溢出处理 ■7.1.1数的定标 ■7.1.2溢出的处理方法 ■7.1.3常用信号处理算法中的定标方法 4
7.1 定标与溢出处理 ◼ 7.1.1 数的定标 ◼ 7.1.2 溢出的处理方法 ◼ 7.1.3 常用信号处理算法中的定标方法 4
7.1.1数的定标 1.小数定点数的定标(scale) 计算机有两种数据表示方法: > 定点数表示法 > 浮点数表示法 定点数就是小数点位置固定的数。数据的表示形式是: 符号位整数部分.小数部分 C55xDSP是定点芯片,采用补码形式来表示无符号 数和有符号数。 6
1.小数定点数的定标(scale) 计算机有两种数据表示方法: ➢ 定点数表示法 ➢ 浮点数表示法 定点数就是小数点位置固定的数。数据的表示形式是: 6 7.1.1 数的定标 符号位 整数部分.小数部分 C55x DSP是定点芯片,采用补码形式来表示无符号 数和有符号数
7.1.1数的定标 2.Q表示法 CPU在执行指令时,并不知道处理的数据是整数 还是小数,也不能指出小数点的位置。在编程时必 须由程序员指出一个数的小数点处于哪一位,这就 是定标(scale)的概念。 常用的定标方法是Q表示法,Q表示法用Q0,Q1,· Qi,,Q15分别表示小数点在D0位之后、D1位之 后、.Di位之后、.D15位之后。 严格地,是Qm.n格式:n位小数,m位整数,1位符 号位,共m+n+1位二进制数。也称S表示法Sm.n 7
2. Q表示法 CPU在执行指令时,并不知道处理的数据是整数 还是小数,也不能指出小数点的位置。在编程时必 须由程序员指出一个数的小数点处于哪一位,这就 是定标(scale)的概念。 常用的定标方法是Q表示法, Q表示法用Q0, Q1,… Qi, …, Q15 分别表示小数点在D0位之后、D1位之 后、…Di位之后、…D15位之后。 7 7.1.1 数的定标 严格地, 是Qm.n 格式: n位小数, m位整数, 1位符 号位, 共m+n+1位二进制数。 也称S表示法Sm.n
表7-1Q表示及数值范围 Q表示小数点位置整数位小数位 十进制表示范围 精度幂 015 在D15之后 0 15 -10.9999695 2-15 Q14 在D14之后 1 14 -2≈1.9999390 2-14 Q13 在D13之后 2 13 -43.9998779 2-13 012 在D12之后 3 12 -8~7.9997559 2-12 011 在D11之后 4 11 -16~15.9995117 2-11 010 在D10之后 5 10 -3231.9990234 2-10 Q9 在D9之后 6 9 -6463.99804375 2-9 Q8 在D8之后 7 8 -128127.9960938 28 Q7 在D7之后 8 7 -256-255.9921875 27 Q6 在D6之后 9 6 -512~511.9804375 2-6 Q5 在D5之后 10 5 -1024-1023.96875 2-5 Q4 在D4之后 11 4 -20482047.9375 24 Q3 在D3之后 12 3 -40964095.875 2-3 Q2 在D2之后 13 2 -8192~8191.75 22 Q1 在D1之后 14 1 -1638416383.5 2-1 Q0 在D0之后 15 0 -32768-32767 20
Q表示 小数点位置 整数位 小数位 十进制表示范围 精度--幂 Q15 在D15之后 0 15 -1~0.9999695 2 -15 8 Q13 在D13之后 2 13 -4~3.9998779 2 -13 Q12 在D12之后 3 12 -8~7.9997559 2 -12 Q11 在D11之后 4 11 -16~15.9995117 2 -11 Q10 在D10之后 5 10 -32~31.9990234 2 -10 Q9 在D9之后 6 9 -64~63.99804375 2 -9 Q8 在D8之后 7 8 -128~127.9960938 2 -8 Q7 在D7之后 8 7 -256~255.9921875 2 -7 Q6 在D6之后 9 6 -512~511.9804375 2 -6 Q5 在D5之后 10 5 -1024~1023.96875 2 -5 Q4 在D4之后 11 4 -2048~2047.9375 2 -4 Q3 在D3之后 12 3 -4096~4095.875 2 -3 Q2 在D2之后 13 2 -8192~8191.75 2 -2 Q1 在D1之后 14 1 -16384~16383.5 2 -1 Q0 在D0之后 15 0 -32768~32767 2 0 Q14 在D14之后 1 14 -2~1.9999390 2 -14 表7-1 Q表示及数值范围
●不同的Q所表示的数不仅范围不同,而且精度也不相同: ◆Q越大,数值范围越小,但精度越高; ◆Q越小,数值范围越大但精度就越低; 例如:Q0数值范围是-32768到+32767,其精度为1; Q15的数值范围为-1到0.9999695,精度为 1/32768=0.00003051 对定点数而言,数值范围与精度是一对矛盾。一个变量 要想能够表示比较大的数值范围,必须以栖牲精度为代 价;而想提高精度,则数的表示范围就相应地减小。 在实际的定点算法中,应该根据具体问题进行折衷处 理,以达到最佳效果。 10
⚫不同的Q所表示的数不仅范围不同, 而且精度也不相同: ◆ Q越大, 数值范围越小, 但精度越高; ◆ Q越小, 数值范围越大,但精度就越低; 例如: Q0数值范围是-32768到+32767,其精度为1; Q15的数值范围为-1到0.9999695, 精度为 1/32768 = 0.00003051 ➢对定点数而言, 数值范围与精度是一对矛盾。一个变量 要想能够表示比较大的数值范围, 必须以牺牲精度为代 价; 而想提高精度, 则数的表示范围就相应地减小。 ➢在实际的定点算法中,应该根据具体问题进行折衷处 理, 以达到最佳效果。 10
。在C55x中,16位整数采用补码形式表示。每个采用Qi定标的 16位数用1个符号位、i个小数位和15-i个整数位来表示。 Q15格式小数位权值 LSB MSB(最高位) (最低位) b15 b14 b13 b12 ●● bi bo 一1 1/2 1/4 1/8 2-14 215 Q14格式小数位权值 LSB MSB(最高位) (最低位) b15 b14 b13 b12 b1 bo -21·1/2 1/4 2-13 2-14 Q0格式各位权值 LSB MSB(最高位) (最低位) b15 b14 b13 b12 ●●● b1 bo -215 214 213 212 21 20 11
b14 b13 b12 … b1 b0 -1 1/2 1/4 1/8 … 2-14 2-15 MSB(最高位) LSB (最低位) Q15格式小数位权值 b15 ⚫在C55x中, 16位整数采用补码形式表示。每个采用Qi定标的 16位数用1个符号位、i个小数位和15-i个整数位来表示。 11 b14 b13 b12 … b1 b0 -215 214 213 212 … 21 20 MSB(最高位) Q0格式各位权值 b15 LSB (最低位) b14 b13 b12 … b1 b0 -2 1 1/2 1/4 … 2-13 2-14 MSB(最高位) Q14格式小数位权值 b15 LSB (最低位) . .
·同一个16位数,若小数点设定的位置不同,它所 表示的数也就不同。 定标不同 表7-2同一的数在不同定标方式下所表示的具体数值 Q格式十六进制数 二进制数 十进制数 Q0 2000H 0010000000000000b 8192 Q14 2000H 0010000000000000b 0.5 Q15 2000H 0010000000000000b 0.25 Q0 E000H 1110000000000000b -8192 Q14 E000H 1110000000000000b -0.5 Q15 E000H 1110000000000000b -0.25 12
表7-2 同一的数在不同定标方式下所表示的具体数值 ⚫ 同一个16位数,若小数点设定的位置不同,它所 表示的数也就不同。 Q格式 十六进制数 二进制数 十进制数 Q0 2000H 0010 0000 0000 0000b 8192 Q14 2000H 0010 0000 0000 0000b 0.5 Q15 2000H 0010 0000 0000 0000b 0.25 Q0 E000H 1110 0000 0000 0000b -8192 Q14 E000H 1110 0000 0000 0000b -0.5 Q15 E000H 1110 0000 0000 0000b -0.25 12 定标不同 . . . . .
7.1 定标与溢出处理 ■7.1.1数的定标 ■7.1.2溢出的处理方法 ■7.1.3常用信号处理算法中的定标方法 TMS320C55x DSP Programmer's Guide Preliminary Draft (SPRU376A.2001) 5.5 Methods of Handling Overflows 13
7.1 定标与溢出处理 ◼ 7.1.1 数的定标 ◼ 7.1.2 溢出的处理方法 ◼ 7.1.3 常用信号处理算法中的定标方法 13 5.5 Methods of Handling Overflows TMS320C55x DSP Programmer’s Guide Preliminary Draft (SPRU376A, 2001年)
7.1.2溢出的处理方法 1.溢出 ●如果算术运算结果超出寄存器所能表示的最大 数就会出现溢出; ◆因为16位定点DSP的动态范围有限,所以在使 用时必须注意动态范围以防溢出 ●溢出还与输入信号的特性和运算法则有关。 14
7.1.2 溢出的处理方法 ⚫如果算术运算结果超出寄存器所能表示的最大 数就会出现溢出; ◆因为16位定点DSP的动态范围有限,所以在使 用时必须注意动态范围以防溢出; ⚫溢出还与输入信号的特性和运算法则有关 。 1. 溢出 14