基于DSP的n阶FIR滤波器的设计

2019-11-19 12:13王维斌
科技视界 2019年25期

王维斌

【摘 要】本设计针对DSP芯片编写了基于MATLAB的FIR滤波器仿真程序FIR Simulink,可通过选择滤波器的类型及窗函数来对滤波器进行仿真,并在DSP实验箱上实现了基于TMS320VC5402的16位定点DSP芯片的FIR滤波功能,在设计中对FIR滤波器的设计方法进行了总结,找到了一种快速传递滤波器系数的方法,方便了FIR滤波器的设计。

【关键词】FIR滤波器;窗函数;MATLAB;DSP

中图分类号: G642;TN713-4 文献标识码: A 文章编号: 2095-2457(2019)25-0022-002

DOI:10.19694/j.cnki.issn2095-2457.2019.25.009

Design of the n Order FIR Filter System Based on DSP

WANG Wei-bin

(Hunan Automobile Engineering Professional Colleage,Zhuzhou Hunan 412001, China)

【Abstract】This design has compiled FIR filter simulated program fir Simulink based on MATLAB, It can choose four types of filter and seven types of windows functions to simulate the filter, and has realized the FIR filter function in the experiment box based on TMS320VC5402s16 fixed-point the chip of DSP. Has designed the FIR filter system electric circuit schematic diagram. Summarized the FIR filters designs method, and found one kind of the fast transmission method of filters coefficient, has facilitated the FIR filter design.

【Key words】FIR Filter; Window Function; MATLAB; DSP

0 引言

数字滤波器是利用某种规定的算法对输入信号序列进行处理后得到所期望的输出序列的装置,以滤除输入信号中某一部分频率分量,相当于信号频谱与滤波器的频率响应相乘的结果,在语音处理、图像处理、雷达信号处理、通信信号处理等方面有广泛的应用,在数字信号处理中具有重要的地位。

1 FIR数字滤波器的设计

1.1 设计思路

首先根据要求在Matlab中采用窗函数法,或其他Matlab函数以及滤波器设计工具来设计相应的FIR数字滤波器,然后对所设计的滤波器进行仿真,最后把在Matlab中设计的滤波器的系数应用至DSP滤波算法程序中,编写相关的初始化程序,采用载入方式把Matlab中仿真的模拟信号加到DSP程序中,通过CCS中的图形工具观察滤波前后的信号。

1.2 窗函数法设计FIR滤波器

窗函数法又称为傅立叶级数法。FIR滤波器设计方法就是用所设计的数字滤波器的频率响应Hd(ejωt)去逼近所要求的理想滤波器的响应Hd(ejωt),使用所设计的滤波器h(n)去逼近理想单位取样响应序列hd(n)。假设理想滤波器的频率响应表示为:

常用的窗函數有七种,本设计中根据FIR滤波器窗函数种类编写了基于MATLAB语言的程序FIR_simulink,该程序允许任意选择滤波器类型及窗函数进行设计,并能将实际的单位脉冲响应,设计好的滤波器的幅度响应和窗函数时域幅度用图形的方式显示出来。

1.3 函数直接设计FIR滤波器

利用函数直接设计FIR滤波器时使用的函数主要有fir1、fir2和kaiserord三种。

1.3.1 基于fir1函数直接设计FIR数字滤波器

fir1函数主要用于低通、高通、带通、带阻等常用的标准通带滤波器的设计,它实现了加窗线性相位FIR数字滤波器的设计,是一种经典的FIR数字滤波器设计方法,例如:如果窗函数为w(n),理想滤波器的单位脉冲响应为h(n),则所设计的滤波器的系数为b(n)=w(n)h(n),具体语法形式如下:b=fir1(N,Wn);b=fir1(N,Wn,ftype);b=fir1(N,Wn,window);b=fir1(N,Wn,ftype,window)。

1.3.2 基于fir2函数直接设计任意响应FIR滤波器

根据要求的幅度频率响应的向量形式进行插值后对其进行傅立叶反变换,得到理想滤波器的单位脉冲响应,最后利用窗函数对理想滤波器的单位脉冲响应进行截短处理得到FIR滤波器的系数,具体语法形式如下:b=fir2(N,f,m);b=fir2(N,f,m,window);b=fir2(N,f,m,npt,window);b=fir2(N,f,m,npt,lap)。

1.3.3 基于kaiserord函数直接设计FIR滤波器

凯塞窗通过参数可以改变窗函数的主瓣带宽和旁瓣衰减。在设计中先根据设计要求利用kaiserord函数求得凯塞窗函数参数,然后进行凯塞窗函数和FIR滤波器的设计。具体语法:[N,Wn,beta,ftype]=kaiserord(f,a,dev);

2 FIR滤波器的DSP程序实现

2.1 程序的设计

通过DSP实现FIR滤波器的验证,可以利用傅氏级数法、窗函数法、算法等来实现,以采样频率为200KHz,阶数为70的FIR低通滤波器为例,程序流程如图1所示。

2.2 滤波效果仿真

利用信号发生器产生两路正弦信号,频率分别为20KHZ与80KHZ,把两路信号混频后作为滤波器验证的输入信号,通过CCS中图形工具查看经过DSP滤波器滤波后的信号波形,如图2所示。

3 结论

本文以实例的形式介绍了利用MATLAB实现基于DSP的n阶FIR滤波器设计的方法,利用仿真波形直观的展示了所设计的FIR的滤波效果,设计中在MATLAB中直接生成滤波器系数,将系数传到CCS软件中形成DSP滤波算法程序,完成滤波器的快速设计。

【参考文献】

[1]陈怀琛.数字信号处理[M].北京:电子工业出版社.2008年10月.

[2]吴尚飞.基于DSP的FIR滤波器设计[J].中国新通信.2016年8月.