1. 引言
“数字信号处理”是高校信息类专业重要的专业基础课,具有理论性、实践性和应用性强的特点,其知识体系严谨、概念抽象、理论推导繁琐复杂、理论与实际联系紧密 [1] [2] [3]。FIR/IIR是课程主要内容与难点之一,教学中对其理论推导和仿真验证缺乏交互性与动态性,学生对众多参数及其实际效应没有直观认识、难以理解 [1]。另外,教材中数字滤波是基于数据缓存数组进行推导、分析和验证的,信号实时逐点的特性被模糊或弱化,不利于学生理解实时滤波的过程。
目前MATLAB文本程序或辅以GUI界面是数字滤波器教学验证演示主要方式 [4] [5] [6]。基于案例教学演示可辅助学生感性地理解滤波理论 [7] [8]。上述方法的缺点是不利于学生硬件认识。可通过实验板将信号与系统知识与电路知识有机结合,既能够解决硬件实现的缺陷,又能够认识信号的特点,但是电路的搭建耗时,且容易转移学生学习重心。而LabVIEW以其图形化编程方式、丰富控件资源、完备信号处理函数非常适合快速构建交互良好、动态直观的案例式教学演示与验证系统,且编程与使用过程都动态直观 [8],将实体实验与虚体实验相结合。基于LabVIEW开发虚拟实验广泛应用于工业、科研和教学领域 [10] - [17]。LabVIEW实时逐点运算功能可仿真与验证包括滤波在内的各种实时信号处理 [10],贴近硬件实际,上述文献未见提及。
2. LabVIEW滤波与逐点滤波
2.1. 逐点滤波工具
信号分析及滤波处理方式一般分为在线和离线两种,其最大区别在于采集与分析处理发生的时刻。即在信号进入的起始阶段或信号参数变化时两者计算结果有差别。理论上当数据稳定且缓存一定数量时两者结果一致 [9] [10]。LabVIEW信号处理工具和高级信号处理工具中为信号生成、调理、运算、变换、滤波、分析等提供了丰富的函数族。针对信号实时性要求,LabVIEW还提供了一套逐点处理函数如图1与图2所示,它们分别位于信号处理工具和高级信号处理工具之内。
2.2. 逐点滤波函数
实现某种特定逐点滤波需求,上述很多独立函数可以满足使用。为简化系统设计仅采用“经典数字滤波器设计”(DFD Classical Design)与“数字滤波”(DFD Filtering)两个通用性强的函数分别实现滤波器设计和逐点滤波。

Figure 1. Partial point-wise filtering function
图1. 部分逐点滤波函数

Figure 2. Advanced signal processing toolbox
图2. 高级信号处理工具箱
DFD Classical Design函数提供三种FIR和四种IIR滤波器设计方法,依次为Kaiser Window、Dolph-Chebyshev Window、Equi-Ripple、Butterworth、Chebyshev、Inverse Chebyshev、Elliptic。可实现低通、高通、带通、带阻四种滤波器类型。函数需要四个主要输入参数,滤波器设计方法、滤波器类型,滤波器设计规范参数(Filter Specifications),即采样频率
,通带频率
、
,阻带频率
、
,和滤波器纹波规范参数(Ripple Specifications),即通带纹波与阻带衰减。
DFD Filtering函数可实现单通道单采样、多通道多采样信号的连续逐点滤波,其输入端为滤波器类型数据。
实时信号采用工具箱中全部逐点信号生成函数、干扰与噪声函数,引出其众多输入参数后用子VI封装。
滤波器设计完成后,使用“滤波器分析(Filter Analysis)”类工具函数生成绘制滤波器的幅频与相频特性、脉冲与阶跃响应零极点图以及传递函数等,增强系统可视性。
最后,用信号的逐点自功率谱对比与验证滤波器的滤波性能。逐点自功率函数为:
其中,*表示复共轭,n信号采样数。
3. 逐点FIR/IIR滤波
3.1. FIR/IIR原理
数字滤波器分为FIR和IIR滤波器。FIR冲激响应在有限时间内衰减为零,其输出取决于当前和过去输入信号。IIR冲激响应理论上无限持续,其输出取决于当前和过去输入信号,还取决于过去信号输出。
FIR传递函数极点固定在原点,仅能改变零点位置来改变性能,达到高的频率选择性时必须用较高阶数。IIR传递函数包括零点和极点两组可调因素,对极点唯一限制是在单位圆内,可用较低阶数获得高的频率选择性。一般同样的设计指标,FIR阶数比IIR高5~10倍。FIR非递归结构使其在有限精度运算中不存在稳定性问题,频率特性误差相对IIR要小。
3.2. FIR/IIR逐点滤波
LabVIEW中FIR、IIR逐点滤波公式为:
其中
与
分别为逐点输入与输出。
是FIR的前向系数数组,
、
、
、
分别是IIR反向与正向系数及系数个数。上式逐点滤波与常规教材中滤波函数表达一致,逐点仅通过下标i强调其逐点计算的特性。
4. 系统设计和案例演示
4.1. 程序框架和功能
采用LabVIEW事件状态机模式实现系统工作状态间交互式切换。工作状态划分为:1) 参数、控件属性、文件初始化;2) 滤波器与信号设计参数交互设置;3) 滤波器特性图形化呈现;4) 信号生成与滤波实时逐点呈现;5) 滤波器文件存储与管理;6) 系统操作简介。状态机模式程序框架通过自定义枚举“状态常量”项的增减实现实验项目的改变。
核心程序段如图3、图4所示。图3中包括DFD Classical Design函数和子VI封装的各滤波器分析函数。程序段接收移位寄存器左端口传来的Filter Specifications簇和Error簇,输出如图7所示的滤波器各项指标的特性图,输出Filter和Error簇到移位寄存器右端口用于系统状态时备份数据。图4为信号逐点进入和逐点滤波部分,包括封装后逐点信号源子VI,DFD Filtering函数,逐点自功率谱函数。输出信号(噪声与干扰操作手动叠加)、噪声与干扰、滤波后信号的时域波形和功率谱,用于对比验证滤波前后的变化。数字滤波器可视化演示系统操作流程如图5所示。

