基于F28335的IIR低通数字滤波器设计与实现

(整期优先)网络出版时间:2021-01-06
/ 2

基于 F28335的 IIR低通数字滤波器设计与实现

童亚军 袁邦林 董鹏飞

贵州航天控制技术有限公司 贵州贵阳 550009


摘要:针对目前数字信号处理领域中的高频噪声滤除的需求,提出了一种基于DSP的IIR低通数字滤波器的解决方案。首先在MATLAB中仿真出符合要求的二阶IIR低通数字滤波模型,然后通过SIMULINK中搭建仿真模型验证滤波器的正确性,最后在DSP中通过C语言实现滤波算法。DSP的高性能、浮点运算快等特点可以很好的解决数字滤波算法工程实际应用的难题,该方法实现简单,稳定可靠,具有很好的工程实践价值。

关键词:高频噪声;DSP SIMULINK;IIR低通数字滤波


1 引言

数字滤波器分为经典滤波器和现代滤波器两大类[1],经典滤波器中包括IIR滤波器和FIR滤波器,现代滤波器中包括卡尔曼滤波和自适应滤波等。IIR滤波器的特点包括:在低频段具有线性相位、需要的输入参数少、阶次低、计算量小、对硬件的要求较低等特点被广泛应用于低频信号处理领域[2]

TI公司的F283xx系列的TMS320F28335(以下简称F28335)是一款高性能32位浮点DSP处理器,最高主频可达150MHZ[3],该器件精度高,成本低,功耗小,性能强,可以很好的实现IIR滤波算法。

2 IIR滤波器的设计原理

IIR数字滤波器是一种无限脉冲响应的数字滤波器,是具有反馈结构的递归型滤波器,采用闭环设计结构相对简单,实现的阶次较低运算速度快、占用的存储空间少,具有较高的计算精度,在低频段具有很好的线性相位,可以很好的应用于低频滤波领域[4]

一个N阶IIR数字滤波器的线性常系数差分方程为:

5ff566a965552_html_fd37480ec398b12a.gif (2-1)

基于式(2-1)的差分方程可在DSP中通过C语言实现滤波算法。首先根据滤波系统的输入得出滤波器的技术指标,如截止频率、采样频率、带宽、阶次等在MATLAB中设计得到的滤波器系统传递函数,再采用递推法将滤波器Z域的传递函数转换成式(2-1)所示的差分方程,最后在最后在F28335中通过C语言完成滤波算法的实现。


3 IIR低通滤波器的实现

3.1 IIR低通滤波器的MATLAB实现及仿真验证

根据系统的要求,本文所设计的IIR低通滤波器的技术指标:采样频率:1758.2417HZ,带宽为53HZ,阶次为2阶的低通巴特沃斯型IIR滤波器,其Z域的传递函数如式(4-1)所示。

5ff566a965552_html_eb325edb4b1fb1c1.gif(4-1)

在SIMULINK中通过搭建仿真模型,验证滤波器的滤波效果,以频率分别为10HZ和100HZ的正弦信号叠加合成作为滤波器的输入,滤波前后的波形如图1所示。

5ff566a965552_html_93f50c0ea6565d7d.png5ff566a965552_html_310d1877d0d79652.png


图3 滤波前后的输出波形

由图3可知,合成后的正弦信号经过滤波器后100HZ的正弦信号被抑制,10HZ的信号正常输出,起到了低通滤波的作用。


3.2 IIR低通滤波器的DSP实现

由4.1章节可知,二阶IIR低通滤波通过式(4-1)实现,将式(4-1)转换成差分方程:

5ff566a965552_html_4319f902c5692c2d.gif(4-2)

化简式(4-2)可得式(4-3):

5ff566a965552_html_33b1570a5ac824fc.gif

5ff566a965552_html_30643d8d5d197b60.gif(4-3)

滤波算法函数的实现:

Filter->Snd_2_Ipt = Filter->Snd_1_Ipt;

Filter->Snd_1_Ipt = Filter->Snd_0_Ipt;

Filter->Snd_0_Ipt = Src_Filt_QL.fword;


Filter->Snd_2_Opt = Filter->Snd_1_Opt;

Filter->Snd_1_Opt = Filter->Snd_0_Opt;

Filter->Snd_0_Opt = Filter->Snd_0_Ipt*Para[0] + Filter->Snd_1_Ipt*Para[1]

+Filter->Snd_2_Ipt*Para[2] + Filter->Snd_0_Opt*Para[3]

+Filter->Snd_1_Opt*Para[4];

Dst_Filt_QL[k].fword = Filter->Snd_0_Opt[k];


4 结束

本文针对数字信号处理领域的高频噪声滤除问题,提出了一种基于F28335的IIR低通数字滤波方案,全文交代了IIR低通滤波器从MATLAB设计、仿真验证以及在F28335通过C语言实现的整个过程,利用支持浮点运算的高速DSP实现IIR滤波算法有效的提高了数字滤波器的输出准确度,通过C语言封装成API函数,提高了IIR低通滤波器的可移植性和实用性,具有很好的工程实践价值。


参考文献

[1] 丛玉良等.数字信号处理原理及其MATLAB实现[M].北京:电子工业出版社,2004.

[2] 邓伟,田正文.利用MATLAB辅助设计IIR数字带通滤波器[J].东华大学信息科学与技术学,2009年第6期.

[3]阎景波,孙东亚,张磊.基于F28335的无刷直流电机控制器设计与实现[J].信息技术与信息化,2020(06):150-152.

[4]李秀花,马雯.基于FPGA的IIR数字滤波器设计与实现[J].电子技术,2016,45(05):58-60.


作者简介:童亚军(1992-11),男,汉族,籍贯:安徽巢湖,当前职称:工程师,学历:硕士研究生,研究方向:DSP 嵌入式软件