多制式语音编码及其DSP实现
编码算法标准,有4种速率。在此项目中,使用32kbps的速率。ADPCM算法是一种波形编码,它在PCM编码的基础上引入了预测和差分的概念,仅对实际值民预测值之间的差值进行编码。在编码过程,用过去样点的值对当产点进行预测,并自适应地调整预测系数数,使预测误差很小,从而在降低码率的同时,保持了很高编码质量。
(4)CVSD(32kbps/16kbps)算法
连续可变分辩率增量调制,是一种1bit的差分波形编码方式。自适用的量阶随信号统计特性的变化而变化,在信号很大动态范围内,可获得最大信噪比。并且易于实现,电路结构简单。
主要技术:三连0/三连1检测,即若检测到码流中有三连0或三连1,则表示信号在骤升或骤降,调整量阶以适应信号变化。
2硬件系统
(1)硬件板介绍
在发端,模拟信号通过前端处理电路和A/D采样,转换成8bitA-lawPCM信号。对数PCM信号在TMS320VC5409中转换线性码,并进行压缩编码。输出的G.729a/ADPCM/CVSD编流在信道上传输。
接收端接收到的压缩码流在DSP中被解码成对数PCM信号,再经过D/A变换和用户电路,最终得到模拟话音。其中CPLD用来产生8kHz的帧同步信号,使各硬件芯片之间协同工作。
A/D、D/A部分采用单片MC14557芯片。单路信号的硬件系统框图如图1所示。
(2)算法的硬件选择
程序定义了两个标志变理flag1、flag2。利用VC5409提供的可屏蔽中断INT0~INT3,在中断服务例程中对2个标志位进行设置,从而控制主程序的跳转。
系统加电后,INT0~INT3其中一个管脚给出中断请求信号,程序执行中检测到哪个中断,就执行该中断对应的编码算法。接着,主程序对IMR寄存器置位以屏蔽这些中断,直至下次系统复位。其中INT0中断在测试中是无编码转换的跳转,但在应用中用于选择32kbps的CVSD算法。表1是算法选择的硬件中断与标志位设置。
表1算法选择的硬件中断与标志位设置
INT0直通,无编码转换flag2=0flag1=0INT1G.729aflag2=0flag1=1INT216kbpsCVSDflag2=1flag1=0INT332kbpsADPCMflag2=1flag1=1
(3)数据流输入和输出
VC5409提供了3个McBSP(MultichannelBufferedSerialPorts),并在其中集成了硬件对数PCM编解码器。串口的双缓冲区发送、三缓冲区接收能保证数据的连续性。收发的数据流字长可以是8、12、16、20、24、32bit,每帧最多可以有128个字。表2是本项目采用的串口配置。
表2串口配置
串口数据流字长(bit)帧长(word)读/写控制同步事件/中断McBSP0PCM84×1DMAREVT/XEVTMcBSP1G.729a164×1DMAREVT/XEVTMcBSP2ADPCM/CVSD322or4×8bitCPURINT/XINT
对每种算法,4路编解码器都要求全双工工作,因此,对3个McBSP都进行了配置。其中,McBSP0负责PCM码流的收发。PCM码流是4路8bit的A-law 《多制式语音编码及其DSP实现(第2页)》
本文链接地址:http://www.oyaya.net/fanwen/view/174716.html
(4)CVSD(32kbps/16kbps)算法
连续可变分辩率增量调制,是一种1bit的差分波形编码方式。自适用的量阶随信号统计特性的变化而变化,在信号很大动态范围内,可获得最大信噪比。并且易于实现,电路结构简单。
主要技术:三连0/三连1检测,即若检测到码流中有三连0或三连1,则表示信号在骤升或骤降,调整量阶以适应信号变化。
2硬件系统
(1)硬件板介绍
在发端,模拟信号通过前端处理电路和A/D采样,转换成8bitA-lawPCM信号。对数PCM信号在TMS320VC5409中转换线性码,并进行压缩编码。输出的G.729a/ADPCM/CVSD编流在信道上传输。
接收端接收到的压缩码流在DSP中被解码成对数PCM信号,再经过D/A变换和用户电路,最终得到模拟话音。其中CPLD用来产生8kHz的帧同步信号,使各硬件芯片之间协同工作。
A/D、D/A部分采用单片MC14557芯片。单路信号的硬件系统框图如图1所示。
(2)算法的硬件选择
程序定义了两个标志变理flag1、flag2。利用VC5409提供的可屏蔽中断INT0~INT3,在中断服务例程中对2个标志位进行设置,从而控制主程序的跳转。
系统加电后,INT0~INT3其中一个管脚给出中断请求信号,程序执行中检测到哪个中断,就执行该中断对应的编码算法。接着,主程序对IMR寄存器置位以屏蔽这些中断,直至下次系统复位。其中INT0中断在测试中是无编码转换的跳转,但在应用中用于选择32kbps的CVSD算法。表1是算法选择的硬件中断与标志位设置。
表1算法选择的硬件中断与标志位设置
INT0直通,无编码转换flag2=0flag1=0INT1G.729aflag2=0flag1=1INT216kbpsCVSDflag2=1flag1=0INT332kbpsADPCMflag2=1flag1=1
(3)数据流输入和输出
VC5409提供了3个McBSP(MultichannelBufferedSerialPorts),并在其中集成了硬件对数PCM编解码器。串口的双缓冲区发送、三缓冲区接收能保证数据的连续性。收发的数据流字长可以是8、12、16、20、24、32bit,每帧最多可以有128个字。表2是本项目采用的串口配置。
表2串口配置
串口数据流字长(bit)帧长(word)读/写控制同步事件/中断McBSP0PCM84×1DMAREVT/XEVTMcBSP1G.729a164×1DMAREVT/XEVTMcBSP2ADPCM/CVSD322or4×8bitCPURINT/XINT
对每种算法,4路编解码器都要求全双工工作,因此,对3个McBSP都进行了配置。其中,McBSP0负责PCM码流的收发。PCM码流是4路8bit的A-law 《多制式语音编码及其DSP实现(第2页)》