第7章应用程序设计 内容提要 ■71定标与溢出处理 ■72基础算术运算 73FIR滤波器 ■74IIR滤波器 75快速傅里叶变换(FFT) 76 DSPLIB的使用
第7章 应用程序设计 内容提要: ◼ 7.1 定标与溢出处理 ◼ 7.2 基础算术运算 ◼ 7.3 FIR滤波器 ◼ 7.4 IIR滤波器 ◼ 7.5 快速傅里叶变换(FFT) ◼ 7.6 DSPLIB的使用 3
7.1定标与溢出处理 ■711数的定标 712溢出的处理方法 ■713常用信号处理算法中的定标方法
7.1 定标与溢出处理 ◼ 7.1.1 数的定标 ◼ 7.1.2 溢出的处理方法 ◼ 7.1.3 常用信号处理算法中的定标方法 4
711数的定 1.小数定点数的定标( scale) 计算机有两种数据表示方法: 定点数表示法 浮点数表示法 定点数就是小数点位置固定的数。数据的表示形式是: 符号位整数部分.小数部分 C55xDSP是定点芯片,采用补码形式来表示无符号 数和有符号数
1.小数定点数的定标(scale) 计算机有两种数据表示方法: ➢ 定点数表示法 ➢ 浮点数表示法 定点数就是小数点位置固定的数。数据的表示形式是: 6 7.1.1 数的定标 符号位 整数部分.小数部分 C55x DSP是定点芯片,采用补码形式来表示无符号 数和有符号数
711数的定标 2.Q表示法 cPU在执行指令时,并不知道处理的数据是整数 还是小数,也不能指出小数点的位置。在编程时必 须由程序员指出一个数的小数点处于哪一位,这就 是定标(scae)的概念。 常用的定标方法是Q表示法,Q表示法用Q0,Q1… Qi,…,Q15分别表示小数点在D0位之后、D1位之 后、,Di位之后、,D15位之后。 严格地,是Qmn格式:n位小数,m位整数,1位符 号位,共m+n+1位二进制数。也称S表示法Smn
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 1~0.9999695 2-15 Q14在D14之后 14 2~1.9999390 2-14 Q13在D13之后2 13 4~3.9998779 2-13 Q12在D12之后3 12 8~7.9997559 12 Q11在D11之后 16~15.99 951 Q10在D10之后5 10 -32~31.9990234 222 10 Q9在D9之后6 64~63.9980437529 Q8在D8之后7 8 128~127.9960938 Q7在D7之后8 -256-2559921875 22 8—7 Q6在D6之后 6-512~511.980437526 Q5在D5之后10 5 1024~1023968752-5 Q4在D4之后11 2048~2047.9375 2 Q3在D3之后12 3 -4096~4095875 2-3 Q2在D2之后13 8192-8191.7522 O1在D1之后14 16384~16383.5 2-1 Q0在D0之后15 0 32768~32767 2
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到0999695精度为 1/32768=000003051 对定点数而言数值范围与精度是一对矛盾。一个变量 要想能够表示比较大的数值范围,必须以牺牲精度为代 价;而想提高精度,则数的表示范围就相应地减小。 在实际的定点算法中,应该根据具体问题进行折衷处 理,以达到最佳效果。 10
⚫不同的Q所表示的数不仅范围不同, 而且精度也不相同: ◆ Q越大, 数值范围越小, 但精度越高; ◆ Q越小, 数值范围越大,但精度就越低; 例如: Q0数值范围是-32768到+32767,其精度为1; Q15的数值范围为-1到0.9999695, 精度为 1/32768 = 0.00003051 ➢对定点数而言, 数值范围与精度是一对矛盾。一个变量 要想能够表示比较大的数值范围, 必须以牺牲精度为代 价; 而想提高精度, 则数的表示范围就相应地减小。 ➢在实际的定点算法中,应该根据具体问题进行折衷处 理, 以达到最佳效果。 10
在C55x中,16位整数采用补码形式表示。每个采用Q定标的 16位数用1个符号位、i个小数位和15-个整数位来表示。 Q15格式小数位权值 LSB MSB(最高位) (最低位) b15 b14 b13b 0 /21/41/8 15 Q14格式小数位权值 SB MSB(最高位) (最低位) 15 14 12 0 /21/4 14 Q0格式各位权值 SB MSB(最高位) (最低位) 15 014 b 3 b 215214213212
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位数,若小数点设定的位置不同,它 所表示的数也就不同。 定标不同 表72同样的数在不同定标方式下所表示的具体数值 Q格式十六进制数 二进制数 十进制数 Q02000H001000000000008192 Q142000H00100000000000 0.5 152000H00100000000000025 Q0E000H11100000008192 Q14E0Ou11000000 0.5 Q15|E000H 1110000000b0-0.25
表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定标与溢出处理 ■711数的定标 7.12溢出的处理方法 713常用信号处理算法中的定标方法 TMS320C55X DSP Programmer's Guide Preliminary Draft(SPRU376A, 2001) 5.5 Methods of Handling overflows
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.12溢出的处理方法 1.溢出 如果算术运算结果超出寄存器所能表示的最大 数就会出现溢出; 因为16位定点DSP的动态范围有限,所以在使 用时必须注意动态范围以防溢出; 溢出还与输入信号的特性和运算法则有关。 14
7.1.2 溢出的处理方法 ⚫如果算术运算结果超出寄存器所能表示的最大 数就会出现溢出; ◆因为16位定点DSP的动态范围有限,所以在使 用时必须注意动态范围以防溢出; ⚫溢出还与输入信号的特性和运算法则有关 。 1. 溢出 14