RA6T2 IIR滤波器加速器应用指南 [6] 滤波器设计方法(下)

描述

mcu

 

   

3. 滤波器设计方法

 

3.3 使用MATLAB提取系数

 

3.3.1 使用filterBuilder进行设计

 

以下步骤详细说明了如何使用MATLAB的DSP系统工具箱中的filterBuilder工具,设计与IIRFA模块(具有以100Hz为中心的通带)兼容的带通滤波器的过程。

 

打开MATLAB。在Command Window(命令窗口)中键入命令filterbuilder,然后按Enter

 

mcu

图8. 运行filterbuilder命令

 

将弹出Response Selection(响应选择)窗口,提示您选择一个滤波器响应。选择Bandpass(带通),然后按OK(确定)。

 

mcu

图9. 选择滤波器响应

 

FilterBuilde的Bandpass Design(带通设计)窗口将打开并显示主窗格。在Bandpass Design(带通设计)窗口中,可以设置滤波器的其余所需规范。

 

滤波器输出变量自动命名为Hbp,并将在该示例的其余部分中使用。

 

mcu

图10. filterBuilder带通设计的默认值

 

Filter specifications(滤波器规范)部分,单击下箭头以显示Impulse response(脉冲响应),并选择IIR。将Order mode(阶模式)设置为Minimum(最小)。

 

mcu

图11. 选择滤波器规范

 

Frequency specifications(频率规范)部分,将Frequency units(频率单位)改为Hz

 

输入信号是100Hz正弦信号,每个周期有256个采样点。输入采样率通过100Hz*256采样点=25600得出。在Input sample rate(输入采样率)框中,输入25600

 

为了恢复输入信号,滤波器的通带将以100Hz为中心值。设置以下值:

Stopband frequency 1(阻带频率1)设置为70

Passband frequency 1(通带频率1)设置为90

Passband frequency 2(通带频率2)设置为110

Stopband frequency 2(阻带频率2)设置为130

 

mcu

图12. 设置频率规范

 

Magnitude specifications(幅值规范)Algorithm(算法)部分保留为默认设置。在此应用中选择巴特沃斯滤波器是为了在通带和阻带中实现最平坦的响应。

 

Filter implementation(滤波器实现)框中,将 Structure(结构)改为Direct-form II transposed SOS(直接II型转置SOS)。

 

mcu

图13. 设置滤波器实现

 

下一步,单击Data Types(数据类型)选项卡以切换到Data Types(数据类型)窗格。将Arithmetic(算术)改为Single precision(单精度)。

 

mcu

图14. 设置算术数据类型

 

要在创建滤波器对象前查看滤波器响应,可单击窗口右上角的View Filter Response(查看滤波器响应)按钮。如果提示是否在可视化前应用更改,选择Yes(是)。

 

mcu

图15. 滤波器频率幅值响应

 

显示的频率范围从0Hz到奈奎斯特频率 (12800Hz),因此很难用此视图查看100Hz通带。要放大,可单击顶部栏中的Zoom(缩放)按钮mcu,并围绕通带区域绘制一个窗口。

 

mcu

图3. 10滤波器频率幅值响应的缩放视图

 

检查完频率幅值响应后,关闭“滤波器可视化工具”。

 

接下来,单击OK(确定)以生成滤波器变量,工作区中将填入名为“Hbp”的df2sos MATLAB对象。

 

mcu

图16. 工作区存放df2tsos对象

 

Df2tsos对象中的sosMatrix存放滤波器中各个二阶部分的系数。

 

Command Window(命令窗口)中键入filtord (Hbp.sosMatrix) 并按Enter查看Hbp滤波器的阶。

 

mcu

图17. 运行 filtord() 命令

 

该滤波器的阶数为16,因此需要8个级联双二阶或IIRFA级来实现。

 

右键单击工作区中的滤波器对象,选择Save as(另存为),将对象在包含此示例项目的MATLAB脚本的本地目录中另存为Hbp.mat。

 

mcu

图18. 将Hbp另存为.mat文件

 

3.3.2 导出滤波系数

 

本节介绍如何使用随附的MATLAB脚本extract_coefficients.m从df2tsos滤波器对象的sosMatrix中提取系数,以创建一个包含以C代码格式化为iir_filter_coeffs_t结构的系数的.txt文件。所有Matlab脚本均可从应用项目随附的r11an0594/iir_filter_accelerator/tools文件夹中找到。

 

双击extract_coefficients.m脚本将其用MATLAB打开。

 

Run(运行)。C代码在位于当前目录中一个名为IIRFAcoeff.txt的新文件中生成。

 

mcu

图19. 运行MATLAB脚本

 

3.3.3 其他滤波器设计工具

 

GNU Octave是一款免费的DSP数值软件工具,可代替MATLAB使用。但是,本文档不提供使用该软件进行滤波器设计的详细步骤。想要使用该软件的用户应确定类似于前文第3.3.1节中的步骤。

 

GNU Octave可从以下网址下载:

https://www.gnu.org/software/octave/download

 

信号包(含IIR滤波器设计):

https://octave.sourceforge.io/signal/

 

下一章:运行示例项目

 

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分