一种改进型的FIR数字滤波器设计
发布时间:2008/5/29 0:00:00 访问次数:969
在数字信号处理中,滤波占有极其重要的作用,数字滤波器是谱分析、雷达信号处理、通信信号处理应用中的基本处理算法。目前常用的滤波器设计方法普遍采用matlab仿真,dsp实现。但这一传统设计方法需要的开发周期较长,且设计过程反复进行,非常不便。
针对这一问题,出现了系统级设计方法的构想将matlab算法仿真和dsp的实现融合在一起。文中应用matlab link for ccs development tools进行系统级设计,来完成fir滤波器的设计。
1 fir数字滤波器设计的基本步骤
数字滤波器根据其冲激响应函数的时域特性,可分为2种,即无限长冲激响应(iir)滤波器和有限长冲激响应(fir)滤波器。fir系统不像iir系统那样易取得较好的通带和阻带衰减特性,要取得较好的衰减特性,一般要求h(z)阶次要高,也即m要大。fir系统有自己突出的优点:系统总是稳定的;易实现线性相位;允许设计多通带(或多阻带)滤波器,后两项都是iir系统不易实现的。fir数字滤波器的设计方法有多种,如窗函数设计法、频率采样法和chebyshev逼近法等。随着matlab软件尤其是matlab的信号处理工作箱的不断完善,不仅数字滤波器的计算机辅助设计有了可能,而且还可以使设计达到最优化。
fir数字滤波器设计的基本步骤如下[1]:
(1)确定技术指标
在设计一个滤波器之前,必须首先根据工程实际的需要确定滤波器的技术指标。在很多实际应用中,数字滤波器常被用来实现选频操作。因此,指标的形式一般在频域中给出幅度和相位响应。幅度指标主要以2种方式给出。第一种是绝对指标。他提供对幅度响应函数的要求,一般应用于fir滤波器的设计。第二种指标是相对指标。他以分贝值的形式给出要求。本文中滤波器的设计就以线性相位fir滤波器的设计为例。
(2)逼近
确定了技术指标后,就可以建立一个目标的数字滤波器模型(通常采用理想的数字滤波器模型)。之后,利用数字滤波器的设计方法(窗函数法、频率采样法等),设计出一个实际滤波器模型来逼近给定的目标。
(3)性能分析和计算机仿真
上两步的结果是得到以差分或系统函数或冲激响应描述的滤波器。根据这个描述就可以分析其频率特性和相位特性,以验证设计结果是否满足指标要求;或者利用计算机仿真实现设计的滤波器,再分析滤波结果来判断。
2 fir数字滤波器的传统设计方法
传统的fir数字滤波器设计流程分为2个部分:开发设计和产品实现。在开发设计部分完成方案设计和算法设计与验证,一般用matlab语言进行仿真,当仿真结果满意时,再进入产品的实现阶段。在实现阶段,将开发设计的阶段的算法用c/c++或者汇编语言实现,在硬件的单片机或dsp目标板上实现。
下面以电力系统中的用于滤除高次谐波的低通滤波器为例,介绍设计线性相位fir低通数字滤波器的传统设计方法。
2.1 fir滤波器的matlab仿真[2]
在电力分析实验仪中,只要求分析20次以下的谐波,30次以上的谐波由抗混叠滤波器滤波,20-30次的谐波则由数字滤波器滤除。所以电力系统的低通滤波器的技术指标如下:通带截止频率为1 000hz,阻带截止频率为1 500hz,通带波纹为0.001,阻带波纹为0.001,采样频率为4 000hz,阻带衰减小于50 db,因此设计中采用汉明窗比较合适。
fir滤波器的设计用matlab数字信号处理软件包提供的专用函数来直接求取是非常方便的。
先求出滤波器的阶数n:n=ceil(n)+1,通过相关程序仿真可以计算出n=28。
滤波器h(n)的系数和他的幅频特性:
调用格式为:b=fir1(n,wc,’ftype’,window)或b=fir2(n,wc,m,window);编制程序并运行,表1为计算所得滤波器系数,图1所示为设计的低通滤波器频率响应曲线。由此可见基本满足性能指标。h(n)的系数见表1。
输入一混叠信号来测试所设计滤波器的功能:输入信号是频率为f1=400hz和f2=1 800hz的正弦交流信号。
s1=sin(400×2πt);
s2=sin(1800×2πt);
s=s1+s2
图2为混叠信号波形s=s1+s2。
图3经滤波器滤波后的波形。由此可见,仿真结果基本令人满意。然后用dsp来实现系统。
将上述系统存盘,建立一个数据文件fir01.txt,将matlab中产生的fir01.txt文件,通过执行转换命令,将自动变换为firdata.inc滤波器系数文件。转换命令为(在matlab下):!firdata fic01.txt
2.2 fir数字滤波器的c54实现
tms320c5416有很强的数据处理功能[3],带数据移位的加法指令macd在循环执行时,一但流水线
在数字信号处理中,滤波占有极其重要的作用,数字滤波器是谱分析、雷达信号处理、通信信号处理应用中的基本处理算法。目前常用的滤波器设计方法普遍采用matlab仿真,dsp实现。但这一传统设计方法需要的开发周期较长,且设计过程反复进行,非常不便。
针对这一问题,出现了系统级设计方法的构想将matlab算法仿真和dsp的实现融合在一起。文中应用matlab link for ccs development tools进行系统级设计,来完成fir滤波器的设计。
1 fir数字滤波器设计的基本步骤
数字滤波器根据其冲激响应函数的时域特性,可分为2种,即无限长冲激响应(iir)滤波器和有限长冲激响应(fir)滤波器。fir系统不像iir系统那样易取得较好的通带和阻带衰减特性,要取得较好的衰减特性,一般要求h(z)阶次要高,也即m要大。fir系统有自己突出的优点:系统总是稳定的;易实现线性相位;允许设计多通带(或多阻带)滤波器,后两项都是iir系统不易实现的。fir数字滤波器的设计方法有多种,如窗函数设计法、频率采样法和chebyshev逼近法等。随着matlab软件尤其是matlab的信号处理工作箱的不断完善,不仅数字滤波器的计算机辅助设计有了可能,而且还可以使设计达到最优化。
fir数字滤波器设计的基本步骤如下[1]:
(1)确定技术指标
在设计一个滤波器之前,必须首先根据工程实际的需要确定滤波器的技术指标。在很多实际应用中,数字滤波器常被用来实现选频操作。因此,指标的形式一般在频域中给出幅度和相位响应。幅度指标主要以2种方式给出。第一种是绝对指标。他提供对幅度响应函数的要求,一般应用于fir滤波器的设计。第二种指标是相对指标。他以分贝值的形式给出要求。本文中滤波器的设计就以线性相位fir滤波器的设计为例。
(2)逼近
确定了技术指标后,就可以建立一个目标的数字滤波器模型(通常采用理想的数字滤波器模型)。之后,利用数字滤波器的设计方法(窗函数法、频率采样法等),设计出一个实际滤波器模型来逼近给定的目标。
(3)性能分析和计算机仿真
上两步的结果是得到以差分或系统函数或冲激响应描述的滤波器。根据这个描述就可以分析其频率特性和相位特性,以验证设计结果是否满足指标要求;或者利用计算机仿真实现设计的滤波器,再分析滤波结果来判断。
2 fir数字滤波器的传统设计方法
传统的fir数字滤波器设计流程分为2个部分:开发设计和产品实现。在开发设计部分完成方案设计和算法设计与验证,一般用matlab语言进行仿真,当仿真结果满意时,再进入产品的实现阶段。在实现阶段,将开发设计的阶段的算法用c/c++或者汇编语言实现,在硬件的单片机或dsp目标板上实现。
下面以电力系统中的用于滤除高次谐波的低通滤波器为例,介绍设计线性相位fir低通数字滤波器的传统设计方法。
2.1 fir滤波器的matlab仿真[2]
在电力分析实验仪中,只要求分析20次以下的谐波,30次以上的谐波由抗混叠滤波器滤波,20-30次的谐波则由数字滤波器滤除。所以电力系统的低通滤波器的技术指标如下:通带截止频率为1 000hz,阻带截止频率为1 500hz,通带波纹为0.001,阻带波纹为0.001,采样频率为4 000hz,阻带衰减小于50 db,因此设计中采用汉明窗比较合适。
fir滤波器的设计用matlab数字信号处理软件包提供的专用函数来直接求取是非常方便的。
先求出滤波器的阶数n:n=ceil(n)+1,通过相关程序仿真可以计算出n=28。
滤波器h(n)的系数和他的幅频特性:
调用格式为:b=fir1(n,wc,’ftype’,window)或b=fir2(n,wc,m,window);编制程序并运行,表1为计算所得滤波器系数,图1所示为设计的低通滤波器频率响应曲线。由此可见基本满足性能指标。h(n)的系数见表1。
输入一混叠信号来测试所设计滤波器的功能:输入信号是频率为f1=400hz和f2=1 800hz的正弦交流信号。
s1=sin(400×2πt);
s2=sin(1800×2πt);
s=s1+s2
图2为混叠信号波形s=s1+s2。
图3经滤波器滤波后的波形。由此可见,仿真结果基本令人满意。然后用dsp来实现系统。
将上述系统存盘,建立一个数据文件fir01.txt,将matlab中产生的fir01.txt文件,通过执行转换命令,将自动变换为firdata.inc滤波器系数文件。转换命令为(在matlab下):!firdata fic01.txt
2.2 fir数字滤波器的c54实现
tms320c5416有很强的数据处理功能[3],带数据移位的加法指令macd在循环执行时,一但流水线
上一篇:无需加设滤波器的D类音频放大器