新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > FIR数字滤波器的MATLAB仿真和DSP的实现

FIR数字滤波器的MATLAB仿真和DSP的实现

作者:时间:2014-03-12来源:网络收藏
verdana, serif; font-size: 14px; line-height: 22px; text-indent: 28px; background-color: rgb(255, 255, 255); ">若信号高频分量很小,信号大部分能量集中在低频处,那么谐波测量仪只要求测到20次谐波就可以了,截止频率为1 000 Hz左右,20次以上的谐波需要由滤波器滤除,为了达到更好的滤波效果,在硬件滤波的基础上又增加了。这里以有闭合公式可循的窗函数法为例来介绍滤波器设计。
3.1 滤波系数确定方法
首先,各技术指标如下:

滤波器的设计采用MATLAB数字信号处理软件包提供的专用函数来直接求取滤波器系数。在MATEAB中,提供了设计滤波器的函数。采用窗函数方法的函数firl,调用格式为:b=firl(n,ωn、window)或b=firl(n,ωn),其中n是滤波器阶数,ωn是0~1的数,ωn=ωc/2π=0.25,window为窗函数类型。由于滤波器长度N为34,因此阶数n=N-1=33,则求取滤波系数的表达式为b=firl(33,0.25)。表1为利用MATLAB计算所得的滤波系数表。

本文引用地址:http://www.eepw.com.cn/article/241673.htm


3.2 FIR设计
在满足各技术指标的前提下,经,图1为频率响应曲线,阻带衰减小于50 dB。图2为S=S1+S2+S3的波形,其中S1=sin(50x 2xπxt),S2=0.15xsin(25x50x2xπxt),S3=0.1xsin(20x50x2xπxt)。图3为滤除掉25次谐波S2和20次谐波S3后的波形图。


由滤波前后两个波形对比可以看出,该滤波器对20次以上谐波的滤除效果比较理想。3.3 FIR的DSP实现

实现FIR滤波的核心器件是美国德州仪器公司生产的TMS320F2812DSP芯片。芯片内12位精度的A/D转换单元对输入的模拟信号进行采样,DSP读取采样值后对每一点进行FIR滤波处理,将数据存入内部存储器,为下一步进行FFT运算做准备。以下为FIR滤波器流程图。


下面对程序流程作详细说明:
首先初始化DSP寄存器,分配存储单元,并定义一些变量名称,接着在数据存储区中开辟一个N单元的缓冲区,存放由MATLAB设计出的N个滤波系数。接下来读入采样值,并存入相应存储器A,然后开始滤波运算。具体运算步骤如下:
1)累加器ACC清零,初始化两个准备相乘的存储单元A与B的计数值K和L;
2)将第K个采样值AK与滤波器系数序列第L个数BL相乘(K+L=N+1),并将乘积送入累加器进行累加;
3)将第K-1个采样值AK-1存入AK单元,此时AK中的原数值被覆盖;
4)重复(2)~(3)直至共完成N次乘加运算;
5)输出处理结果。
滤波运算采用FFT算法。DSP控制器特有的反序间接寻址,为FFT算法的实现提供了方便。间接寻址方式还可以实现增/减l或增/减一个变址量,这就很容易实现各种查表方法。

4 结束语
介绍了采用窗函数设计法用Matlab仿真技术和DSP技术来实现FIR滤波器的设计过程。Matlab仿真非常方便设计出具有严格线性相位要求的滤波器,在应用中只需对程序中滤波器的起始频率、截止频率、采样频率和窗函数等参数进行修改就可实现需要的滤波功能,实用性强。采用DSP控制器来实现FFT运算从而使设计实现实时控制。利用Matlab辅助DSP实现FIR滤波器的设计是解决滤波器从设计到实现的有效办法,这个方法可以大大缩短DSP应用程序的开发时间,提高了设计效率,具有很强的实用性。

滤波器相关文章:滤波器原理


滤波器相关文章:滤波器原理


电源滤波器相关文章:电源滤波器原理


数字滤波器相关文章:数字滤波器原理

上一页 1 2 下一页

评论


相关推荐

技术专区

关闭