改进型FIR数字滤波器设计.docx
《改进型FIR数字滤波器设计.docx》由会员分享,可在线阅读,更多相关《改进型FIR数字滤波器设计.docx(7页珍藏版)》请在冰豆网上搜索。
![改进型FIR数字滤波器设计.docx](https://file1.bdocx.com/fileroot1/2023-1/5/7b5f660e-65e4-47f4-96ae-eede105b01ab/7b5f660e-65e4-47f4-96ae-eede105b01ab1.gif)
改进型FIR数字滤波器设计
一种改进型的FIR数字滤波器设计
在数字信号处理中,滤波占有极其重要的作用,数字滤波器是谱分析、雷达信号处理、通信信号处理应用中的差不多处理算法。
目前常用的滤波器设计方法普遍采纳Matlab仿真,DSP实现。
但这一传统设计方法需要的开发周期较长,且设计过程反复进行,特不不便。
针对这一问题,出现了系统级设计方法的构想将Matlab算法仿真和DSP的实现融合在一起。
文中应用MatlabLinkForCCSDevelopmentTools进行系统级设计,来完成FIR滤波器的设计。
1FIR数字滤波器设计的差不多步骤
数字滤波器依照其冲激响应函数的时域特性,可分为2种,即无限长冲激响应(IIR)滤波器和有限长冲激响应(FIR)滤波器。
FIR系统不像IIR系统那样易取得较好的通带和阻带衰减特性,要取得较好的衰减特性,一般要求H(z)阶次要高,也即M要大。
FIR系统有自己突出的优点:
系统总是稳定的;易实现线性相位;同意设计多通带(或多阻带)滤波器,后两项差不多上IIR系统不易实现的。
FIR数字滤波器的设计方法有多种,如窗函数设计法、频率采样法和Chebyshev逼近法等。
随着Matlab软件尤其是Matlab的信号处理工作箱的不断完善,不仅数字滤波器的计算机辅助设计有了可能,而且还能够使设计达到最优化。
FIR数字滤波器设计的差不多步骤如下[1]:
(1)确定技术指标
在设计一个滤波器之前,必须首先依照工程实际的需要确定滤波器的技术指标。
在专门多实际应用中,数字滤波器常被用来实现选频操作。
因此,指标的形式一般在频域中给出幅度和相位响应。
幅度指标要紧以2种方式给出。
第一种是绝对指标。
他提供对幅度响应函数的要求,一般应用于FIR滤波器的设计。
第二种指标是相对指标。
他以分贝值的形式给出要求。
本文中滤波器的设计就以线性相位FIR滤波器的设计为例。
(2)逼近
确定了技术指标后,就能够建立一个目标的数字滤波器模型(通常采纳理想的数字滤波器模型)。
之后,利用数字滤波器的设计方法(窗函数法、频率采样法等),设计出一个实际滤波器模型来逼近给定的目标。
(3)性能分析和计算机仿真
上两步的结果是得到以差分或系统函数或冲激响应描述的滤波器。
依照那个描述就能够分析其频率特性和相位特性,以验证设计结果是否满足指标要求;或者利用计算机仿真实现设计的滤波器,再分析滤波结果来推断。
2FIR数字滤波器的传统设计方法
传统的FIR数字滤波器设计流程分为2个部分:
开发设计和产品实现。
在开发设计部分完成方案设计和算法设计与验证,一般用Matlab语言进行仿真,当仿真结果中意时,再进入产品的实现时期。
在实现时期,将开发设计的时期的算法用C/C++或者汇编语言实现,在硬件的单片机或DSP目标板上实现。
下面以电力系统中的用于滤除高次谐波的低通滤波器为例,介绍设计线性相位FIR低通数字滤波器的传统设计方法。
2.1FIR滤波器的Matlab仿真[2]
在电力分析实验仪中,只要求分析20次以下的谐波,30次以上的谐波由抗混叠滤波器滤波,20-30次的谐波则由数字滤波器滤除。
因此电力系统的低通滤波器的技术指标如下:
通带截止频率为1000Hz,阻带截止频率为1500Hz,通带波浪为0.001,阻带波浪为0.001,采样频率为4000Hz,阻带衰减小于50dB,因此设计中采纳汉明窗比较合适。
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=1800Hz的正弦交流信号。
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下):
!
firdatafic01.txt
2.2FIR数字滤波器的C54实现
TMS320C5416有专门强的数据处理功能[3],带数据移位的加法指令MACD在循环执行时,一但流水线启动,该指令就变为单周期指令。
能够快速完成滤波器的设计和运算。
下面讨论上述仿真得到的FIR滤波器的设计[4],程序流程图如图4所示。
依照上述运算和流程图编制对称FIR低通滤波器程序,源程序清单略。
在CCS5000上进行仿真调试运行,利用观看窗口能够看到如下图形,并分析输入信号和输出信号的频谱,结果如图5,图6所示。
输入信号是频率为f1=400Hz和f2=1800Hz的正弦交流信号的叠加。
通过观看频域和时域图,得知:
输入波形中的低频波形通过了滤波器,而高频部分则被滤除。
滤波器实现了目标要求。
这种方法尽管能设计出较好的滤波器。
但需要用CCS把目标DSP程序运行的中间结果保存到PC机的硬盘上,然后调到Matlab工作空间,与Matlab算法的中间结果进行比较,能够发觉DSP程序中由于设计或者精度导致的结果偏差。
如此过程反复进行,特不不便。
下面提出了一种改进型的设计方法。
3滤波器设计的改进方法
目前提出了一种系统级设计方法的构想[5]。
系统级设计方法的核心是将算法设计与系统级设计仿真在统一的环境中进行,进而将开发流程的两个部分有效地结合在一起。
进行系统级设计需要一个统一的开发环境,且在该开发环境中能够对系统结构、算法进行描述,还能够对系统不同层次、不同组件和不同数据类型进行建模。
MatlabLinkforCCSDevelopmentTools确实是为了完成系统级设计出现的。
3.1MatlabLinkforCCSDevelopmentTools简介
Mathworks公司和TI公司联合开发的MatlabLinkforCCSDevelopmentTools(CCSLink)提供了Matlab和CCS的接口,即把Matlab和TICCS及目标DSP连接起来。
利用此工具能够像操作Matlab变量一样来操作TIDSP的存储器或寄存器,即整个目标DSP关于Matlab看起来是透明的,开发人员在Matlab环境中就能够完成对CCS的操作。
MatlabLinkforCCSDevelopmentTools能够支持CCS能够识不的任何目标板,包括TI公司的DSP,EVM板和用户自己开发的目标DSP(C2000,C5000,C6000)板。
3.2系统级设计探讨
CCSLink向用户提供的3种接口如图7,能够完成系统级设计。
3.3数字滤波器的系统级设计方法
利用LinkforCCSIDE接口实现CCSIDE和Matlab之间的连接来设计FIR数字滤波器,利用此连接能够在Matlab操纵下操作DSP的应用程序,利用Matlab中强大计算分析、可视化工具来分析和对比目标程序运行中的结果,大大缩短调试开发系统的周期。
具体设计步骤如下[6]:
(1)选择DSP型号:
实验中用TMS320C5416DSP;
(2)创建CCSIDE连接对象;
(3)利用Matlab把文件加载到CCSIDE中;
(4)在Matlab环境下对CCSIDE连接对象进行操作;
(5)关闭CCSIDE连接对象。
从那个设计步骤中能够看出,在Matlab环境下操作DSP中变量或者寄存器是专门方便的。
如此就能够在Matlab环境下完成DSP程序的仿真调试。
而不用像传统的开发要把DSP运行结果调回PC机验证,方便了开发设计,缩短了开发周期。
用这种方法所设计滤波器结果和上面差不多相同,只是设计过程得到了专门大简化,方便了开发设计。
4.结语
应用Matlab对DSP进行系统级的设计极大地改进了传统的设计方法。
Matlab系统级的设计环境,有助于在设计早期发觉错误和应对系统复杂性不断增加的挑战,方便了复杂DSP应用系统的设计。
所设计的数字滤波器和传统设计的滤波器比较,速度提高了专门多,设计过程得到了专门大的简化,方便了开发设计。
本文摘自《现代电子技术》