Figure 3. Filter design and filter characteristic program realization part
图3. 滤波器设计与滤波特性程序实现部分

Figure 4. Point-by-point filtering and filtering effect program realization
图4. 逐点滤波及滤波效果程序实现

Figure 5. Digital filter visual demonstration system operation process
图5. 数字滤波器可视化演示系统操作流程
4.2. 案例实验及演示效果
设计案例:占空比20%的受干扰方波信号,其频率为1 kHz,干扰为周期性的20点随机脉冲,脉冲频域幅值0.1,噪声为标准差0.5高斯噪声。要求:滤除方波信号的高次谐波、随机脉冲干扰与噪声干扰,用FIR/IIR两种滤波器进行对比。
设定FIR/IIR滤波器设计方法分别为Kaiser Windows和Elliptic。方波具有
奇次谐波,20点随机脉冲将造成
干扰,因此,采样频率设定为音频信号常用的
,满足本案例使用外也可为后续声卡信号输入实验准备。滤波器类型为低通,设计规范参数中
、
,通带纹波0.5 dB、阻带衰减50 dB。
4.3. 实验结果
滤波器特性如图6和图7所示,图中可见同样指标下两种滤波器的显著区别,尤其是有限的脉冲响应、零极点分布与数量。

Figure 7. System interface and filter design results
图7. 系统界面及滤波器设计结果
图8给出了方波信号逐点滤波结果,其中,(a)中方波信号逐点输入,在输入过程中可以手动添加干扰和噪声。(d)和(f)是滤波器前后信号的功率谱。未加噪声与干扰时,初始阶段功率谱曲线随信号输入不断变换直至稳定。稳定条件是信号不发生改变且信号没有干扰和噪声。(d)、(f)两图表明滤波器性能达到设计要求,滤除了谐波和高次的随机脉冲干扰,但1105 Hz随机脉冲干扰无法滤除。因此(f)图中峰值是方波基频成分与随机脉冲干扰的叠加。

Figure 8. Signal point-by-point filtering result ((a) Original signal; (b) Random pulse and Gaussian noise; (c) Point-by-point filtering; (d) Power spectrum before filtering; (e) Interference and noise power spectrum; (f) Filtered power spectrum)
图8. 信号逐点滤波结果((a) 原始信号;(b) 随机脉冲和高斯噪声;(c) 逐点滤波;(d) 滤波前功率谱;(e) 干扰与噪声功率谱;(f) 滤波后功率谱)
系统在使用过程中,可由老师或学生提出不同的滤波需求和信号源特性,通过图示结果可直观观察原信号、噪声与干扰、信号功率谱和逐点滤波的效果,可增强对FIR/IIR滤波器设计与逐点滤波过程的理解。
5. 结语
面向FIR/IIR滤波器数学与实验需求,利用LabVIEW良好的交互性和逐点计算功能设计并实现了辅助教学演示系统。教师在课堂讲授时可通过交互的方式对课程中FIR/IIR滤波器的概念和原理进行实时仿真、验证,形象具体地展示课程中抽象的理论知识,充分激发学生的学习兴趣;学生可在该平台改变输入参数,理解并掌握各种FIR/IIR滤波系统的分析方法,深刻体会滤波器性能特点。通过具体实现的案例可见,系统计算结果符合理论分析,且界面交互性好,程序框架通用性强。
基金项目
江苏省科学技术厅项目(BY2015024-03)、徐州市科技计划项目(KC19208)、江苏省大型工程装备检测与控制重点建设实验室开放基金(JSKLED201414)资助。
NOTES
*通讯作者。