3. 滤波器设计方法
本节讨论IIR滤波器的应用场合、数字数据类型对滤波的影响,并提供使用MATLAB中的DSP系统工具箱设计巴特沃斯带通滤波器的分步说明。
3.1 IIR滤波器的应用
IIR滤波器的优缺点对它们是哪些应用的最佳选择存在影响。对于具有以下条件的应用,通常选择 IIR 滤波器而不是FIR滤波器:采用等效行为规范时存储器因计算成本较低而受到限制,线性相位并不重要,滤波器规范需要更急剧的截止频率和高吞吐量。
IIR滤波器已广泛用于电信/射频应用,例如,数字调制解调器中的发射和接收滤波器可抑制噪声并提取信号以供进一步处理。它们存在于物联网智能传感器(温度、压力、气体、图像等)中,可消除测量数据中不需要的噪声并使信号可用于分析。IIR滤波器的其他行业示例包括生物医学传感器信号处理、音频均衡和数据通信中的时钟恢复。
3.2 数据精度及其对数字滤波的影响
I/O数据、级系数/延迟数据以IEEE754标准规定的单精度浮点格式保留。
图7. 单精度浮点
单精度浮点格式支持以下值:
• 0 < E < 255(正常数字)
• E = 0 且 F = 0(有符号零)
• E = 0 且 F > 0 (非规格化数)
• E = 255 且 F = 0(无穷大)
• E = 255 且 F > 0(NaN:非数字)
F的MSB为0。(SNaN:信号 NaN)
F的MSB为1。(QNaN:静默NaN)
如果输入非规格化正数,IIRFA将输入视为+0,如果输入非规格化负数,则将输入视为-0,如果输入NaN(非数字)则为无穷大。
IIRFA在级联双二阶IIR滤波器操作中多次执行单精度浮点数的加法和乘法。如果每次加法和乘法的结果都是非规格化正数,则将其视为+0。如果结果是非规格化负数,则将其视为-0。如果结果为NaN(非数字),则将其视为无穷大。此外,可以通过IIROPCNT选择每个加法和乘法结果的舍入方式。
3.2.1 数据类型和精度
DSP芯片通常支持以下一种(或多种)数据类型:定点、单精度浮点数或双精度浮点数。定点处理器通常比浮点处理器更便宜,使用的功率更低,计算处理更快。
但是,浮点数据可以表示更大动态范围的数字,并且往往比定点数据的精度更高。双精度浮点格式存储64位数据,因此可以表示的数字动态范围要比存储32位数据的单精度浮点数大得多。
总之,使用单精度浮点格式可以在处理速度、动态范围和精度之间加以平衡。
3.2.2 位深度的注意事项
在考虑数字表示和数据类型时,另一个需要考虑的重要事项是,数字滤波器通常只是在MCU上实现的更大信号系统的一部分。系统其他元件(例如ADC)的分辨率可能成为您系统的瓶颈,因此应做出明智选择。RA6T2有一个12位ADC。
瑞萨提供具有更大位深度的外部D/A转换器,如下所示:
14位高速D/A请复制以下链接访问查看:
https://www.renesas.com/us/en/products/analog-products/data-converters/digital-analog-converters- dac/isl5961-14-bit-33v-210130msps-commlink-high-speed-da-converter
3.3 使用MATLAB提取系数
本文档随附的示例项目演示了如何利用IIRFA来实现带通滤波器,从而从100Hz噪声正弦波中去除不需要的频率。
该项目的第一部分介绍如何使用MATLAB的DSP系统工具箱来设计IIR 滤波器并为每个双二阶级生成系数。
所有Matlab脚本均可从应用项目随附的r11an0594/iir_filter_accelerator/tools文件夹中找到。
注:
该应用项目涵盖了MATLAB R2014b版滤波器设计的步骤。如果使用不同的版本,请参见MATLAB帮助中心,以验证命令或设置中的语法并修正任何可能的不同:
https://www.mathworks.com/help/matlab/
未完待续
推荐阅读
RA6T2 IIR滤波器加速器应用指南 [2] IIR滤波器简介(下)
RA6T2 IIR滤波器加速器应用指南 [3] 配置IIRFA(上)
RA6T2 IIR滤波器加速器应用指南 [4] 配置IIRFA(下)