陈志英 ,刘 虹 ,陈飘萍
(1.厦门理工学院电气工程与自动化学院,福建 厦门 361024;2.厦门理工学院光电与通信工程学院,福建 厦门 361024)
基于模型的数字滤波器设计及DSP实现
陈志英1,刘虹2,陈飘萍2
(1.厦门理工学院电气工程与自动化学院,福建 厦门 361024;2.厦门理工学院光电与通信工程学院,福建 厦门 361024)
以低通音频数字滤波器设计为例,提出一种基于模型的滤波器设计及DSP硬件实现方法.硬件由TIDSP器件TMS320VC5509A与高性能多媒体数字语音编解码器TLV320AIC23构成.软件采用MATLABSimulink对FIR滤波器进行建模,采用S-function编写VC5509A与AIC23相关接口驱动等自定义模型.通过代码自动生成技术产生C代码并下载至DSP中进行处理器在环硬件测试,结果显示音频滤波效果明显,表明基于模型设计方法是正确与高效的.
数字滤波器;DSP实现;MATLABSimulink;TMS320VC5509A;TLV320AIC23
数字滤波器是数字信号处理中常用的算法之一,传统设计方法是先采用MATLAB软件建立滤波器算法模型进行仿真、调试,验证正确后再采用手工编写C代码或汇编代码在DSP硬件系统上实现[1-2].这种方法不仅要求设计人员熟悉数字滤波器理论计算,还要求熟悉DSP硬件架构及软件编程,并需要花费大量时间来编制程序、查错、调试、验证,明显增加和重复了工作量,延长了研究周期,且无法利用MATLAB强大的数据处理工具和可视化功能.因此传统设计方法存在开发难度较大、效率较低等不足.文献[3]提出基于模型的设计方法解决了该问题.基于模型的设计方法核心是将算法模型设计和系统硬件测试在统一的开发环境MATLAB中进行,有效地将开发流程的2个部分结合在一起,在该开发环境中不仅可以对系统结构、算法进行描述,还能够对系统不同层次、不同组件和不同数据类型进行建模.建模后可自动生成嵌入式C代码(无须人工编写程序)下载至DSP硬件系统进行在环测试调试嵌入式代码的实时性,使调试过程中数据可视化,及早发现与解决问题,从而确保在开发早期完成嵌入式系统软件的测试,大幅度提高研究开发的效率[3-5].本文利用基于模型的方法设计了FIR低通音频数字滤波器,结合MATLABIDELINK嵌入式开发环境接口直接生成嵌入式C代码在DSP器件TMS320VC5509A上验证实现.由于MATLAB未集成VC5509A的各种接口驱动,系统还需利用S-function编写DSP音频A/D采集与音频D/A输出等自定义驱动模型.为了方便系统的统一设计及仿真,本文也设计了一个GUI可视化操作界面,该界面可进行FIR滤波器设计与滤波仿真,将较为理想的滤波参数传递给DSP代码,在线调试DSP运行,完成了从设计到软件仿真、再从软件仿真到硬件测试的全过程.
系统是基于高性能定点DSP芯片TMS320VC5509A和高性能多媒体数字语音编解码器TLV320AIC23硬件平台实现.AIC23内部带有ADC和DAC模块,VC5509A利用AIC23内部的ADC模块采集音频信号,然后进行FIR低通滤波处理,最后从AIC23的DAC模块输出,从而完成音频信号的采集、滤波、播放.VC5509A与AIC23的连接采用I2C接口与多通道缓冲串行接口(McBSP0).SCLK、SDIN是AIC23的配置时钟引脚和配置数据输入引脚,与VC5509A的SCL和SDA连接,二者以I2C总线方式进行数据传输.VC5509A通过该I2C接口配置AIC23内部寄存器,其中每个寄存器前7位(bit)为寄存器地址,后9位为寄存器内容.BCLK、LRCOUT、DIN和DOUT分别是AIC23的时钟引脚、帧信号引脚、ADC方向的数据输入引脚和DAC方向的数据输出引脚,与VC5509A的McBSP0串行接口6个引脚CLKR0、CLKX0、FSX0、FSR0、DX0、DR0相连,VC5509A通过该McBSP0接口分别控制AIC23内部ADC模块和DAC模块实现采集与播放音频信号[6-9].系统硬件原理如图1所示.
在MATLABSimulink环境下建立系统仿真模型,如图2所示,包括主系统模型和While循环子系统模型.主系统模型包括AIC23S-Function、constant、while、CustomBoard,功能是利用AIC23S-Function对AIC23和DSP芯片初始化后,触发while模型,并使while模型进入无限循环,如图2(a)所示.While模型设置两个输入控制端IC、In1,AIC23模型初始化完成后输出使能IC端触发While子系统模块;In1端输入常数“1”使While子系统触发后不断循环工作.CustomBoard模型设置系统目标DSP芯片类型为VC5509A,它包含了部分芯片接口的驱动程序,并提供代码自动生成和处理器在环测试功能.While子系统模型内部结构如图2(b)所示,ADS-Function模块实现音频信号A/D采集,DigitalFilterDesign模块实现FIR低通滤波处理,DAS-Function模块实现音频数据D/A转换播放.由于CustomBoard模型未集成VC5509A芯片I2C、McBSP0串行接口驱动程序,AIC23S-Function,ADS-Function,DAS-Function3个驱动模块都是利用S-FunctionBuilder工具建立的自定义CMEXS-Function模型,分别对应AIC23芯片内部寄存器、ADC模块及DAC模块的控制.
2.1S-Function模型
MATLAB中S-FunctionBuilder工具可根据用户要求和已有C代码自动创建生成S-Function模型,无需从头编写S-Function,简化了整个系统模型设计及创建工作.TI公司为VC5509A提供了大量的内部接口应用C源程序,包括I2C、McBSP0串口驱动程序,请参考文献[10]-[12],相关函数与头文件见表1.用户可利用S-FunctionBuilder将这些函数稍作修改后构建成所需的自定义S-Function模型.
下面简要说明S-Function创建过程.打开S-FunctionBuilder,首先设置模型名称,然后在“DataProperties”选项卡设置输入输出端口,在“Libraries”选项卡声明模型头文件、外部函数、源程序(见表1),在“Outputs”选项卡中编辑实现模型功能的输出C代码(如表2所示),最后,单击“Build”按钮创建,若“BuildInfo”选项卡无显示错误信息,则AIC23S-Function创建成功[3].
表2 “Outputs”选项卡输出代码
2.2FIR低通滤波模型
DigitalFilterDesign模块(图2(b))是MATLAB信号处理工具箱中一种图形化滤波器设计与分析工具FDATool,利用FDATool可快速设计FIR或IIR滤波器[13-15].本文采用Kaiser窗口设计FIR低通滤波器,双击该模块,采样频率设置为48kHz,截止频率设置为2 500Hz,阶数设置为16,最后点击“DesignFilter”按钮就完成滤波器参数生成.若在调试过程中需要修改滤波器的参数,重新设置FDATool滤波器要求,就可快速得到新滤波器参数并传递到DSP芯片中运行.
为使基于模型设计具有统一的开发环境,本文设计了系统可视化操作界面(GUI),如图3所示.界面包含2个功能:一是进行FIR滤波器设计及仿真,并将滤波器参数生成C文件,传递给DSP代码;二是对TICCSIDE进行操作控制,完成程序编译、链接、下载、运行和停止等操作,操作命令位于菜单栏“TICCS”中.如此,在统一MATLAB环境下,完成了从系统模型设计到软件仿真、再从软件仿真到硬件测试的全过程.
FIR滤波器设计及仿真可以针对不同的音频片段进行滤波,该片段不一定含有噪音,不含噪音的音频在经过不同类型的滤波器滤波后,将出现不同的效果.例如经过一个低通滤波器,音频的高音片段将大幅度衰减,低音部分则将比较明显,会呈现一个低音炮的效果.反之,如果通过高通滤波器,高音明显突出.下面,将通过对一个含有噪音的音频片段进行音频滤波测试基于模型设计的有效性.图4是一段含有噪音的原始音频片段采样序列及其幅频特性,可判断噪音范围约在3 500Hz之后,因此系统设计一个截止频率为2 500Hz的FIR低通滤波器,采样频率为48kHz,滤波阶数不宜太高(数字滤波器阶数越大,DSP处理的点数就越多,计算量越大,影响处理速度),设置在20阶左右,其幅频特性曲线如图5所示.打开系统仿真模型,自动生成C代码,将滤波参数传递给生成的C代码,并将代码下载到硬件实现处理器在环实时运行[16-18].在硬件板麦克风J5端接入含有噪音的音频信号,在J7输出端接扬声器,结果明显从扬声器分辨出音频滤波后的效果变化.同时将J7端音频保存在PC机中,分析其信号序列与幅频特性,如图6所示,可以看出,噪音已被滤除且滤波效果显著.
本文提出了一种基于模型的数字滤波器设计及其硬件实现方法,以低通音频数字滤波器为设计对象,详细介绍基于模型方法的设计过程及DSP实现,通过DSP处理器硬件在环系统测试验证了基于模型方法的正确性与有效性.结果证明基于模型设计方法大幅度简化了传统滤波器设计过程,缩短了项目的研究开发进度,且模型建立后,类似MATLABSimulink自带模型,可多次重复利用,省去了每次重复建模编程的过程,其模型直接代码生成技术为不熟悉DSP硬件及软件的理论研究人员提供了一种很好的实践验证方法,具有较好的应用借鉴与参考价值.
[1]何丽娜,叶听,汪伟.数字滤波器(FIR)设计算法研究[J].电声技术,2014,38(2):67-70.
[2]谭等泰.最优型数字滤波器的设计与实现[J].电测与仪表,2014,51(4):81-85.
[3]刘杰.基于模型的设计及其嵌入式实现[M].北京:北京航空航天大学出版社,2010.
[4]冯璨,李刚,赵刚.基于模型设计思想的功率测量技术研究[J].电测与仪表,2014,51(19):1-7.
[5]栗华山,李东.一种基于消息驱动的嵌入式DSP系统应用设计模式[J].计算机应用与软件,2013,30(7):294-297.[6]TEXASINSTRUMENT.TMS320VC5509Afixed-pointdigitalsignalprocessordatamanual[EB/OL].[2014-11-03].http://www.ti.com/lit/ds/symlink/tms320vc5509a.pdf.
[7]TEXASINSTRUMENT.TLV320AIC23datamanual[EB/OL].[2014-11-03].http://www.ti.com/lit/ds/symlink/tlv320aic23.pdf.
[8]TEXASINSTRUMENT.TLV320AIC23EVMuser’sguide[EB/OL].[2014-11-03].http://www.ti.com/lit/ug/sleu003/sleu003.pdf.
[9]TEXASINSTRUMENT.TMS320VC5509Ahardwaredesigner’sresourceguide[EB/OL].(2004-06-29)[2014-11-03].http://www.ti.com/lit/an/spraa30/spraa30.pdf.
[10]TEXASINSTRUMENT.ProgrammingtheTMS320VC5509AI2Cperipheral[EB/OL].[2014-11-03].http://www.ti.com/lit/an/spra785a/spra785a.pdf.
[11]TEXASINSTRUMENT.ADSP/BIOSAIC23codecdevicedriverfortheTMS320C5509EVM[EB/OL].[2014-11-03].http://www.ti.com/lit/an/spra857a/spra857a.pdf.
[12]TEXASINSTRUMENT.TMS320VC5509DSPmultichannelbufferedserialport(McBSP)referenceguide[EB/OL].(2005-04-14)[2014-11-03].http://www.ti.com/lit/ug/spru592e/spru592e.pdf.
[13]王彭,颜湘武,董清.基于MATLAB和DSP的电压闪变检测方法的实现[J].电测与仪表,2008,45(11):11-14.[14]张三军,郭庆.基于MATLAB与DSP的心电整系数数字滤波器设计[J].国外电子测量技术,2009,28(3):69-72.
[15]程永进,马 冲.基于Matlab的FIR滤波器在DSP中的实现[J].电子技术,2009(12):59-60.
[16]邹依依,郭灿新,黄成军,等.EmbeddedMATLAB在局部放电DSP嵌入式采集系统中的应用[J].电工技术,2008(12):52-54.
[17]王伟,李育挺,马松辉.基于模型的验证与测试技术[J].计算机测量与控制,2013,21(4):987-989.
[18]侯莹,洪征,潘璠,等.基于模型的Fuzzing测试脚本自动化生成[J].计算机科学,2013,40(3):206-209.
(责任编辑李宁)
Model-Based Digital Filter Design and DSP Realization
CHEN Zhi-ying1,LIU Hong2,CHEN Piao-ping2
(1.SchoolofElectricalEngineeringandAutomation,XiamenUniversityofTechnology,Xiamen361024,China;2.SchoolofOptoelectronicandCommunicationEngineering,XiamenUniversityofTechnology,Xiamen361024,China)
Thispaperpresentsamodel-baseddesignofdigitalfilterandDSPrealization,takingadigitallowpassaudiofilterasexample.ThehardwareconsistedofaTIDSPdeviceTMS320VC5509AandahighperformancemultimediadigitalvoiceprocessorTLV320AIC23.FIRfilterwasbuiltinMATLABSimulinkandinterfacedrivermodelsbetweenVC5509AandAIC23wasprogrammedusingS-function.CcodeofsystemwasgeneratedandloadedintheDSPdevicebytheautomaticcodegeneratingtechnology.AtestofthesystemwithDSPprocessorintheloopwasmadeandtheresultsprovedthatthemodel-baseddesignisworkableandefficient.
digitalfilter;DSPrealization;MATLABSimulink;TMS320VC5509A;TLV320AIC2
2014-11-10
2014-12-08
福建省教育厅科技项目(JK2013036;JB14078)
陈志英(1978-),女,副教授,硕士,研究方向为智能电器及其在线监测技术.E-mail:chzy207@163.com
TN713.7;TP368.2A
1673-4432(2015)01-0039-06