1、FIR数字滤波器以其良好的线性特性被广泛应用于现代电子通信系统中,是数字信号处理的重要内容之一。在实际信号处理中,往往要求系统兼具实时性和灵活性。使用MATLAB实现FIR滤波器,既有很强的实时性,又兼顾了灵活性,为数字信号处理提供了一种很好的解决方案。论文借助MATLAB工具箱,选择合适的窗函数,设计了两种FIR数字滤波器,给出了实现的设计流程和一般步骤,并对其进行了相关仿真分析,展望数字滤波器设计技术的未来。关键字:FIR滤波器,MATLAB,CCS。 正文一、设计要求和设计目的1) 利用数字信号处理理论设计一个滤波器;2) 利用CCS实现滤波器;3) 通过实际信号作用,验证滤波器是否达到
2、设计目标;通过CCS集成开发环境,源程序采用C语言或者汇编语言实现一个FFR滤波器,实现FIR运算,结合数字信号处理理论知识,通过MATLAB设计一个低通滤波器的所有参数,生成一个C的头文件.h文件。并且通过MATLAB产生一个语音信号或者三个频率不相同的正弦信号相叠加,生成一个.dat文件,输入到CCS集成开发环境中,运行程序,观察信号输入和输出的波形图和频谱变换,通过观察数值窗口,得到滤波之后的频率同输入进行比较,得到FIR的滤波性能。二、FIR滤波器基本理论 (1)FIR滤波器的特点数字滤波器的功能,就是把输入序列通过一定的运算变换成输出序列。它的实现方法有很多,其中比较常用到的是无限长
3、脉冲响应滤波器IIR和有限长脉冲响应滤波器FIR两种。在计算量相等的情况下,IIR数字滤波器比FIR滤波器的幅频特性优越,频率选择性也好。但是,它有着致命的缺点,其相位特性不好控制。它的相位特性) 是使频率产生严重的非线性的原因。但是在图像处理、数据传输等波形传递系统中都越来越多的要求信道具有线性的相位特性。在这方面FIR滤波器具有它独特的优点,设FIR滤波器单位脉冲响应h(n)长度为N,其系统函数H(z)为H(z)是1 z的(N-1)次多项式,它在z平面上有(N-1)个零点,原点z=0是(N-1)阶重极点。因此,H(z)永远稳定,它可以在幅度特性随意设计的同时,保证精确、严格的线性相位。(2
4、)FIR滤波器的基本结构数字滤波是将输入的信号序列,按规定的算法进行处理,从而得到所期望的输出序列,FIR滤波器的差分方程为:对上式进行Z变换得到FIR滤波器的传递函数为:由上式可以看出,H(z)是1 z的N-1次多项式,它在z平面内有N-1个零点,同时在原点处有N-1个重极点。N阶滤波器通常采用N个延迟单元、N个加法器与N+1个乘法器,取图中(a)、(b)两种结构。图FIR滤波器的一般结构因为FIR滤波器的单位抽样响应是有限长的,所以它永远是稳定的。另外,若对h(n)提出一些约束条件,那么可以很容易地使H(z)具有线性相位,这在信号处理的很多领域是非常重要的。FIR滤波器的设计任务,是要决定
5、一个转移函数H(z),使它的频率响应满足给定的要求。这里所说的要求,除了通带频率p 、阻带频率及两个带上的最大和最小衰减p 和s 外,很重要的一条是保证H(z)具有线性相位。(3)Chebyshev逼近法窗函数法和频率采样法设计出的滤波器的频率特性都是在不同意义上对所给理想频率特性 jwdeH的逼近。由数值逼近理论可知,对某个函数f(x)的逼近一般有以下三种方法:插值法(InterpolatingWay)最小平方逼近法(LeastSquareApproaching一致逼近法(ConsistentWay)切比雪夫最佳一致逼近的基本思想是,对于给定区间a,b上的连续函数 xf,在所有n次多项式的集
6、合n 中,寻找一个多项式p(x),使它在a,b上对 xf的偏差和其它一切属于n 的多项式p(x)对f(x)的偏差相比是最小的,即切比雪夫逼近理论,这样的多项式是存在的,且是唯一的,并指出了构造这种最佳一致逼近多项式的方法,就是有名的“交错点组定理”。三、 CCS完成的流程示意图图3-1 CCS完成滤波示意图四、 滤波器源程序:#includestdio.hf100-500-20000.h#define N 101 #define L 800 /信号长度 long y; /每次累加器的中间变量int inL; /输入信号 int outL; /输出信号void main() /主函数入口 int
7、 m,n; int *x; for(n=0;nL-1;n+) /此处循环载入样本点 x=&inn; /指针指向载入样本点地址 y=0; /每次执行完将累加器置成0 for(m=0;m2fh通过截止频率为600的滤波器,滤除高频噪声,得到300HZ的原信号,抽样点N为1000。生成的.dat文件如图:3图6-1 生成.dat文件七、CCS滤波器实现1.将cmd连接文件,fir.c源文件,.lib库文件添加到工程之中,重新编译,得到。Out可执行文件,将生成的.out文件加载到项目当中,然后将外界的.dat文件load到CCS中,start address为in,长度为0x1fff,选择加载类型为
8、DATA。之后运行程序,选择view,查看graphics,属性修改如下:图7-1 ccs图形显示属性设置然后将输入和输出的时序图和频域图都显示如下,滤波之后同滤波之前比较:图7-2 输入输出波形图和频谱图分析:输入的为300HZ的正弦信号和两个高频正弦噪声信号,分别是3000HZ和8000HZ,通过一个截止频率为500HZ的低通滤波器,输出为一个频率为300HZ的正弦信号,3000HZ和8000HZ滤除掉了。频谱输入为3个脉冲,滤波之后输出为一个脉冲。对于原信号:signal=sin(2*pi*sl*n*T); sl=300; fs=20000; T=1/fs;时域周期为: T1=fs/s1
9、=200/3=66.7s 经过滤波之后取点(50,0)和(150,0)可得滤波之后的波形周期: 1.5T2=150-50=100s 得到T2=66.7 T1=T2,可判定滤波器滤波性能理想。 2.打开VIEW的watch window,添加in端口,添加out端口,如图7-3所示: 图7-3 window输出out端口地址和数据3.打开memory窗口out端口数据如图7-4所示:图7-4 memory输出out端口地址和数据八、扩展语音信号滤波观察重新设计滤波器,通过输入一个语音信号,测的其抽样频率为8192HZ,将MATLAB上也定义抽样频率为8192HZ,截至频率为300,阶数为100,
10、将语音信号加噪声生成.dat文件输入到CCS中,其滤波之后效果如下:图8-1 语音信号滤波输入与输出九、心得与体会 这次设计FIR滤波器设计,让我对数字信号和DSP技术和应用有了更深的理解,C语言的编程也更加熟悉,而且对MATLAB也有了一定的认识,更重要的是提高了我的学习能力和解决问题的能力。与其他高级语言的程序设计相比,MATLAB环境下可以更方便、快捷地设计出具有严格线性相位的FIR滤波器,节省大量的编程时间,提高编程效率,且参数的修改也十分方便,还可以进一步进行优化设计。如何通过软件来实现低通滤波器设计,而之前经常用硬件来实现滤波器的设计,硬件实现的低通滤波器滤波单一,无法改变,硬件设
11、计一旦错了就会无法挽回和经济的浪费,结果又得重新开始浪费时间。而通过DSP的FIR低通滤波器可以改变设置的参数来改变滤波器的截止频率,使得设计非常的灵活,方便且易于修改。而MATLAB在编程上更灵活,功能更强大。在FIR低通滤波器的设计中,还可以通过软件编程和硬件的结合,通过示波器来看到真实的低通滤波器的设计,因为软件还是一个虚拟的东西,最终的成品不仅仅在于软件上,与实际的结合才是真正意义上的设计,通过本次课程设计,使我更加扎实的掌握了有关数字滤波器方面的知识,在这次课程设计中虽然遇到了很多的困难,但是经过一次又一次的查阅资料,一次一次的认真思考,终于找出了原因,通过这次课程设计,了解知识还是
12、需要通过实践才能真正的掌握住精髓。通过这一周的课程设计,从查找资料,题目选定,到最后的实践成稿。正在这其中学到了很多的东西。既巩固了在课堂上学习的知识,也在查找资料的过程中也学到了很多课本上没有学习到的知识,可以说是收获颇丰。通过这次课程设计将理论与实践相结合,从中提高而来自己独立思考能力和实践动手能力,从而不断超越自己,学会了坚持不懈,坚持到底。参考文献:1. 乔瑞萍, 崔涛, 张芳娟.TMS320C54x原理及应用 M .西安:西安电子科技大学出版社, 2005.2. 周金治.基于 Matlab与 DSP的语音信号 FIR滤波 J .兵工自动化, 20053. 陈金鹰,DSP技术及应用,机械工业出版社,2004年4. 程佩青,数字信号处理,M清华大学出版社,20035. 王先峰,石东,基于DSP的FIR数字滤波器的设计与实现,天津科技大学电子信息与自动化学院,天津300222附录:CCS滤波源程序in
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1