处理器/DSP
TMS320C6713是TI公司开发的一款新型浮点DSP芯片,它基于超长指令字结构(VLIW),非常适合于做高强度的数学运算,被认为是TI公司运算能力最强的处理器之一。本文使用合众达公司开发的一款基于TMS320C6713芯片的开发板构建了音频信号处理系统,对音频信号的IIR格型自适应滤波处理算法进行硬件验证。
1 硬件系统设计
开发板系统总体方案框图如图1所示。模拟音频信号首先通过高性能前置运算NE5532进行预放,然后进入音频ADC进行A/D转换得到串行输出的数字音频信号,本文使用CIRRUS公司最新专业级音频芯片CS4272,该芯片使用了一个差分模拟结构,采样率高达192 kHz,实际信噪比超过90 dB。接着数字音频信号经过FPGA通过DSP的McBSP口进入DSP芯片TMS320C6713。进入DSP的数据存放在DSP的内部存储区以利于处理器进行高速运算,经过DSP处理后的数据同样通过DSP的McBSP口输出到FPGA,然后通过DAC输出到前置运算NE5532进行放大后输出。电路中同时还接了一个单片机芯片STC89LE52,它用于控制LED、按键、A/D、D/A转换器以及与FPGA进行数据通信。
2 CCS和CSL简介
CCS(Code Composer Studio)是TI公司推出的用于开发DSP芯片的集成开发环境,它采用熟悉的Windows风格界面,提供了基本的代码生成工具,具有编辑、编译、链接、软件仿真、硬件调试以及实时跟踪等功能,支持*.asm,*.c,*.h,*.cmd等多种格式并最终生成*.out等可供下载至硬件电路运行的二进制格式文件,它还提供了多种C/C++代码优化功能和一些实时分析及编程方案。此外,CCS的调试和仿真具有很强的功能:允许中断点、剖析点及探测点三种断点设置,分别实现程序断点、实时分析和数据导入等功能。CCS为DSP芯片的开发与设计提供了极大的便利,是目前使用最为广泛的DSP开发环境之一,其版本已发展至4.1甚至更高。
在DSP应用系统中,不可避免地会涉及到大量对DSP器件外设特别是片上外设的编程处理工作,这将消耗开发工程师在开发初期大量的精力。在TI公司的CCS开发环境中,提供了DSP片级支持库CSL作为一个组件,多数CSL模块都由对应函数、宏、类和表示符号组成,利用这些模块可以非常方便地完成对DSP片上外设的配置和控制的编程工作,从而简化了DSP片上外设的开发工作,缩短了用户程序的开发周期,并且可以达到标准化控制管理片上外设的能力,减少DSP硬件特殊性对用户程序代码的影响,以方便对用户代码在不同器件间的移植工作。
3 自适应IIR格型滤波器及算法
3.1 自适应IIR格型滤波器
自适应滤波器就是其权系数可以根据某种自适应算法来不断修改,使系统的冲激响应满足给定的性能判断。它的设计包括结构设计和自适应算法的选取、最佳参数的确定,以及有效字长效应影响的最小化等。自适应滤波器的原理图如图2所示。它主要由两部分组成:系数可调的数字滤波器和用来调节或修正滤波器系数的自适应算法。
图中滤波器的结构可以是IIR型结构,也可以是FIR型结构。尽管IIR结构的滤波器性能不够稳定,但在实际应用中它能够以很小的复杂度实现和FIR滤波器相同的功能,且可以利用模拟滤波器设计的结果,所以在对稳定性要求不高的情况下这是一个理想的选择。本文所采用的是IIR格型自适应滤波器,格型结构的优点是按阶递归,增加或者减少级数不会影响已经存在的阶数设计。
格型IIR滤波器的结构框图如图3所示。它由两个格型滤波器级联而成,上方的格型滤波器H1(z)的输入为Input,输出设为s0(n);下方的格型滤波器H2(z)的输入为s0(n),输出为Output。
采用TI公司开发的C67xDSPLIB库函数DSPF_sp_iirlat。DSPF_sp_iirlat是单精度IIR格型滤波算法。其C语言形式为:
3.2 自适应滤波器算法
在前面讨论了自适应滤波器的原理和结构,接下来讨论自适应滤波器的另一个关键组成部分:自适应算法。目前,大多数自适应滤波器都采用最小均方算法(LMS),因为它容易设计、实现且性能稳健。自适应算法是根据某种准则来设计的,目的在于设法使y(n)和d(n)尽量接近,不同的算法实质一样,只是接近的衡量标准不一样。最常用的准则是最小均方误差(Mean Square Error,MSE)准则,即期望信号d(n)与滤波器输出y(n)之差e(n)的平方值最小,并根据这个准则来不断调整自适应算法。采用TI公司开发的C67xDSPLIB库函数DSPF_sp_lms。DSPF_ sp_lms为单精度浮点LMS算法,实现LMS自适应算法。其C语言形式为:
4 自适应IIR格型滤波算法的DSP实现
由于自适应滤波器需要两个输入端,一个为主信号输入端,另一个为参考信号输入端。因此,如何在软件和硬件上设计和实现两个信号通路的建立问题是自适应滤波器的关键之一。为了解决双通道自适应滤波器的信号输入通道问题,可以采用开发板上的CS4272编解码器的立体声输入功能,利用立体声编解码器的左、右两路音频输入作为主信号输入和参考信号输入。然后将两个通道的信号送往DSP进行自适应IIR格型滤波处理,将处理后的信号通过McBSP0传送到CS4272编解码器,CS4272编解码器的D/A转换电路再将数字信号转换为模拟音频。整个自适应滤波的过程如图4所示。
本文中自适应滤波器的参考输入通道采用的是目标板上的立体声输入接口的左通道,主信号通道采用立体声接口的右通道,操作完成后进行交替,采用Ping-Pong数据缓冲结构,Ping-Pong缓冲存储区分配采用下面的C语言形式:
程序使用CCS开发环境进行编译、链接生成可执行公共目标文件(COFF),然后加载运行。滤波器的权系数设定为512阶,自适应步长为5×10-5,输入信号为某组给定的音频信号,通过CCS开发环境的图形分析工具得到测试结果如图5所示。可以看到,滤波前后的频谱图非常相似,结果表明该滤波器具有很好的滤波效果。
最后通过SEED-XDSusb 2.O仿真器下载到开发板上运行并播放音乐进行实时测试,实验结果符合预期效果,有很好的实用价值。
5 结语
本文设计的重点和难点是掌握和应用DSP来实现音频信号的采集、输出的硬件平台的构建,研究了IIR格型自适应滤波处理算法的DSP实现问题,最终通过DSP软件编程完成了目标算法的工程实现。本文提出的基于这种特殊结构的自适应滤波器,由于实时性强和滤波效果明显,将越来越广泛地被应用于各种工程中。
全部0条评论
快来发表一下你的评论吧 !