基于DSP的实时语音处理设计(共14页).doc
精选优质文档-倾情为你奉上基于DSP的实时语音处理设计摘要:基于TMS320VC5402的音频信号采集与处理系统。介绍了该系统的总体方案和硬软件设计。讨论了模/数(A/D)和数/模(D/A)转换电路的设计方法以及如何利用TMS320VC5402的多通道缓冲同步串口(McBSP)和PCM1800及PCM1744芯片接口来实现音频信号的采集和输出。通过改变输入输出压缩比例自动控制增益的幅度,扩大了接收机的接受范围,它能够在输入信号幅度变化很大的情况下,使输出信号保持恒定或仅在较小范围内变化,不至于因为输入信号太小而无法正常工作,也不至于因为输入因为输入信号太大而使接收机发生饱和或阻塞。实验证明:所设计的基于DSP的硬件和软件系统是一个很好的音频信号采集与处理系统。关键词:DSP , TMS320VC5402 , 多通道缓冲同步串口, 音频信号, 采集与处理专心-专注-专业1.绪言近年来,随着DSP技术的普及和低价格、高性能DSP芯片的出现,DSP已越来越多地被广大的工程师所接受,并越来越广泛地被应用于各个领域,例如:语音处理、图像处理、模式识别及工业控制等,并且已日益显示出其巨大的优越性。DSP是利用专门或通用的数字信号处理芯片,以数字计算的方法对信号进行处理,具有处理速度快、灵活、精确、抗干扰能力强、体积小及可靠性高等优点,满足了对信号快速、精确、实时处理及控制的要求。对实时数字信号处理的应用需求和超大规模集成电路技术水平的飞速发展,推动着DSP性能不断提高。DSP是一种专用的数字信号处理器。随着超大规模集成电路技术上取得的突破进展,高度集成化的DSP数字信号处理器具有体积小、功耗低和运算速度快等诸多优点,因此非常适用于语音信号的压缩处理。基于DSP的实时语音处理系统,它具有可选择的信号采样速率和高性能的数字信号处理能力,不仅可以用来对立体音频信号进行实时编解码处理,还可以用来作为高速的实时信号采集与处理板使用。它包括多路语音实时采集,压缩处理,存储功能等基本功能。根据设计要求中的要点,所要设计的基于DSP的实时语音处理系统功能是,它能同时输入至少两路音频信号,而且能够对两路输入信号进行实时采集并将模拟信号数字化,然后对信号进行数字信号处理,并能够根据要求存储不少于10小时的录音,最后输出音频信号。那么在设计系统过程中,为满足要求要有信号采集,模/数及数/模转换,数字信号处理部分,包括数据压缩等,电源电路,复位电路,时钟电路。信号特征分析音频信号经过高精度高速的ADC转换后得到一串数字信号,分帧输入到波形输入缓冲区RAM。然后由手动控制一种或几种处理算法将音频信号调入TMS320C5402的内部进行高速运算。经过处理的音频信号,再输入到高精度高速的DAC转换器中,还原成模拟的声音信号,经音箱功率放大电路放大输出。2.本设计的任务1.输入信号为2路语音信号,要求系统能对2路输入信号进行实时采集、数字化处理、压缩、存储(录音),要保证一定的录音质量,录音时间不少于10小时。2.根据已知参数对输入信号特征进行分析、需求分析,选择确定DSP芯片型号、语音采集芯片型号,完成系统硬件设计。2.1本设计的实现方案1、系统结构框图:高精度高速音频信号ADC波形输入缓冲区RAMTMS320VC5402波形输出缓冲区RAM高精度高速音频信号DAC音频处理程序存储区EPROM语音信号存储器SDRAM电源复位电路图1 系统结构图音频系统应该具有较宽的动态范围,选择1624位的ADC和DAC能完全捕获或恢复高保真的音频信号。系统的核心芯片(DSP)选用美国TI公司的TMS320VC54021(以下简称'C5402)。 2、 DSP芯片模块是整个实时语音处理系统的核心部分,它对经数字化的信号进行压缩,编解码等。A/D转换模块功能是把模拟信号数字化,包括采集和量化,这部分为DSP处理语音数字信号做好了准备;D/A转换模块就是把数字信号转换为模拟的信号,输出音频信号。SDRAM(动态随机存储器)存储器模块主要是为DSP处理器扩展存储容量,达到要求的存储容量;但要注意的是要与DSP处理器的速度相匹配,以便良好的运行。电源模块是为内部芯片及周边系统电路提供能量的部分。3、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位 可灵活设置。2.2、硬件设计1、C5402采用3.3V和1.8V电源供电,其中I/O采用3.3V电源供电,芯片的核采用1.8V电源供电。而实际常用的只有5V电源,所以必须采用电源转换芯片。选用TPS7301和TPS7333两块电源转换芯片(它们都是TI公司为配合DSP而设计的电源转换芯片),分别接上适当的外围电阻,构成电阻分压器,即可调整两块芯片的输出电压分别为3.3V和1.8V。 2、A/D电路 PCM1800是双声道单片型20位ADC,单+5V电源供电,信噪比为95dB,动态范围为95dB,其内部嵌有高通滤波器,具有PCM音频接口和四种数据格式,分为主控和受控两种模式,采样频率可选为32kHz、44.1KHz和48KHz。3、 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倍。 4、 通过对PCM1800的FMT0、FMT1两引脚编程(FMT01,FMT10),可以设置PCM1800输出的数据格式为20位的IIS格式。为了保证在数据处理时不影响新数据的接收以及在接收数据时不中断正在进行的数据处理过程,采用了多通道缓冲同步串口(McBSP)。 PCM1800与'C5402连接后,C5402使用缓冲串口0接收数据,各种同步信号由PCM1800产生,'C5402是被动接收各种信息。PCM1800与C5402的硬件接线图如图2所示。图2 PCM1800与C5402的硬件接线图5、电源管理功能模块所用器件: TPS73HD301( 3.3-V/Adjustable Output,)该芯片一端输入可调,范围是(1.2-9.7V)图3 TPS73HD3016、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中设置,设置遵循图4的原则。图4 C5402时钟发生流程图基本的时钟信号可以来自CPU时钟,也可以来自晶振时钟,这在SRGR2寄存器中的第13位设置。基本时钟输入后,经CLKGDV(SRGR1的第7位到第0位)所设置的值进行第一次分频,得到位时钟信号(由BCLKX1脚输出)。值得注意的是,位时钟信号最高为DSP频率的一半。位时钟信号经FPER(SRGR2的第11位到第0位)和FWID(SRGR1的第15位到第8位)所设置的值进一步分频得到采样时钟信号(由BFSX1脚输出),FPER和FWID分别设置采样时钟信号的低电平和高电平的时间值。C5402与PCM1744的硬件接线如图5所示。图5 PCM1744与C5402接线图PCM1800完成音频信号采集后,在DSP的外扩程序存储器中嵌入相应的处理算法,语音信号经处理后,再从PCM1744输出。7.复位电路:所用芯片为74HC14 图6 复位电路存储器模块:所用芯片为MT48LC8M8A2TG-75存储容量Density 为64Mb数据宽度16位 工作电压 3.3V TSOP封装 54管脚 时钟速率133 MHz 图7芯片为MT48LC8M8A2TG-753、软件设计在本课程设计中的一些主要的程序语音的采集滤波与放大int dIn21=0,mOut21=0; /定义dIn mOutchar dOut ;char hn21=0.05;int Read_BSP1(void);void Write_BSP1(int);void Led_Light(void);int AGC_audio(int);/ Main programvoid main() init_board(); while (1) int i,j; dOut=0; for (i=0;i<21 ;i+) dIni=Read_BSP1(); mOuti=AGC_audio(dIni); /将采集大信号放大 for(j=0;j<21;j+) dOut=dOut+mOuti*hnj; /将放大后大信号通过滤波器 AGC放大程序 int AGC_audio(int AGC_in) /将采集的音频信号dIn传递给AGC_inint AGC_out; /用于存放放大后的信号static int dTime=0; /用于设置峰值更新的时间static float AGC_Coff=1.0; /初始化放大系数static int maxAGC_in=0; /用于保存一段时间(4096个时钟)内的长期峰值static int maxArrIn=0; /用于保存临时峰值if(AGC_in>maxArrIn) /如果输入信号大于临时正峰值maxArrInmaxArrIn=AGC_in; /则更新临时峰值if(-1*AGC_in>maxArrIn) /早果输入信号大于临时负峰值maxArrInmaxArrIn=-1*AGC_in; /则更新临时峰值if(dTime>4096) /每隔4096个时钟修改一次长期峰值maxAGC_in=maxArrIn; /则更新长期峰值maxArrIn=0; /并重新捕捉临时峰值dTime=0; /重新开始计时dTime+;if(AGC_in > maxAGC_in) /及时检测长期正峰值勤maxAGC_in=AGC_in; /及时更新长期正峰值if(maxAGC_in>10) /如果输入信号大于1AGC_Coff=500.0/(maxAGC_in+100); /按信号幅度成反比关系计算放大系数if(-1*AGC_in)>maxAGC_in) /及时检测长期正峰值勤maxAGC_in=-1*AGC_in; /及时更新长期负峰值if(maxAGC_in>10) /如果输入信号大于-1AGC_Coff=500.0/(maxAGC_in+100); /按信号幅度成反比关系计算放大系数if(maxAGC_in<=10) AGC_Coff=0; AGC_out=AGC_in*AGC_Coff; /将输入信号乘以放大系数(即放大信号)if(AGC_out>20000) /对放大后的信号进行限幅AGC_out=20000; /如果信号幅度超过2000则用2000表示if(AGC_out<-20000)AGC_out=-20000;return AGC_out; /返回放大后的信号,即AGC_audio(dIn)=AGC_out滤波器放大设计 图8滤波器放大设计4、系统调试及结果分析(1)调试步骤: 测试电源电压 测试DSP芯片的输出频率 对硬件系统进行系统仿真 对DSP外围硬件调试 模数接口的调试 (2)软件调试 DSP系统的软件调试主要是在仿真器上进行。为了提高程序的效率,编写系统软件可采用三种不同的方法,即用汇编语言编写、C语言编写以及C与汇编的混合语言编写。 软件调试时,可以通过比较C程序的模拟结果与汇编程序的结果来实现。通常,两种结果应完全一致。 (3)系统调试 本系统的初始化主要有以下几项工作: 中断矢量的重定位 工作时钟设置 等待状态数的设置 中断设置 其他设置 (4)结果分析最后试听出来大致效果良好,能够将采集到的语音进行适当的滤波以及放大处理.在本次课程设计中我们遇到了一系列问题:1.耳机和麦在试听初没有声音或杂音很大解决方法:将耳机和麦插在电脑的插孔里,通过电脑测试耳机和麦是否正常2.调整好程序后试听中耳机里面大杂音很大,啸叫声不断.解决方法: 调整滤波器以及AGC放大程序数据的设置.3.试听过程中发现从远处传来大声音强,近处大声音要弱.原因:近处大声音过大,在采集声音信号的过程中失真了.5、设计总结及心得本次课程设计,我了解了模/数(A/D)和数/模(D/A)转换电路的设计方法,掌握了利用TMS320VC5402的多通道缓冲同步串口(McBSP)和PCM1800及PCM1744芯片接口来实现音频信号的采集和输出的方法。通过改变输入输出压缩比例自动控制增益的幅度,扩大了接收机的接受范围,使它能够在输入信号幅度变化很大的情况下,使输出信号保持恒定或仅在较小范围内变化。通过本次课程设计,加深了我对DSP的掌握和理解,巩固了我在DSP技术原理及应用课程中所学的基本理论知识和实验技能,使我对该课程有了更深入的了解,进一步激发了我对所学专业学习的兴趣,提高了我的学习、独立思考及动手的能力。课程设计不仅是对前面所学知识的一种检验,而且也是对自己能力的一种提高。通过这次做课程设计使我明白了自己的知识还很欠缺,要学习的东西还很多。我明白学习是一个长期积累的过程,以后的工作、生活中都应该不断的学习,努力提高自己知识和综合素质。