摘 要:应变测试系统中传感器输出信号非常微弱,传感器与测量仪连接线较长容易引入干扰信号,且应变仪应用场地干扰信号不同。介绍了一种用FPGA实现的可编程IIR型滤波器,该滤波器以二阶基本节为核心,通过改变二阶基本节的系数来改变滤波器滤波模型及截止频率。嵌入式计算机把系数写入滤波器实现低通、高通、带通及带阻滤波。该滤波器在应变测量仪器应用上取得了很好效果。
关键词:可编程滤波器;多通道;FPGA;IIR
在应变测试系统中,信号流程如图1所示。应变片输出的信号经电桥、放大器后得到较强应变信号,经过滤波及模数转换后得到数字信号。在应变测试现场,采样点分布广,电桥与放大器间距离远,需要接入较长引线,电桥输出的微伏级信号在传输中容易引入各种干扰。应变信号的频谱范围较宽,如测试桥梁应力时为赫兹级,测试高速发动机应力时为几千赫兹级。干扰信号中既有来自于电网的50 Hz工频干扰、广播电视信号,也有电子设备发出的上千赫兹高频干扰,如在汽车应力测试时,常受到火花塞发出的点火脉冲干扰。以工频干扰为例,对于信号频谱小于50 Hz的测试场合,可以选择滤波频率小于50 Hz的低通滤波,对于频谱大于50 Hz的场合可以选择低通频率大于50 Hz的带通滤波器,对于频谱包含50 Hz的场合可以选择50 Hz陷波器。因此需要根据测量现场改变滤波频率,以达到最佳滤波效果。如果采用滤波频率可变的模拟滤波器,其结构较复杂且精度难以保证,应变力测试系统中需要采集的通道数往往多达几十个,增加了滤波器数量。据此,本文介绍基于FPGA的可编程数字滤波器,采用时分复用二阶基本节的工作方式实现高阶多通道滤波。具有如下性能:32处理通道;16 bit数据宽度;200 kb/s处理速度;16阶IIR型滤波;滤波频率与滤波器模型可编程。本滤波器很好地解决了应变测试系统中的滤波问题。
1 IIR滤波器的工作原理及结构
无限长单位冲击响应(IIR)滤波器有多种结构形式,其中级联型是较易于在硬件上实现的,其数学表达式为:
由式(1)可知,滤波器的H(z)完全分解成实系数的二阶因子的形式[1],级联的阶数视具体情况而定,如八阶滤波器由4节二阶基本节串联而成。一个二阶基本节的信号流图如图2所示,结构图如图3所示。
为了实现高阶多通道滤波器,通过构造一个二阶基本节运算模块,并对其进行时分复用,把当前数据的运算输出值作为下次运算的输入值进行多次运算,即可得到高阶滤波结果。把当前通道的数据保存起来再进行下一通道数据的运算,即可实现多通道的数据滤波。
2 滤波器的设计及实现
采用Altera公司的Cyclone III系列FPGA芯片EP3C16Q208作为硬件平台,采用EDA设计软件QuartusⅡ,与Matlab软件中的Filter Design 滤波器设计软件联合进行可编程滤波器的设计[2]。EP3C16Q208芯片具有丰富的逻辑单元、高速存储器、乘法器、锁相环等硬件资源[3]。逻辑单元用于构造滤波器中的加法器及控制逻辑;存储器组织成双口RAM及FIFO,用于存储滤波器系数及运算结果;采用多个18位乘法器构造64位乘法器,精度接近双精度浮点型运算,充分利用了片上资源。整个设计外围电路仅需电源电路、晶振电路及配置电路,结构简洁且工作可靠。
2.1 滤波器的设计方法
滤波器的设计使用Matlab软件的Filter Design 滤波器设计软件。该软件界面直观,操作方便。首先指定滤波器类型,如低通、高通、带通、带阻等常用的滤波形式,指定滤波器模型,如巴特沃思型、切贝雪夫型、椭圆型等形式。接着输入滤波器的采样频率、滤波频率、阶数等参数即可生成滤波器。软件还可以对滤波器进行各种分析,如幅频特性、相频特性等。通过分析这些特性再调整滤波器参数,直至得到满意的滤波效果为止。最后导出滤波器的二阶基本节系数,转换成二进制格式后通过系数端口输入到本文介绍的滤波器中,即可获得期望的滤波效果[4]。
在应变测试系统中,大多数测试场合存在50 Hz工频干扰,因此需要陷波器将其滤除。对于其他频率范围的干扰,可以用带通滤波器限定低频与高频的范围,尽量把干扰信号滤除。根据干扰信号的特点,可以采用一个50 Hz陷波器串联一个14阶带通滤波器的方案。在应变测试中,阻带衰减率是滤波器最重要的指标,因此选择椭圆滤波器。由于只需要对50 Hz陷波,因此选择单点陷波器。如果50 Hz的谐波分量较大,还可以采用梳状滤波器。为了精确选择滤波频率,可以把滤波频率间隔选得很小,然后把各种滤波频率的滤波器系数导入到数据库中供用户根据实际情况调用[5]。
2.2 滤波器的功能结构
滤波器的功能结构图如图4所示。滤波器包括3个端口,分别是位宽为32 bit的系数输入端口、16 bit的滤波输入端口和16 bit的滤波输出端口。系数输入端口用于输入滤波器系数。数据从输入端口进入滤波器,把32个通道的数据组织成一帧,以帧为单位进行多通道数据输入。数据输出端口输出滤波结果,同样是以帧为单位输出数据。
滤波器内部结构包括输入模块、运算模块、系数模块、主控模块、输出模块5个功能模块。滤波器以运算模块为核心,输入模块提供输入数据,系数模块提供乘法器的系数,输出模块输出运算结果,主控模块控制其他模块协同运作。输入模块包括输入FIFO及输入开关,输入FIFO用于暂存输入的一帧数据,输入开关用于切换运算模块的数据来源,数据来源包括FIFO中的数据及运算模块的输出。运算模块包括加法器、乘法器及存储单元RAM。其中乘法器和RAM都有地址,根据给定地址决定当前运算模块进行某一通道某一阶段的运算。本文所介绍的32通道16阶滤波器中,其地址范围是A0~A255。系数模块包括4个系数寄存器及5个系数存储单元RAM α1k、RAM α2k、RAM β1k、RAM β2k、RAM Ak。这些RAM是双口模式的,写入系数与读出系数独立操作。在写入系数时,系数寄存器用于保存系数α2k、β1k、β2k、Ak,再和系数端口的系数α1k同时写入系数RAM。输出模块包括输出开关及输出FIFO。运算模块的输出包括中间运算数据及最终滤波数据,输出开关切换上述两种数据。输出FIFO存储32个通道的输出数据。主控模块控制各个模块工作,在收到开始信号后,分别输出读地址、输入开关信号、输出开关信号及滤波完成信号。
2.3 滤波器的工作过程
滤波器工作过程包括输入系数阶段及运算阶段。在输入系数阶段,通过地址和系数两个端口把滤波器的系数写入到系数RAM。地址端口首先给出双口RAM的输入口地址A0。系数端口依次送出α10、α20、β20、β10,模块中的寄存器依次传递系数,此时各个系数分别送到对应双口RAM的输入口数据端,在写信号的作用下把系数存储到相应单元。按同样的方式写入地址为A1的系数,直至写入到A255的系数。
输入系数完成后,滤波器进入运算阶段。输入的滤波数据以帧为单位,32个通道的数据组织成一帧传送到输入FIFO中。在开始信号的触发下,滤波器开始处理数据,完成后输出完成信号通知外部器件,外部器件即可从输出FIFO中读出滤波结果。
一帧数据的处理过程可分为以下几个步骤:
(1)外部把滤波数据传送到输入FIFO中,然后给出开始信号,滤波器开始处理数据;
(2)主控模块切换输入开关,选择输入FIFO中通道0的数据作为运算模块的输入,同时选择地址A0的系数送给运算模块,选择运算模块内部RAM中相应的数据;
(3)在一个时钟脉冲的作用下,运算模块完成一次二阶运算,并输出当前运算结果;
(4)主控模块切换输入开关和输出开关,把运算结果传送到运算模块输入端进行下一次二阶运算。同样的方式共进行8次运算,完成16阶滤波运算;
(5)主控模块切换输出开关,把运算结果传送到输出FIFO中,至此完成通道0的滤波;
(6)以同样的方式完成32通道数据滤波,最后输出完成信号,至此完成一帧数据的滤波。
滤波器能够以流水线方式高效运转,即在输出当前帧的滤波结果时可以输入下一帧的数据,实现了连续滤波。为了达到200 kb/s的数据吞吐率,所需时钟脉冲频率为:
200 kb/s×32×8=51.2 MHz(2)
加上初始化时钟总频率约为55 MHz,低于EP3C16-Q208的工作频率,滤波器能够稳定工作。
3 应用与仿真
针对应变测试系统的特点,采用二阶50 Hz陷波器串联14阶带通滤波器的方式组成滤波器。陷波器参数如表1所示,带通滤波器参数如表2所示。
在Filter Design软件中输入表中参数后生成滤波器并进行幅频相应分析,陷波器幅频响应如图5所示,带通滤波器幅频响应如图6所示。
由分析结果可知,带通滤波器获得-80 dB的阻带衰减,实际的滤波效果如图7所示。Vi为输入波形,是50 Hz、500 Hz、5 kHz正弦信号的叠加。将此波形模数转换后进行50 Hz陷波及低频为1 kHz高频为10 kHz的带通滤波后,再将数字信号进行数模转换后得到输出信号Vout。输入信号中50 Hz与500 Hz信号被过滤,故输出信号是频率为5 kHz的正弦波。
本文介绍的多通道可编程滤波器,应用在自主研发的应变测试系统中,取得了较好的滤波效果。滤波频率可变的特点使得能够选择精确的滤波频率。滤波器只使用一片FPGA及少量外围元件,减小了硬件电路规模,降低了功耗,提高了可靠性。该滤波器可根据具体要求设计通道数、运算精度、运算速度等指标后应用到其他数据采集系统中。滤波器的目标文件可以下载到FPGA芯片上,使FPGA成为硬件数字滤波器,也可以把它嵌入到一个更大的系统中作为其中一个功能模块,具有很大的设计灵活性。由于该滤波器是采用大规模FPGA芯片设计,而且输入输出端口采用串行方式,需要外部系统也有相应接口,对于通道数较少的应用场合,成本较高。
参考文献
[1] 程佩青.数字信号处理教程(第2版)[M].北京:清华大学出版社,2001.
[2] 梁二虎,刘文怡,张文栋.基于FPGA的IIR数字滤波器硬件模块的设计[J].微计算机信息,2008,24(2):218-219,198.
[3] 王诚,吴继华.Altera FPGA/CPLD设计[M].北京:人民邮电出版社,2005.
[4] 倪向东.基于FPGA的四阶IIR数字滤波器[J].电子技术应用,2003,29(12):64-66,69.
[5] 潘秀琴,李元,卢勇,等.基于FPGA的程控滤波器设计与实现[J].微计算机信息,2010,26(4-2):124-126.