1、讲授教学方法:讲授PPT+练习练习37.1 7.1 定标与溢出处理定标与溢出处理7.1.1数的定标数的定标小数定标的概念小数定标的概念设定一个设定一个16位数的小数点处于该数中的哪一位位数的小数点处于该数中的哪一位可以表示不同大小和不同精度的小数可以表示不同大小和不同精度的小数Q表示法表示法表表7-1列出了一个列出了一个16位数的位数的16种种Q表示及它们所能表示的表示及它们所能表示的十进制数值范围十进制数值范围47.1.1 7.1.1 数的数的 定标定标表表71 Q表示及数值范围表示及数值范围Q表示表示十进制数十进制数X表示范围表示范围Q表示表示十进制数十进制数X表示范围表示范围Q15-1X
2、0.999 969 5Q7-256X255.992 187 5Q14-2X1.999 939 0Q6-512X511.980 437 5Q13-4X3.999 877 9Q5-1 024X1 023.968 75Q12-8X7.999 755 9Q4-2 048X2 047.937 5Q11-16X15.999 511 7Q3-4 096X4 095.875Q10-32X31.999 023 4Q2-8 192X8 191.75Q9-64X63.998 046 9Q1-16 384X16 383.5Q8-128X127.996 093 8Q0-32 768X32 76757.1.1 7.1.1
3、 数的定标数的定标不同的不同的Q所表示的数不仅范围不同,而且精度也不相同所表示的数不仅范围不同,而且精度也不相同Q越大,数值范围越小,但精度越高越大,数值范围越小,但精度越高Q越小,数值范围越大,但精度就越低越小,数值范围越大,但精度就越低例如,例如,Q0的数值范围是的数值范围是-32768到到+32767,其精度为,其精度为1;Q15的数值范围为的数值范围为-1到到0.9999695,精度为,精度为 1/32768=0.0000305167.1.1 7.1.1 数的定标数的定标在在C55x中,中,16位整数采用补码形式表示。每个采用位整数采用补码形式表示。每个采用Qi定标的定标的16位数用位
4、数用1个符号位、个符号位、i个小数位和个小数位和15-i个整数位来表示。个整数位来表示。b14b13b12b1b011/21/41/82-142-15MSB(最高位)LSB(最低位)Q15格式小数位权值b15b14b13b12b1b0211/21/42-132-14MSB(最高位)LSB(最低位)Q14格式小数位权值b15b14b13b12b1b02152142132122120MSB(最高位)LSB(最低位)Q0格式各位权值b15图图71 Q15、Q14及及Q0格式数据的各位权值格式数据的各位权值77.1.1 7.1.1 数的定标数的定标同样一个同样一个1616位数,若小数点设定的位置不同,
5、它所表示的数位数,若小数点设定的位置不同,它所表示的数也就不同。也就不同。表表7-2 同样的数在不同定标方式下所表示的具体数值同样的数在不同定标方式下所表示的具体数值Q格式格式十六进制数十六进制数二进制数二进制数十进制数十进制数Q02000H0010 0000 0000 0000b8 192Q142000H0010 0000 0000 0000b0.5Q152000H0010 0000 0000 0000b0.25Q0E000H1110 0000 0000 0000b8 192Q14E000H1110 0000 0000 0000b0.5Q15E000H1110 0000 0000 0000b
6、0.2587.1.2 7.1.2 溢出的处理方法溢出的处理方法1.溢出溢出如果算术运算结果超出寄存器所能表示的最大数就会出现溢如果算术运算结果超出寄存器所能表示的最大数就会出现溢出出因为因为16位定点位定点DSP的动态范围有限,所以在使用时必须注的动态范围有限,所以在使用时必须注意动态范围以防溢出意动态范围以防溢出溢出还与输入信号的特性和运算法则有关溢出还与输入信号的特性和运算法则有关97.1.2 7.1.2 溢出的处理方法溢出的处理方法2.C55x的溢出处理机制的溢出处理机制C55x有以下几种硬件特性可以处理溢出:有以下几种硬件特性可以处理溢出:保护位保护位C55x的每个累加器都有的每个累加
7、器都有8个保护位(个保护位(3932位),允位),允许连续许连续256次乘加操作而累加器不溢出次乘加操作而累加器不溢出溢出标志位溢出标志位C55x的每个累加器都有相关的溢出标志位,当累加器的每个累加器都有相关的溢出标志位,当累加器操作结果出现溢出时,这个标志位就会置位操作结果出现溢出时,这个标志位就会置位107.1.2 7.1.2 溢出的处理方法溢出的处理方法饱和方式位饱和方式位SATD和和SATASATD控制控制D单元的操作,单元的操作,SATA控制控制A单元的操作。单元的操作。如果如果SATD=1,当,当D单元发生溢出时,对单元发生溢出时,对D单元的结果进单元的结果进行饱和处理。不管饱和方
8、式位的值是什么,当累加器发生行饱和处理。不管饱和方式位的值是什么,当累加器发生溢出时,相应的溢出标志位都会被置位溢出时,相应的溢出标志位都会被置位A单元没有溢出标志位,但如果单元没有溢出标志位,但如果SATA=1,发生溢出时,发生溢出时,结果也会进行饱和处理结果也会进行饱和处理117.2 FIR7.2 FIR滤波器滤波器数字滤波器是数字滤波器是DSP的基本应用,有的基本应用,有2种基本类型:种基本类型:有限冲激响应滤波器有限冲激响应滤波器FIR无限冲激响应滤波器无限冲激响应滤波器IIR127.2.1 FIR7.2.1 FIR滤波器的基本结构滤波器的基本结构一个一个FIR滤波器的输出序列和输入序
9、列之间的关系,满足差分滤波器的输出序列和输入序列之间的关系,满足差分方程:方程:10Niiy nb x ni(71)137.2.2 FIR7.2.2 FIR滤波器的滤波器的CC语言编程实现语言编程实现例例7 7-9 9,FIRFIR滤波器的滤波器的C C语言编程实现。语言编程实现。/*fir.c 该程序用于实现该程序用于实现FIR滤波器滤波器*L滤波器的阶数滤波器的阶数*bi滤波器的系数滤波器的系数,i=0,1,L-1*xi输入信号向量输入信号向量,i=0,1,L-1;x0对应于当前值对应于当前值,x1对对应于上一采样值应于上一采样值*x_in 输入信号的当前值输入信号的当前值*y_out 输
10、出信号的当前值输出信号的当前值*/14float fir(float x_in,float*x,float*b,int L)float y_out;int i;/*把上一个采样时间的输入信号向量延迟一个单元把上一个采样时间的输入信号向量延迟一个单元,得到当前采样时间的输入信号向量得到当前采样时间的输入信号向量*/for(i=L-1;i0;i-)xi=xi-1;x0=x_in;y_out=0.0;/*完成完成FIR滤波滤波*/for(i=0;iL;i+)y_out=y_out+bi*xi;return y_out;15FIRFIR滤波器的实现涉及到两个基本操作,一个是输入信号向量与滤波器的实现涉
11、及到两个基本操作,一个是输入信号向量与滤波器系数向量的内积计算,另一个是输入信号向量的更新处理。滤波器系数向量的内积计算,另一个是输入信号向量的更新处理。在每个采样周期信号缓冲器都要更新一次,最老的采样在每个采样周期信号缓冲器都要更新一次,最老的采样x x(n nN+1N+1)被抛弃,而其他的信号则向缓冲器的右方移动一个单元,)被抛弃,而其他的信号则向缓冲器的右方移动一个单元,一个新的采样被插入存储单元,并被标记一个新的采样被插入存储单元,并被标记x x(n n)。)。167.3 IIR7.3 IIR滤波器滤波器IIR滤波器的优点:结构简单,运算量小,可以用较少的阶数滤波器的优点:结构简单,运
12、算量小,可以用较少的阶数获得很高的选择性。获得很高的选择性。IIR滤波器的缺点:具有相位特性差,存在稳定性问题。滤波器的缺点:177.3.1 7.3.1 二阶二阶IIRIIR滤波器的结构滤波器的结构二阶二阶IIR滤波器的输出可以写成:滤波器的输出可以写成:y(n)=b0 x(n)+b1x(n-1)+b2x(n-2)-a1y(n-1)-a2y(n-2)(74)18图图7 7-4 4 二阶二阶IIRIIR滤波器的直接型滤波器的直接型的实现的实现+Z-1Z-1+Z-1Z-1)1(nx)2(nx)y(n1)2(ny)(1zH)(2zH1a2a2b1b0b)(nx)(ny197.3.2 7.3.2 高阶
13、高阶IIRIIR滤波器的结构滤波器的结构在实际问题中,利用多个二阶在实际问题中,利用多个二阶IIR滤波器的串联或并联实现一滤波器的串联或并联实现一个高阶的个高阶的IIR滤波器。因为在串联实现中,一个参数的变化只滤波器。因为在串联实现中,一个参数的变化只影响一个环节内的极点;在并联实现中,一个参数的变化只影影响一个环节内的极点;在并联实现中,一个参数的变化只影响与其相关环节的极点。响与其相关环节的极点。20Z-1Z-1+)(nxk)(nwk)(nykka1ka2kb1kb2)1(nwk)2(nwk图图7 7-8 8 第第k k个二阶节个二阶节21)(zHk)2()1()()(21nwanwanx
14、nwkkkkkk)2()1()()(21nwbnwbnwnykkkkkk)()(1nynxkkKk,.,2,1)()(01nxbnx)()(nynyk对于对于,有,有其中,其中,注意:注意:(77)(78)(79)(710)(711)227.3.3 IIR7.3.3 IIR滤波器的滤波器的CC语言实现语言实现例例7 7-10,10,采用二维数组编写的采用二维数组编写的IIRIIR滤波器滤波器C C语言程序。语言程序。temp=xin;/*xin为为IIR滤波器的输入滤波器的输入*/for(k=0;kN_IIR;k+)/*N_IIR为为IIR滤波器二阶节的个数滤波器二阶节的个数w0k=temp-
15、a1k*w1k-a2k*w2k;/*这里这里,temp为本二阶节的输入为本二阶节的输入,也是上一级二阶节的输出也是上一级二阶节的输出*/temp=b0k*w0k+b1k*w1k+b2k*w2k;/*这里这里,temp为本二阶节的输出为本二阶节的输出,也是下一级二阶节的输入也是下一级二阶节的输入*/w2k=w1k;w1k=w0k;xoutput=temp;/*xoutput为为IIR滤波器的输出滤波器的输出*/aik(i=1,2)和)和bik(i=0,1,2)分)分别为第别为第k(k=0,1,K)个二阶)个二阶IIR滤波器滤波器环节的系数。环节的系数。wik(i=0,1,2)是第是第k个二阶个二
16、阶IIR滤波器环滤波器环节中对应于图节中对应于图7-10中中(m=0,1,2)的中间信的中间信号。号。237.4 7.4 快速傅立叶变换快速傅立叶变换FFTFFT7.4.1 FFT7.4.1 FFT算法原理算法原理快速傅里叶变换(快速傅里叶变换(FFT)是离散傅里叶变换()是离散傅里叶变换(DFT)的一种)的一种快速算法。通过快速算法。通过FFT算法,算法,DFT的计算量大大减少,运算时间的计算量大大减少,运算时间缩短缩短12个数量级。个数量级。DFT的变换公式为的变换公式为其中其中为旋转因子。为旋转因子。10()()NnkNnx kx n W0,1,1kN10)(1)(NknkNWkxNnx
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1