数字信号处理算法的DSP实现 《DSP原理及实践应用》电子课件-PPT课件_第1页
数字信号处理算法的DSP实现 《DSP原理及实践应用》电子课件-PPT课件_第2页
数字信号处理算法的DSP实现 《DSP原理及实践应用》电子课件-PPT课件_第3页
数字信号处理算法的DSP实现 《DSP原理及实践应用》电子课件-PPT课件_第4页
数字信号处理算法的DSP实现 《DSP原理及实践应用》电子课件-PPT课件_第5页
已阅读5页,还剩58页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第五章第五章 数字信号处理算法的数字信号处理算法的DSP实现实现第第5 5章章 数字信号处理算法的数字信号处理算法的DSPDSP实实现现 ?DSP ?DSP原理及实践应用原理及实践应用? ?电子课件电子课件第五章第五章 数字信号处理算法的数字信号处理算法的DSP实现实现第五章第五章 数字信号处理算法的数字信号处理算法的DSP实现实现第五章第五章 数字信号处理算法的数字信号处理算法的DSP实现实现第五章第五章 数字信号处理算法的数字信号处理算法的DSP实现实现z-1z-1 +x(n)y(n)x(n-1)x(n-N+1)b0b1bN-2bN-1z-1图5-1 FIR滤波器结构图)(nx1Z)(ny

2、由上图可见,FIR滤波算法实际上是一种乘法累加运算,它不断地输入 ,经延时 后,作乘法累加,再输出滤波结果 。第五章第五章 数字信号处理算法的数字信号处理算法的DSP实现实现 FIR滤波器的最主要特点是没有反响回路,因此它是无条件稳定系统。它的单位冲激响应 是一个有限长序列。如果 是实数,且满足偶对称或奇对称的条件, 即 或 ,那么FIR滤波器具有线性相位特性。)(nh)nNhnh1()()nNhnh1()()(nh第五章第五章 数字信号处理算法的数字信号处理算法的DSP实现实现 5.1.2 FIR滤波器系数的滤波器系数的MATLAB设计设计 MATLAB是美国Mathworks公司于1984

3、年正式推出的一套高性能的数值计算和可视化软件,适用于工程应用各领域的分析设计和复杂计算。MATLAB中的工具箱包含了许多实用程序,如数值分析、矩阵运算、数字信息处理、建模和系统控制等。滤波器的设计就包含在该工具箱的信号处理工具箱中,它提供了多种FIR滤波器设计方法。FIR滤波器分为低通滤波、高通滤波、带通滤波和带阻滤波。下面以fir1为例说明FIR滤波器的设计方法。第五章第五章 数字信号处理算法的数字信号处理算法的DSP实现实现 (1)fir1函数函数 fir1用来实现经典的加窗线性相位用来实现经典的加窗线性相位FIR数字滤波器。语法格数字滤波器。语法格式如下:式如下: b = fir1(n,

4、Wn) b = fir1(n,Wn,ftype) b = fir1(n,Wn,window) b = fir1(n,Wn,ftype,window) 式中,式中,n为滤波器的阶数;为滤波器的阶数;Wn为滤波器的截止频率,为滤波器的截止频率,Wn介于介于0和和1之间,之间,1对应于对应于Nyquist频率,即倍的采样频率,频率,即倍的采样频率,假设假设Wn是一个二维失量,表示为是一个二维失量,表示为Wn = w1 w2,那么滤波,那么滤波器为带通或带阻滤波器;器为带通或带阻滤波器;ftype参数表示滤波器的类型,为参数表示滤波器的类型,为 high 时表示截止频率为时表示截止频率为Wn的高通滤波

5、器,为的高通滤波器,为stop时表示时表示带阻滤波器;带阻滤波器;window参数用来指定滤波器采用的窗函数参数用来指定滤波器采用的窗函数类型,其默认值为汉明类型,其默认值为汉明Hamming窗。窗。第五章第五章 数字信号处理算法的数字信号处理算法的DSP实现实现使用fir1函数可设计低通,高通,带通和带阻滤波器。滤波器的系数包含在返回值b中,有n个系数,可表示为)1(1) 1() 1 ()0()(nznbzbbzb第五章第五章 数字信号处理算法的数字信号处理算法的DSP实现实现 采用汉明窗设计低通FIR滤波器b = fir1(n,Wn) 采用汉明窗设计高通FIR滤波器b = fir1(n,W

6、n,high) 采用汉明窗设计带通FIR滤波器b = fir1(n,w1 w2) 采用汉明窗设计带阻FIR滤波器b = fir1(n,w1 w2, stop) 采用其他窗口函数设计FIR滤波器第五章第五章 数字信号处理算法的数字信号处理算法的DSP实现实现 使用window参数,可以用其他窗口函数设计出各种加窗滤波器。可采用的窗口函数有Boxcar,Hamming,Bartlett,Blackman,Kasier和Chebwin等,未指定窗口参数时默认为汉明窗。例如,采用Bartlett窗设计带通FIR滤波器,语法格式为b = fir1(n, w1 w2,Bartlett(n+1)第五章第五章

7、 数字信号处理算法的数字信号处理算法的DSP实现实现 (2)设计实例设计实例 【例5-1】 设计一个FIR低通滤波器,其阶数为10,截止频率为10Hz。构造一个输入信号,它由频率8Hz和20Hz两个正弦信号叠加而成,设采样频率为fs=50Hz。用设计的低通滤波器对输入序列进行滤波。第五章第五章 数字信号处理算法的数字信号处理算法的DSP实现实现源代码程序如下:n=10;b=fir1(n,0.4);f1=8;f2=20;fs=50;pi=3.14159;M=200 x=zeros(M);y=zeros(M);for i=1:M x(i,1)=sin(2.0*pi*i*f1/fs)+sin(2.0

8、*pi*i*f2/fs);%输入信号end;subplot(2,1,1),plot(x);%显示输入信号for i=1:M for j=1:n+1 if (i-j+1)0 y(i,1)=y(i,1)+b(1,j)*x(i-j+1);%输出信号 end; end;end;subplot(2,1,2),plot(y);%显示输出信号程序接右边第五章第五章 数字信号处理算法的数字信号处理算法的DSP实现实现 上述程序运行后,得到输入信号和输出信号的波形图如下图5-2 FIR低通滤波器实例从上图可以观察到输出信号中只含有频率为8Hz的低频信号,而20HZ的高频信号已被滤波器过滤掉。第五章第五章 数字信

9、号处理算法的数字信号处理算法的DSP实现实现 滤波器的C语言程序设计及仿真 滤波器的单位冲激响应可通过以下公式进行计算。 低通滤波器: 高通滤波器: 式中,nffnhscn2 )/(2sinnffnnhscn2 )/(2sin)(0, 00, 1)(nnn第五章第五章 数字信号处理算法的数字信号处理算法的DSP实现实现 带通滤波器: 带阻滤波器:nffnnffnhscscn2 )/(2sin2 )/(2sin122 )/(2sin2 )/(2sin)(12nffnnffnnhscscn第五章第五章 数字信号处理算法的数字信号处理算法的DSP实现实现 【例5-2】 在CCS开发平台中用C语言实现

10、FIR高通滤波器,其阶数为30,截止频率为10Hz。构造一个输入信号,它由频率4Hz和12Hz两个正弦信号叠加而成,设采样频率为fs=50Hz。用设计的高通滤波器对输入序列进行滤波。第五章第五章 数字信号处理算法的数字信号处理算法的DSP实现实现编写C语言源代码文件,程序清单如下:#include math.hfloat h31;/* 冲击响应系数序列 */float sine500;/*输入序列*/float y500;/*输出序列*/ main()float pi;/* 圆周率pi */float wc=0.2; /* (截止频率/采样频率) */int n=31;/* 滤波器的阶数 */

11、int k,i;int a,b;第五章第五章 数字信号处理算法的数字信号处理算法的DSP实现实现for(i=0;in;i+) hi=0; /* 参数初始化 */ pi=4.0*atan(1.0); a=(n-1)/2; pi=4.0*atan(1.0); for(i=0;in;i+) /* 高通滤波器的冲激响应 */ if(i=a) hi=1-wc; else b=i-a; hi=-1*sin(pi*b*wc)/(pi*b); 第五章第五章 数字信号处理算法的数字信号处理算法的DSP实现实现 /*滤波*/ for(i=0;i500;i+) sinei=sin(2.0*pi*4*i/50)+si

12、n(2.0*pi*12*i/50);/*输入序列*/ yi=0;/*输出序列初始化*/ for(i=0;i500;i+) for(k=0;kn;k+) if(i-k) PROG PAGE 0 .cinit PROG PAGE 0 .switch PROG PAGE 0 vect 3f80h PAGE 0 .data DATA PAGE 1 .bss DATA PAGE 1 .const DATA PAGE 1 .sysmem DATA PAGE 1 .stack DATA PAGE 1第五章第五章 数字信号处理算法的数字信号处理算法的DSP实现实现运行应用程序,观察波形将上述的三个文件添加到工

13、程工程中,之后对工程工程中的文件进行编译,汇编,链接,生成可以在目标系统中运行的可执行的输出文件。选择View-Graph-Time/Frequency命令,在翻开的图形参数设置对话框中设置参数,就可显示出高通滤波器的频谱响应,输入序列,输出序列。按图5-3所示进行图形参数对话框中的参数设置,生成的高通滤波器的频谱响应如图5-4所示。第五章第五章 数字信号处理算法的数字信号处理算法的DSP实现实现图5-3 高通滤波器的频谱响应的图形参数设置对话框第五章第五章 数字信号处理算法的数字信号处理算法的DSP实现实现图5-4 高通滤波器的频谱响应第五章第五章 数字信号处理算法的数字信号处理算法的DSP

14、实现实现图5-5 FIR高通滤波器输入信号的时域波形第五章第五章 数字信号处理算法的数字信号处理算法的DSP实现实现 图5-5为输入信号序列的时域波形,它由频率4Hz和12Hz两个正弦信号叠加而成。图5-6为输入信号的频域波形,由图5-6可观察出输入信号包含两个信号,一个信号的峰值点所对应的横坐标值为,它所对应的频率为0.8*fs=0.8*50=4Hz,另一个信号的峰值点所对应的横坐标值为,它所对应的频率为0.24*fs=0.24*50=12Hz。第五章第五章 数字信号处理算法的数字信号处理算法的DSP实现实现图5-6 FIR高通滤波器输入信号的频域波形第五章第五章 数字信号处理算法的数字信号

15、处理算法的DSP实现实现图5-7 FIR高通滤波器输出信号的时域波形第五章第五章 数字信号处理算法的数字信号处理算法的DSP实现实现 图5-7为输出信号序列的时域波形。图5-8为输出信号的频域波形,由图5-8可观察出输出信号仅由一个正弦信号构成,信号的峰值点所对应的横坐标值为,它所对应的频率为0.24*fs=0.24*50=12Hz。通过所设计的高通滤波器将输入信号中的低频信号滤掉了,而仅保存了高频信号。第五章第五章 数字信号处理算法的数字信号处理算法的DSP实现实现图5-8 FIR高通滤波器输出信号的频域波形第五章第五章 数字信号处理算法的数字信号处理算法的DSP实现实现 LMS自适应滤波器

16、是使滤波器的输出信号与期望响应之间的误差的均方值为最小,因此称为最小均方LMS自适应滤波器。 5.2.1 LMS算法的原理 图5-9 自适应线性组合器5.2 LMS自适应滤波算法的实现第五章第五章 数字信号处理算法的数字信号处理算法的DSP实现实现 构成自适应数字滤波器的根本部件是自适应线性组合器,如图5-9所示。设线性组合器的 个输入为 , 其输出 是这些输入加权后的线性组合,即 定义权向量W为m)(,) 1(mkxkx)(kymiiikxwky1)()(T21,mwwwW第五章第五章 数字信号处理算法的数字信号处理算法的DSP实现实现且定义T )(,),1()(mkxkxkX在图5-9中,

17、令)(kd代表所期望的响应,并定义误差信号miiikxwkdkykdk1)()()()()(第五章第五章 数字信号处理算法的数字信号处理算法的DSP实现实现将误差写成向量形式WkXkdkXWkdkTT)()()()()(误差平方为WKXkXWWkXkdkdkTTT)()()()(2)()(22上式两边取数学期望后,得均方误差WkXkXEWWkXkdEkdEkETTT)()()()(2)()(22第五章第五章 数字信号处理算法的数字信号处理算法的DSP实现实现TxdR)()(kXkdERTTxdXXR)()(kXkXERTXXWRWWRkdEkEXXTTxd2)()(22定义互相关函数行向量定义

18、自相关函数矩阵那么均方误差可表述为这说明,均方误差是权系数向量W的二次函数,它是一个中间向上凹的抛物形曲面,是具有唯一最小值的函数。调节权系数使均方误差为最小,相当于沿抛物形曲面下降找最小值。可以用梯度来求该最小值。将均方误差对权系数W求导数,得到均方误差函数的梯度。第五章第五章 数字信号处理算法的数字信号处理算法的DSP实现实现WRRwkEwkEkEkXXxdm22)(,)()()(2122令梯度为0,即可求出最正确权系数向量:xdXXoptRRW1第五章第五章 数字信号处理算法的数字信号处理算法的DSP实现实现5.2.1 LMS算法的C语言程序设计及仿真【例5-3】 在CCS开发平台中用C

19、语言实现LMS算法的自适应滤波器,其输入信号为正弦信号,期望输出设定为比实际输入超前两个单位时间的信号。第五章第五章 数字信号处理算法的数字信号处理算法的DSP实现实现编写C语言源代码文件,程序清单如下:#include float x500;/* 输入信号序列 */float y500;/* 输出信号序列 */float d500;/* 期望输出序列 */float e500;/* 输出误差序列, e(n)=d(n)-y(n) */float w5; /* 滤波器系数 */float u;/* 梯度算法步长 */第五章第五章 数字信号处理算法的数字信号处理算法的DSP实现实现main() i

20、nt i,j;u=0.00001; /* 初始化数据空间 */ for(i=0;i500;i+) xi=0; di=0; ei=0; yi=0; 第五章第五章 数字信号处理算法的数字信号处理算法的DSP实现实现/* 设定输入信号为正弦信号 期望输出设为比实际输入超前两个单位时间的信号 */ for(i=0;i500;i+) xi=(float)10*sin(pi*i/20); di=xi-2; /* 初始化滤波器系数 */ for(i=0;i5;i+) wi=0; 第五章第五章 数字信号处理算法的数字信号处理算法的DSP实现实现/* 梯度算法 */ for(i=5;i500;i+) for(j

21、=0;j5;j+) yi=yi+wj*xi-j; ei=di-yi;/* 计算误差 */ for(j=0;j PROG PAGE 0 .cinit PROG PAGE 0 .switch PROG PAGE 0 vect 3f80h PAGE 0 .data DATA PAGE 1 .bss DATA PAGE 1 .const DATA PAGE 1 .sysmem DATA PAGE 1 .stack DATA PAGE 1第五章第五章 数字信号处理算法的数字信号处理算法的DSP实现实现运行程序,选择view-graph-time/frequency 。 设置对话框中的参数: 其中 “ S

22、tart Address设为“x,“Acquisition buffer size和“Display Data size都设为“500,并且把“DSP Data Type设为“32-bit floating point,可观察到输入信号“x的波形如图5-10;同样方法可观察到输出波形“y(如图5-11)和输出误差“e(如图5-12)的波形。图5-10 输入信号“x的波形图5-11 输出信号“y的波形第五章第五章 数字信号处理算法的数字信号处理算法的DSP实现实现图5-12 误差信号“e的波形第五章第五章 数字信号处理算法的数字信号处理算法的DSP实现实现 傅里叶变换是一种将信号从时域变换到频域

23、的变换形式,是信号处理的重要分析工具。离散傅里叶变换DFT是傅里叶变换在离散系统中的表示形式。但是DFT的计算量非常大,FFT就是DFT 的一种快速算法,FFT将DFT 的N2步运算减少至( N/2 )log2N 步5.3 快速傅立叶FFT变换第五章第五章 数字信号处理算法的数字信号处理算法的DSP实现实现 5.3.1 FFT算法的原理 离散信号 的傅里叶变换可以表示为 式中的 称为蝶形因子,利用它的对称性和周期性可以减少运算量。一般而言,FFT算法分为时间抽取DIT和频率抽取DIF两大类。两者的区别是蝶形因子出现的位置不同,前者中蝶形因子出现在输入端,后者中出现在输出端。本节以时间抽取方法为

24、例。时间抽取FFT 是将N点输入序列 按照偶数项和奇数项分解为偶序列和奇序列。)(nxNjNNneWnxkX210nkN,W)(NW)(nx第五章第五章 数字信号处理算法的数字信号处理算法的DSP实现实现偶序列为: ; 奇序列为: 。这样 的N 点DFT 可写成:考虑到 的性质,即因此有:)2(,),4(),2(),0(Nxxxx) 1(,),5(),3(),1 (Nxxxx)(nx120)12(1202) 12()2()(NnknNNnnkNWnxWnxkXNW2/)2/(22/22NNjNjNWeeW1202/1202/) 12()2()(NnnkNkNNnnkNWnxWWnxkX第五章第

25、五章 数字信号处理算法的数字信号处理算法的DSP实现实现可将上式的X(k)写成:由于 Y(k)与Z(k) 的周期为N/2,并且利用 的对称性和周期性,即可得:对 Y(k)与Z(k) 继续以同样的方式分解下去,就可以使一个N点的DFT 最终用一组2点的FFT 来计算。在基数为2的FFT中,总共有log2(N) 级运算,每级中有N/2 个2点FFT 蝶形运算。)()()(kZWkYkXkNNWkNNkNWW2/)()()2/(kZWkYNkXkN第五章第五章 数字信号处理算法的数字信号处理算法的DSP实现实现单个蝶形运算示意图如下:蝶形算法为:kNmmmkNmmmWqxpxqxWqxpxpx)()

26、()()()()(1111WNk- -1xm-1(p)xm-1(q)xm(p)xm(q)第五章第五章 数字信号处理算法的数字信号处理算法的DSP实现实现以N8 为例,时间抽取FFT 的信号流图如下:x(0)x(4)x(2)x(6)x(1)x(5)x(3)x(7)WN0 x(7)x(6)x(5)x(4)x(3)x(2)x(1)x(0)-1-1-1WN0WN0WN0-1-1WN0WN2WN0WN2-1-1-1WN0WN1WN2WN3-1-1-1-1第五章第五章 数字信号处理算法的数字信号处理算法的DSP实现实现 从上图可以看出,输出序列是按自然顺序排列的,而输入序列的顺序那么是“比特反转方式排列的

27、。也就是说,将序号用二进制表示,然后将二进制数以相反方向排列,再以这个数作为序号。如011 变成110,那么第3 个输入值和第六个输入值就要交换位置。可以采用雷德算法Rader来完成这一步工作。第五章第五章 数字信号处理算法的数字信号处理算法的DSP实现实现 5.3.2 FFT的的C语言程序设计及仿真语言程序设计及仿真【例5-4】 在CCS开发平台中用C语言实现64点FFT算法。设输入信号序列为单边指数函数。编写C语言源代码文件,程序清单如下:include const float pi=3.1415926;int N;/* FFT点数 */float x_re300, x_im300; /*

28、 输入信号序列 */float y_re300, y_im300;/* 输出频谱序列 */float w_re, w_im;/* 蝶形因子 */int m;/* 蝶形运算的级数,即Log2(N) */第五章第五章 数字信号处理算法的数字信号处理算法的DSP实现实现main() float t_re, t_im, v_re, v_im; /* 临时变量 */int j,i,k,f,n; int a, b, c;N=64;/* 初始化数据空间 */for(i=0; i300; i+)x_rei=0;x_imi=0;第五章第五章 数字信号处理算法的数字信号处理算法的DSP实现实现/* 设定输入信号序列为单边指数函数 */* 考虑到实际衰减很快,因此可以忽略后面大半局部数值 */for(i=0;i=N;i+) x_rei=exp(-i); x_imi=0;/* 复制到输出数组 */for

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论