针对MATLAB环境下设计滤波器不便于构建一个虚拟仪器系统的问题,文中采用LabVIEW逐点分析工具设计数字滤波器教学演示与实验系统,实现动态逐点的信号生成与滤波。系统前面板参数可任意设定,滤波过程实时逐点可视。系统采用LabVIEW事件状态机模式实现,具有开放性特点,方便后续实验项目的增减。使用结果表明其有利于学生理解数字滤波的设计与应用过程、理解信号系统实时性需求。
“数字信号处理”是高校信息类专业重要的专业基础课,具有理论性、实践性和应用性强的特点, 其知识体系严谨、概念抽象、理论推导繁琐复杂、理论与实际联系紧密[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)两个通用性强的函数分别实现滤波器设计和逐点滤波。