0引言
如今高速发展的语音信号处理技术已在音频信息的处理、传输和存储等方面得到广泛应用;同时,随着高性能DSP的日益普及,利用DSP对语音信号处理进行算法研究和实时实现正成为新的热点。因此,本文设计并实现了一种语音采集与处理系统,目的是为语音信号处理的算法研究和实时实现提供一个通用平台。
1芯片简介
TLV320AIC23(以下简称AIC23)是TI公司的一款高性能Codec芯片。主要特性有:内置耳机输出放大器,支持MIC和LINE IN两种输入方式(二选一),且对输入和输出都具有可编程增益调节;芯片中的A/D转换器和D/A转换器采用多位Sigma-Delta技术,数据传输字长为16、20、24、32bit,采样率为8kHz~96kHz;在采样率为96kHz的情况下A/D转换器信噪比达到90dB,D/A转换器达到100dB;回放模式下功率为23mW,省电模式下更是小于15uW;只占用25mm2的面积。基于上述优点,AIC23是可移动的数字音频播放和录音使用中的模拟输入输出等应用系统的理想选择,例如MP3播放器等。
TMS320VC5416(以下简称VC5416)是TI公司的一款16bit定点高性能DSP,是TMS320VC54x系列中的第3代芯片。主要特性有:速率最高达160MI/s;3条16bit数据存储器总线和1条程序存储器总线;1个40bit桶形移位器和2个40bit累加器;1个17×17乘法器和1个40bit专用加法器;最大8M×16bit的扩展寻址空间,内置128k×16bit的RAM和16k×16bit的ROM;3个多通道缓冲串口(McBSP);配有PCM3002,可对语音进行A/D和D/A转换。由于VC5416功耗低,性能高,其分开的数据和指令空间使该芯片具有高度的并行操作能力,在单周期内允许指令和数据同时存取,再加上高度优化的指令集,使得该芯片具有很高的运算速度并且该芯片本身具有丰富的片内存储器资源和多种片上外设,因此在工程界得到广泛应用,尤其是在语音编码和通信应用方面。
2系统硬件结构
2.1系统硬件结构
语音采集与处理系统主要包括三个主要部分:以VC5416为核心的数据处理模块;以AIC23为核心的语音采集与编解码(CODEC)模块;用户根据需要扩展的存储器模块。系统硬件结构如图1所示。
图1 系统硬件结构
2.1.1数字信号处理芯片
为满足语音信号处理的实时性要求,语音信号采集与处理系统应具有高速数据处理能力。本系统采用TMS320VC5416芯片作为信号处理芯片。
2.1.2音频CODEC模块
本系统的CODEC模块以TLV320AIC23芯片为核心。
2.1.3电源模块
VC5416属于低功耗定点芯片,采用双电源供电。电源由内核电源(CVdd)和I/O电源(DVdd)两部分构成,其中内核电源为1.8V,I/O电源为3.3V。内核电源采用1.8V供电可以降低功耗;I/O电源采用3.3V供电使得芯片可以直接与外部低压器件接口,而不需要额外的电平转换电路。本系统采用TI公司的TPS73HD318(简称HD318)作为电源输入芯片,HD318提供的两路输出电压一路为1.8V、一路为3.3V。另外该芯片提供的宽度为200ms的低电平复位脉冲还可以用来作为VC5416的上电复位信号。AIC23芯片具有单电源(5V电源)和双电源(3V数字电源+5V模拟电源)两种供电模式,本系统选择双电源供电模式,这样AIC23和VC5416之间就可以直接联接而不需要其它电平转换芯片。
2.1.4 JTAG仿真接口
系统由硬件仿真器XDS510/PP通过JTAG仿真接口和计算机相连,用户可以通过此接口向VC5416芯片加载程序并观察芯片内部存储器的数据,完成系统仿真及程序调试的任务。如果系统需要以脱机方式工作,可以用JTAG仿真接口将用户程序烧录到Flash Rom中,再通过设置启动方式引脚确定系统从片外ROM启动。
2.2硬件接口设计
VC5416有3个McBSP,可以方便地利用其中2个McBSP完成对AIC23的控制和通信,其中VC5416的McBSP0与AIC23的数据口相连,McBSP1与AIC23的控制口相连。
AIC23芯片是一个可编程芯片,内部有11个16位寄存器,控制接口具有SPI和I2C工作方式,这两种工作方式由MODE引脚来选择,即:MODE=0为I2C模式;MODE=1为SPI模式。
AIC23与VC5416的接口电路见图2。
图2 AIC23与VC5416的接口电路
VC5416的2个多通道缓冲串口McBSP分别配置为I2C模式和SPI模式。McBSP0作为数据的发送和接收端口;McBSP1对CODEC写控制字,作为控制端口;AIC23作为从设备,因此设置为Slave模式,而VC5416则设置为Master模式,Codec采样率设置为8kHz。
2.3 BOOTLOADER设计
VC5416片内ROM中有固化的自加载程序(BOOTLOADER),但它对被加载程序的大小有限制。在使用8bit Flash的情况下,只能加载小于16KWord的内容。而三个速率的SELP算法程序区和数据区的总数据量远远超过16KWord,显然只使用片内的BOOTLOADER是不能满足需要的。所以必须自己写加载程序。首先由VC5416片内的BOOTLOADER把自己写的加载程序加载到片内RAM,然后执行这段加载程序,加载其它部分。这里需要解决的一个主要问题就是Flash数据和片内地址空间的映射关系。由于SELP算法的程序数据总量很大,所以必须用到片内扩展的程序区,也就是说MP/MC标志位需要设为0。从此时的Memory Map中可以看出,VC5416可以访问的每块连续片外地址空间只有32K,所以Flash数据只能按照每页32K的方式分页映射到片内地址空间。使用FPGA可以很方便地控制哪页Flash数据映射到片内中,这部分的原理框图如图3所示。
图3 BOOTLOADER原理
3接口软件设计
本系统的软件采用C语言和汇编语言混合编写。由于是利用VC5416的McBSP口来控制AIC23芯片,且2个McBSP口设置成不同的工作方式,所以必须把McBSP初始化为符合AIC23芯片的控制命令时序和要求的工作模式。由于篇幅本文只列出对VC5416及AIC23芯片初始化设置时的部分代码。
3.1 TMS320VC5416初始化
SWWSR=0x7fff;/程序、数据、I/O空间
SWCR=0x0001;/等待周期为7×2=14
BSCR=0x8006;/按32KW分区,HD[7:0],D[15:0]Hold
CLKMD=PLL_DIV_INIT;
Waitloop(0x0400);
CLKMD=PLL_LOCK_INIT_X(5);
Waitloop(0x0400);
PMST=0x0168;/中断向量表定位在0X100,MP/MC=1
OVLY=1,DROM=1;
3.2 TLV320AIC23初始化
为使AIC23正常工作并产生预期的音频效果,必须对其相应的寄存器进行配置。首先对VC5416的I2C模块初始化,将AIC23总线上的地址写入从机地址寄存器ICSAR;再把相应的AIC23内部映射寄存器的地址和待写数据合并为16bit控制字,逐次写入ICDXR,并通过I2C总线发送给AIC23,即可完成对AIC23的初始化配置。
AIC23初始化的部分源代码:
Unsigned int codec_buf[9]={OX1e00,OXOc00,OxO81a,OxOaO4,OxOe01,0x1020,0x1021,0x0117,OxO5f9};
Port_sub_address=(unsigned int*)MCBSP_SPSA_ADDR(1);
Port_sub_index_reg=(unsigned int*)MCBSP_SPAD_ADDR(1);
*Port_sub_address=MCBSP_SPCR2_SUBADDR;
For(i=O;i<9;i++){
While(!(*Port_sub_index_reg&(MASK_BIT(XRDY))));
Set_codec_cs_low();
MCBSP1_DXR1=codec_buf[i];
While(!(*Port_sub_index_reg&(MASK_BIT(XRDY))));
Set_codec_cs_high();}
4结束语
本文的创新点是根据TI公司的DSP芯片TMS320VC5416和语音CODEC芯片TLV320AIC23的特性,设计并实现了一个语音采集处理系统。该系统具有很强的处理能力和灵活的外围接扣电路。实践证明它能够满足实时信号处理的要求,可以作为一种语音信号处理算法研究和实时实现的通用平台。
参考文献:
[1]张雄伟,曹铁勇.DSP芯片的原理与开发应用(第二版)[M].北京:电子工业出版社,2OO0
[2]任丽香,马淑芬,李方慧.TMS220600系列DSP的原理与应用[M].北京:电子工业出版社,2OOO
[3]戴明祯,周建江.TMS320VC54x DSP结构、原理及应用[M].北京:北京航空航天大学出版社,2001
[4]TMS320VC5416 Bootloader.SPRA602C.Texas Instrument, February 2001
[5]TMS320VC5416 Fixed-Point Digital Signal Processor Data Manual.TI Corporation,2003
[6]Stereo Audio CODEC,8kHz-96kHz,with Integrated Head Phone Amplifier TLV320AIC23.TI Corporation,2001
[7]郝软层,徐金甫.基于DSP芯片的MELP声码器的算法实现[J].微计算机信息,2006,10-2:62-64