转自
http://blog.csdn.net/xiufengy/archive/2006/03/24/636646.aspx
基于TMS320VC5402的音频信号采集与处理系统
武汉华中科技大学电子与信息工程系(430074) 江涛 朱光喜 李顶根
摘要:提出一个基于TMS320VC5402的音频信号采集与处理系统。介绍了该系统的总体方案和硬软件设计。讨论了模/数(A/D)和数/模(D/A)转换电路的设计方法以及如何利用TMS320VC5402的多通道缓冲同步串口(McBSP)和PCM1800及PCM1744芯片接口来实现音频信号的采集和输出。实验证明:所设计的基于DSP的硬件和软件系统是一个很好的音频信号采集与处理系统。
关键词:多通道缓冲同步串口 音频信号 TMS320VC5402 采集与处理
近年来,随着DSP技术的普及和低价格、高性能DSP芯片的出现,DSP已越来越多地被广大的工程师所接受,并越来越广泛地被应用于各个领域,例如:语音处理、图像处理、模式识别及工业控制等,并且已日益显示出其巨大的优越性。DSP是利用专门或通用的数字信号处理芯片,以数字计算的方法对信号进行处理,具有处理速度快、灵活、精确、抗干扰能力强、体积小及可靠性高等优点,满足了对信号快速、精确、实时处理及控制的要求。基于TMS320C5402芯片,笔者研制了一套音频信号实时采集与处理系统,并已作为有关音效器研制的硬件试验平台。
1 系统总体方案
系统总体方案框图如图1所示。音频信号(如:电吉它的单声道声音信号是150mV的电信号)经过高精度高速的ADC转换后得到一串数字信号,分帧输入到波形输入缓冲区RAM。然后由手动控制一种或几种处理算法将音频信号调入TMS320C5402的内部进行高速运算。经过处理的音频信号,再输入到高精度高速的DAC转换器中,还原成模拟的声音信号,经音箱功率放大电路放大输出。
利用缓冲区的目的是进行音效的实时处理。系统中各模块是同时进行处理的,一部分信号正在ADC中进行转换,而另一部分信号则在DSP处理器中同时进行算法处理,即整个系统是以流水线的方式进行工作的。
2 硬件电路的设计
高保真的音频系统应该具有较宽的动态范围,选择16~24位的ADC和DAC能完全捕获或恢复高保真的音频信号。系统的核心芯片(DSP)选用美国TI公司的TMS320VC5402[1](以下简称'C5402)。
2.1 DSP芯片
作为DSP家族高性价比代表的16位定点DSP芯片,'C5402适用于语音通信等实时嵌入应用场合。与其它'C54X芯片一样,'C5402具有高度灵活的可操作性和高速的处理能力。其性能特点如下:操作速率可达100MIPS;具有先进的多总线结构,三条16位数据存储器总线和一条程序存储器总线;40位算术逻辑单元(ALU),包括一个40位桶形移位器和两个40位累加器;一个17×17乘法器和一个40位专用加法器,允许16位带/不带符号的乘法;整合维特比加速器,用于提高维特比编译码的速度;单周期正规化及指数译码;8个辅助寄存器及一个软件栈,允许使用业界最先进的定点DSP C语言编译器;数据/程序寻址空间为1M×16bit,内置4K×16bit ROM和16k×16bit RAM;内置可编程等待状态发生器、锁相环(PLL)时钟产生器、两个多通道缓冲串口、一个与外部处理器通信的8位并行HPI口、两个16位定时器以及6通道DMA控制器且低功耗。与'C54X系列的其它芯片相比,'5402具有高性能、低功耗和低价格等特点。它采用6级流水线,且当RPT(重复指令)时,一些多周期的指令就变成了单周期的指令;芯片内部RAM和ROM可根据PMST寄存器中的OVLY和DROM位灵活设置。这些都有利于算法的优化。
'C5402采用3.3V和1.8V电源供电,其中I/O采用3.3V电源供电,芯片的核采用1.8V电源供电。而实际常用的只有5V电源,所以必须采用电源转换芯片。选用TPS7301和TPS7333两块电源转换芯片(它们都是TI公司为配合DSP而设计的电源转换芯片),分别接上适当的外围电阻,构成电阻分压器,即可调整两块芯片的输出电压分别为3.3V和1.8V。
2.2 A/D电路
PCM1800是双声道单片Δ-Σ型20位ADC,单+5V电源供电,信噪比为95dB,动态范围为95dB,其内部嵌有高通滤波器,具有PCM音频接口和四种数据格式,分为主控和受控两种模式,采样频率可选为32kHz、44.1KHz和48KHz。
PCM1800构成音频信号采集系统时,主要涉及到BCK(位时钟信号)、LRCK(采样时钟信号)、FSYNC(帧同步信号)、DOUT(数字信号输出)、SYSCLK(系统时钟输入)这几个对时序有要求的引脚。通过对引脚MODE0和MODE1进行编程,可让PCM1800工作于主控模式(Master Mode)。此时,BCK、LRCK、FSYNC均作为输出,其时序由PCM1800内部的时钟产生电路控制。但SYSCLK只能由外部提供(这里用'C5402的TOUT脚输出信号提供)。PCM1800的系统时钟只能是256fs、384fs或者512fs,这里fs是音频信号采样频率。在主控模式时,FSYNC用来指明PCM1800的DOUT输出的有效数据,它的上升沿表明一帧数据的起始,下降沿表明一帧数据的结束。FSYNC的频率是采样时钟频率LRCK的2倍。在此模式下,位时钟信号BCK的频率是采样时钟频率LRCK的64倍。
通过对PCM1800的FMT0、FMT1两引脚编程(FMT0=1,FMT1=0),可以设置PCM1800输出的数据格式为20位的IIS格式。为了保证在数据处理时不影响新数据的接收以及在接收数据时不中断正在进行的数据处理过程,采用了多通道缓冲同步串口(McBSP)。 PCM1800与'C5402连接后,'C5402使用缓冲串口0接收数据,各种同步信号由PCM1800产生,'C5402是被动接收各种信息。PCM1800与'C5402的硬件接线图如图2所示。
2.3 D/A电路
PCM1744是双声道立体声DAC,包含数字滤波器和输出放大器,动态范围为95dB,具有多种采样频率可选,最高可达96kHz。采用24位的IIS数据输入格式。PCM1744的操作主要涉及到LRCIN(采样时钟信号输入)、BCKIN(位时钟信号输入)、SCKI(系统时钟输入)、DIN(数据输入)这几个对时序有要求的引脚。PCM1744与'C5402连接后,'C5402使用缓冲串口1发送数据,各种时钟信号均由'C5402产生,PCM1744被动接收各种信息。PCM1744的系统时钟信号(SCKI)由'C5402的TOUT引脚提供,TOUT是'C5402的定时器输出信号引脚,有较强的驱动能力,可以驱动多个芯片。PCM1744的数据接收时钟格式必须是IIS格式,'C5402在缓冲串口寄存器中设置各种时钟方式时,必须满足IIS格式的要求。'C5402作为主动工作器件,可以对其缓冲串口输出信号进行调整。输出的采样时钟信号、位时钟信号可以在McBSP寄存器SRGR1和SRGR2中设置,设置遵循图3的原则。
基本的时钟信号可以来自CPU时钟,也可以来自晶振时钟,这在SRGR2寄存器中的第13位设置。基本时钟输入后,经CLKGDV(SRGR1的第7位到第0位)所设置的值进行第一次分频,得到位时钟信号(由BCLKX1脚输出)。值得注意的是,位时钟信号最高为DSP频率的一半。位时钟信号经FPER(SRGR2的第11位到第0位)和FWID(SRGR1的第15位到第8位)所设置的值进一步分频得到采样时钟信号(由BFSX1脚输出),FPER和FWID分别设置采样时钟信号的低电平和高电平的时间值。'C5402与PCM1744的硬件接线如图4所示。
PCM1800完成音频信号采集后,在DSP的外扩程序存储器中嵌入相应的处理算法,语音信号经处理后,再从PCM1744输出。
3 软件设计
软件部分主要包括DSP编程和PC编程。DSP编程的主要任务是初始化、管理板上的资源和完成音频的处理算法,可参考有关资料。PC编程重点则是管理DSP操作和应用层软件编写。
3.1 A/D与D/A程序设计
为了在20kHz的音响频段获得优良的音频输出,A/D和D/A的采样频率应该达到44.1kHz或48kHz。要正确编写采样和输出音频信号的程序,必须对'C5402的McBSP相关寄存器(spcr1, spcr2, rcr1, rcr2, xcr1, xcr2, srgr1, srgr2, mcr1, mcr2, rcera1, rcerb1, xcera, xcerb, pcr1)进行正确的设置[1],以满足'C5402和PCM1744、PCM1800的各种时序要求(位同步、帧同步、时钟信号等)。为了使TOUT能给外围器件提供时钟信号,应设计到DSP的定时和中断操作,具体请参考TI提供的Spru302.pdf资料。
3.2 DSP和PC的编程
DSP程序首先初始化'C5402和模拟接口。在分配好相应的缓冲区和产生相应的中断之后,进行各项音效处理算法,例如:压缩、失真、蛙声、房间噪声抑制ZNR、放大、均衡、合唱、镶边、延时反唱等,或者几种算法混合进行。
PC的编程包括DSP接口部分和应用层编程部分。在PC程序的开始,与DSP接口部分的程序先调用初始化函数,将DSP程序下载到DSP(初始化程序在DSP中载入一个很小的自举程序,然后通过自举程序一段一段地把全部程序载入DSP)中。初始化完成后,与DSP接口部分程序再按自定义的"通信协议"在指定位置读出DSP处理结果帧或DSP的请求帧,并将它交给上一层(应用程序)处理。应用程序亦通过与DSP接口部分程序向DSP发出各种命令。上层应用程序是用户使用系统的界面,它提供语音数据库管理和系统管理等功能。
3.3 基于优化工具的程序优化
根据用户的要求,选择C程序优化器和汇编优化器,对编码器的特定性能如代码长度、计算速度等进行优化。使用方法是在编译(Built Options)时设定不同的编译选项来控制优化目标。根据我们的实践,认为选择下列几项进行优化对提高计算速度等的影响较大:
(1) -pm:程序级全局优化,包括程序的外部访问、全局变量的优化和函数的外部调用。
(2) -o3:采用三级优化技术。其中第一级优化主要完成消除无用赋值和局部公共表达式等,第二级优化主要完成循环算法的优化并将循环中的数组访问转化为指针增量形式、实施循环展开、消除全局公共子表达式和无用赋值等,第三级优化主要完成消除冗余代码、简化表达式和语句、使用内联(inline)函数并展开等。-o3在上述基础上还完成消除从未使用的函数、对函数声明进行重排序和对函数使用内联形式等。
(3) 使用内联函数(intrinsic)。 'C5402编译器提供的intrinsic可以快速优化C代码。Intrinsic是直接映射为内联的'C5402指令的特殊函数(ETSI函数)。Intrinsic用前下划线表示,使用时同函数的调用一样。
实践表明:选择上述几项进行优化,只要编译选项选择适当,其效果是很显著的,计算速度可提高5~10倍,当然其代码长度会有少许增加。
3.4 音频信号处理算法简介[2]
在声音的拾取和传输过程中,由于设备和器件的限制,其幅度对频率的响应并不是一致的,极有可能出现某些频率成分的增益太大或太小。对于频率响应特性的这类缺陷,需要进行适当的调整。音频信号的均衡算法,就是通过软件设计调节某些频率成分的增益,对其进行提升或衰减。声音信号经均衡处理后,可以弥补频率响应特性的缺陷,也可以人为地制造一些较好的音响效果。
另外,乐音具有较大的动态范围,但音响设备本身允许的信号动态范围是有限的。如果对乐音不作处理直接送到音箱,则会产生大信号过载而失真从而使小信号淹没在噪声中的情形,音质因而下降。设计算法对音频信号进行压缩处理,其目的就是来改变信号的动态范围,使大信号的强度变弱,小信号的强度增强,即信号的放大倍数随着输入信号的电平而改变。压缩算法要保证系统的频率响应保持平坦。
当然,音频信号的处理是一个很复杂的过程,例如电吉它音效器还包括调制、延时混响等算法的处理。
本文设计的音频信号采集与处理系统,已作为电吉他等音效器研制的硬件试验平台,并具有如下算法:压缩模块、失真模块、ZNR/AMP模块、均衡模块、调制模块、延时混响模块。各个模块可以单独使用,也可以串联使用,并采用两个LED数码显示器表示选择好的混合
音效模式。它大大改变了电吉它自身的音 {MOD},可产生压缩、失真、蛙声、房间噪声抑制(ZNR)、放大、均衡、合唱、镶边、延时反响等多种单独的音 {MOD}效果,也可同时使用几种音 {MOD}效果,极大地丰富了电吉他现场演奏效果。把相同的电吉它信号分别输入Z00M 505 (日本ZOOM公司生产)和该系统,然后分别把输出波形在时域与频域以及幅值与相位上进行分析比较,进行算法的优化处理,可以发现最终音 {MOD}效果相差无几。另外,在此系统中,既有A/D又有D/A,构成一个闭环,可自发自收;而算法则集中在DSP芯片内进行模块化处理,这给系统的设计和调试带来了很大的方便。所以,如果能在本文提出的以TMS320VC5402 DSP芯片为核心器件的音频信号采集与处理系统的基础上,设计出功能及效果与ZOOM 505相媲美的电吉它音效器,可以从根本上改变国内目前的电吉它音效器市场基本上被国外产品所垄断的局面[3],具有很强的实用价值。
参考文献
1 TMS320VC5402 FixedPoint signal processor. TI Technology document Sprs079e,2000.8
2 姚天任. 数字语音处理.武汉华中理工出版社,1999
3 冒 捷.DSP-数字化音频领域的未来.西部广播电视,2000(9)
(收稿日期:2002-01-10)
本文来自CSDN博客,转载请标明出处:
http://blog.csdn.net/xiufengy/archive/2006/03/24/636646.aspx