基于DSP的数字效果器的研究
2008-10-14
作者:游林儒 李 慧 方昌始
摘 要: 提出了一种基于TMS320VC5402 DSP的音频信号" title="音频信号">音频信号处理系统。介绍了该系统的总体方案和硬软件设计,并对音频信号的处理算法进行了论述。实际使用证明,所述的基于 DSP的硬件和软件系统是一个很好的音频信号采集与处理系统。
关键词: 音频信号 音频效果 数字信号处理
在调音台和各种音响设备上,效果器是一种不可缺少的设备。有了效果器,才有了声音的千变万化。高质量的效果器能达到令人满意的效果,使人有身临其境的感觉。现在效果器上的效果种类越来越多,有的多达几十种。实际上从声学原理考虑,一共只有五种基本效果:
(1)延时/延迟类(包括延时、延迟、混响" title="混响">混响、残响等),
(2)压缩类(包括噪声门、均衡器等),
(3)失真类(包括各种失真、金属、“脏”效果器等),
(4)合唱类(包括立体声、镶边、八度器等),
(5)滤波器(包括哇音、相位等)。
目前国内的效果器市场多被国外产品所垄断,价格昂贵。国产的效果器又多为模拟实现,成本高、损耗大、干扰大、稳定性差,且参数不易修改。而基于DSP的数字效果器,是一种具有内置的数字接口且可进行数字音频处理的音响系统,它能克服以上缺点,达到令人满意的效果。
1 系统总体方案
音频信号处理系统如图1所示,整个系统由单片机MCU、数字信号处理器DSP、A/D和D/A转换器、外扩存储器、显示屏和键盘等组成。其中MCU作为主机,整个系统的初始化和控制都由它来完成。DSP作为从机,主要完成音频信号的算法处理,实现各种效果。而LED则把通过键盘控制的各种效果及其参数显示出来,以便工作人员及时调整和修改。由于DSP内部存储器较小,不能满足系统数据和程序存储需要,所以需要外扩存储器。
系统工作时,输入的音频信号是模拟信号,经过高精度、高速度的ADC转换之后得到一串数字信号,分帧送入到波形输入缓冲区RAM。然后经过DSP内部高速处理,通过各种算法实现各种效果。经过处理的音频信号再输入到高精度、高速度的DAC转换器中,还原成模拟的声音信号,经音响功率放大电路放大输出。
为了实现音效的实时处理,加入了缓冲区。系统中各模块是同时进行处理的,一部分信号正在ADC中进行转换,而另一部分信号则正在DSP处理器中进行算法处理。整个系统以流水线方式进行工作,保证了对音效的实时处理。
2 系统硬件电路的设计
DSP芯片选用美国TI公司的TMS320VC5402(以下简称‘C5402),单片机选用PIC16F72,A/D和D/A转换器选用24位的CS4228A,其较宽的动态范围能够满足高保真的音频系统的要求。
2.1 ‘C5402
‘C5402是TI公司于1999年10月推出的性价比较高的定点数字信号处理器,主要特点如下:
·具有先进的多总线结构,三条16位数据存储器总线,一条程序存储器总线和四条地址总线;
·操作速率达100MIPS;
·40位算术逻辑单元(ALU),包括一个40位桶形移位器和两个40位累加器;
·一个17×17乘法器和一个40位专用加法器,允许16位带/不带符号的乘法;
·整和维特比加速器,用于提高维特比编译码的速度;
·8个辅助寄存器及一个软件栈,允许使用最先进的定点DSP、C语言编译器;
·数据/程序寻址空间为1M×16位,内置4K×16位ROM和16K×16位RAM;
·内置可编程等待状态发生器、锁相环(PLL)时钟产生器、两个多通道" title="多通道">多通道缓冲串行口、一个8位与外部处理器通信的HPI口、两个16位定时器以及6通道DMA控制器;
·低功耗,工作电源为3V和1.8V(内核)。
DSP通过其McBSP口与CS4228A相连。McBSP串口" title="串口">串口是在TDM串口和BSP串口的基础上发展而来的。它既可以实现时分多路通讯功能,又可以通过DSP提供的DMA功能实现不用CPU参与的自动缓存功能,从而把 DSP从繁重的串口通讯中解放出来,提高了运行的效率。McBSP串口由数据接收发送部分、时钟及帧同步" title="帧同步">帧同步信号产生器、多通道选择以及CPU中断信号和DMA同步信号等组成。同以前的串口相比,McBSP串口具有相当大的灵活性。串口的接收和发送时钟CLKR和CLKX既可由外部设备提供,又可由内部时钟产生器提供;帧同步信号FSX和FSR的输入、输出极性可以进行选择;串口的信号发送和接收部分既可单独运行,又可合在一起配合工作;CPU中断信号和DMA同步信号使得Mc BSP串口可由CPU控制运行,也可脱离CPU通过直接内存存取单独运行;多通道选择部分使得串口具备了多通道信号通讯能力。
正是由于McBSP串口所特有的灵活性,使其可以满足T1/E1标准和AC97标准。它的多通道接收和发送能力可达128个通道,数据宽度可在8、12、16、20、24和32比特中任选,可进行A律和μ律压缩和扩展。8比特数据传送时可选择从高位或低位开始传送,帧同步信号和数据时钟信号的极性可编程,内部时钟和帧同步信号产生器也可由软件编程控制。
2.2 A/D和D/A电路
CS4228A多媒体数字信号编解码器(CODEC) 在一个压缩的28针SSOP芯片上可提供两个模/数转换器和6个数/模转换器,并分别带有音量控制功能。CS4228A芯片具有功能较强、连接方便、控制容易的特点。该芯片与环绕声解码器相结合,成为DVD机、A/V功放接收器和汽车音响的理想芯片。它可支持杜比数码AC-3、AAC、DTS、杜比逻辑环绕声(Dolby Pro-Logic)、THX和MPEG等标准。一个灵活的串行接口允许使用Left Justified、Right Justified、I2S、或One Line Data 模式。采样率可达100kHz,具有可连接片外静音电路的静音控制引脚,片内具有抗混叠和输出平滑滤波器。
在本系统中,CS4228A采用主模式的工作方式。在工作过程中,LRCK管脚向DSP发出一个帧同步信号,而采样的数据信号将接着帧同步信号后由SDOUT管脚向DSP传送 ,从而完成采样的全过程。经过DSP处理的数据信号由BDX0管脚向CS4228A传送。CS4228A与DSP之间的主要接线如图2所示。
2.3 单片机部分
单片机主要完成两部分的工作,一是对CS4228A的操作,通过CCLK、CDIN、CS和RST管脚实现对它的初始化和工作模式的选择;另一就是对键盘和LED的控制,实现效果选择和参数显示。
3 软件设计
软件部分包括DSP编程和单片机编程。DSP编程的主要任务是完成音频信号的算法处理,单片机编程的重点则是管理DSP操作和应用层软件的编写。本系统若完全采用汇编语言进行编程,比较麻烦,而C语言以其灵活性和易移植性已经广泛应用在开发系统中。对于更复杂的系统更是如此。本系统采用了混合编程的方法。
这里主要介绍一下音频算法处理的实现。在进行算法研究时,先在PC机上用Matlab进行仿真,然后再移植到DSP平台中。考虑到效率问题,可进一步进行手工汇编的调整。在各种效果实现的过程中,延时不仅是一种最基本的输出效果,也是实现其它输出效果的基础,如混响效果、合唱效果、弗兰格效果,都离不开延时。
基本的延时有两种,其中一种是不带反馈的,其原理如图3所示,它只是对输入实现一次延时,能实现回声效果;另一种是带反馈控制的延时,它能实现声音的反复延时、重复播放,其原理如图4所示。
还有一种特殊的延时,它的延时时间是可变的,可以在基本延时结构的基础上加一个低频振荡器(LFO)来实现。一般情况下,可以用正弦波或者三角波来实现。在合唱和弗兰格效果的实现过程中就要用到这种延时。其原理如图5所示。
目前,基于数字化的延时设备的应用已非常有效。实际上,数字延时设备的实现非常简单,只要有一定容量的内存,在每一个取样间隔将先前值从存储器的一个单元中读出来,然后将当前的输入值存储在另一个存储单元中(有时,这两个存储区域可能是同一个区域,所以在写入一个值前,必须首先将其中的值读出)即可。在下一个取样期间,读写存储区间的另一个区域,当到达存储器底部时,又将从第一个存储区域开始循环。编写一个延时程序一般会使用两个指针:一个读指针和一个写指针,用来记录从存储器读出的地址和写入存储器的地址。每进行一次操作指针就会自动加一。对于第一种不带反馈的延时,可用如下C程序实现:
void delay( )
{
int i,j,k;
for (i=0;i<=delay_size;i++)
{ if (i>=delay)
j=i-delay; //work out the buffer position
else j=i-delay+delay_size+1;
//add the delayed sample to the input sample
s=input+delay_buffer[j]*decay;
//store the result in the delay buffer ,and output
delay_buffer[i]=s;
output=s;
}
}
混响也是一种比较常用且重要的效果,其实现比较复杂,要通过六个并联的梳状滤波器comb和一个全通滤波器allpass才能很好地实现。其实现过程如图6所示。
4 CCS集成开发平台的应用
Code Composer Studio 简称CCS,是TI公司推出的为开发TMS320系列DSP软件的集成开发环境。CCS工作在Windows操作系统下,采用图形接口界面,提供有编辑工具和工程管理工具。CCS所集成的代码调试工具具有各种调试功能,包括原TI公司提供的C源代码调试器和模拟器所具有的全部功能,支持ASM编程、C语言编程以及ASM和C语言混合编程。能对TMS320系列DSP进行指令级的仿真和可视化的实时数据分析。CCS在调试和仿真时具有很强的功能:允许中断点、剖析点及探测点三种断点设置,分别实现程序断点、实时分析和数据导入等功能。此外,还提供丰富的输入/输出库函数和信号处理的库函数,极大地方便了TMS320系列DSP软件的开发过程。在程序编译时,设定不同的编译选项来控制优化目标,如使用-pm、-o3和内联函数等,其效果是显著的,计算速度可提高很多。
本文设计完成的的音频信号处理系统实现了音频的压缩、失真、均衡、延时、混响等效果,各种效果可以单独使用,也可以串接使用,都能达到预想的效果。把相同的电吉它信号分别输入ZOOM 505(日产电吉它音效器)系统和本系统,然后在时域与频域以及振幅与相位上对输出波形进行比较,可以看出最后的音色效果几乎一样。将它用于调音台或效果器等音频设备,具有广阔的市场前景。
参考文献
1 TMS320VC5402 FixedPoint Signal Processor.TI Technology Document Sprs079e, 2000.8
2 彭振哲.使用TMS320C542构成数据采集处理系统.电子技术应用, 2000;26(9)