kaiyun官方注册
您所在的位置: 首页> 嵌入式技术> 业界动态> TMS320VC5416器件的G.722.2的研究与实现

TMS320VC5416器件的G.722.2的研究与实现

2008-07-03
作者:黄元峰,黄学达

摘 要:提出自适应多速率宽带语音编码" title="语音编码">语音编码标准G.722.2,重点研究了建立在代数码激励线性基础上的信源编码技术,简单介绍了包括活动语音检测、舒适噪声生成的源控制速率方案及错误隐藏机制。针对G.722.2算法复杂度高的特点,对TI公司的定点DSP TMS320VC5416的硬件原理进行重点研究,给出了编解码算法实现的软件架构,分析了软件实现流程。
关键词:语音编码 自适应多速率 代数码激励线性预测 源控速率

脉冲编码调制(PCM)原理的出现标志着现代数字通信技术研究的开始。经过半个多世纪的发展,数字通信系统以其在可靠性、抗干扰性、易集成性、保密性、交换速度和成本等方面的优异性能取代了模拟通信系统。
为压缩语音编码速率以提高通信系统的频带利用率,扩大通信容量,ITU-T先后推出PCM、ADPCM、G.728、G.729、G.723.1等语音编码标准。2001年,3GPP和ITU-T采纳G.722.2为GSM、WCDMA和3G系统的语音编码解码" title="编码解码">编码解码标准,2002年ITU-T又将其选为有线应用的宽带标准。
1 G.722.2宽带语音编码标准研究[1~7]
G.722.2宽带语音编码器是单个的集成语音编码器,由9种速率模式组成,位速率分别为:23.85、23.05、19.85、18.25、15.85、14.25、12.65、8.85和6.6kbps。它包括活动语音检测(VAD)、舒适噪声生成(CNG)以及对付传输错误和丢包后的错误隐藏机制组成。
1.1 编码算法部分
G.722.2以代数码激励线性预测为基础,通过线性预测分析、基音预测分析和在12.8kHz采样的固定码本参数的分析,以期最小化感觉加权差信号。处理时以帧为单位,分析每帧语音抽取CELP参数,除此还计算出23.85kbps模式下高带增益索引值。
1.2 解码算法部分
主要解码器发送的参数(包括LP参数,自适应码本矢量和增益,固定码本矢量和增益以及高带增益),分析合成重构语音。
1.3 源控制速率方案
源控制速率的作用是让语音编码器用一个低速率来编码只包含背景噪音的语音帧,而不是编码所有的语音。在GSM中,将这种模式称为DTX(非连续传输)控制和操作。编码解码器在采用这种模式编码时,位速率是1.75kbps。网络可以调整其传输方案获得可变速率。
1.4 丢帧/失帧错误隐藏机制
由于传输错误,帧可能会出错,而在无线网络和包交换网络还可能造成帧丢失。为了将单个错帧/失帧屏蔽,错帧/失帧发生时会通知语音解码器,而后初始化错误隐藏的过程。在语音合成时使用一组预测参数,网络通过设置被传输语音帧的类型标志位来指明发生了错帧/失帧或者丢失SID帧。
2 TMS320VC5416的硬件平台解决方案[8][9]
采用 美国TI公司的54X系列定点DSP TMS320VC5416,具有低功耗、高性能等特点。
2.1 硬件平台介绍
TMS320VC5416的主要特征有:
(1)优化的CPU结构:增强的多总线结构,数据总线具有总线保持特性;40bit的算术逻辑单元(ALU),包括两个独立的40bit的累加器,一个40bit的桶形移位器;一个17×17的乘法器连接一个40bit专用加法器,可用来进行非流水线式的单周期乘/累加(MAC)操作等。
(2)存储器:扩展地址模式可最大寻址8M×16bit" title="16bit">16bit;64K×16bit双访问片内RAM;64K×16bit单访问片内RAM;16K×16bit片内ROM。
(3)指令集:支持单指令循环和块循环操作;块存储器传送指令提供了高效的程序和数据存储器管理;支持32bit长字操作;支持并行存储/加载" title="加载">加载指令;支持条件存储指令和中断快速返回;支持定点DSP的C语言编译器。
(4)片上硬件资源:软件可编程等待状态发生器和可编程存储单元转换;锁相环(PLL)时钟发生器;一个16bit定时器;三个多通道缓冲串口(McBSPs);六通道直接存储访问控制器;增强型8/16bit并行主机接口(HPI)。
(5)速度:在3.3V(内核电压1.6V)供电时,执行周期是6.25ns(160MIPS)。
(6)电源:功耗低,工作电源有3.3V、1.6V和1.5V(内核电压),用节电模式IDLE1、IDLE2、IDLE3指令作功率控制,可禁止CLKOUT。
2.2 直接存储器访问DMA
C5416的DMA拥有6个独立的可编程通道,同时允许6个不同的DMA操作。DMA控制器可以在不影响CPU情况下,允许数据在片内存储器、片上外设和片外设备之间独立传输。主要特点:DMA操作独立于CPU;拥有6个通道,DMA可以跟踪6个独立块传输情况;对于内部和外部访问,DMA比CPU有更高优先级;每一通道优先级可编程;每个通道的源、目的地址寄存器值每次读写后可灵活配置,读写一次后地址可以为常数、后加一、后减一或者被一个编程值修改;每次读写内部传送可由选择的时间来初始化;完成一半或整个数据块传送,DMA向CPU发中断;DMA可执行双字传送。
2.3 多通道缓冲串行口McBSP
C5416内置了3个高速、全双工的McBSPs。通过McBSPs可直接接到其他DSP器件、CODEC器件或系统内其他器件。主要特点有全双工通信;双缓冲数据寄存器,允许连续数据流;收发时,独立的帧和时钟;可直接连接T1/E1、AC97等;最大至128通道的多通道收发;u律和A律压扩可选;帧同步和数据时钟的极性可选等。
CPU和DMA控制器通过内部外设总线对McBSP进行访问,当McBSP同步到一个DMA通道时,数据可以集中在发送和接收缓冲区,并且整个缓冲区是连续的。当DMA填充完整个缓冲区后,就触发一个中断给CPU。这就明显降低了中断延时和处理时间。
2.4 Bootloader技术
C54x DSP芯片一般都在片内设置有BOOT程序,其主要功能是:在上电时将用户程序代码从外部存储器加载到程序存储器并执行。加载程序途径有从外部8位或16位EPROM加载,由主机通过8位或16位并行I/O口、串口、HPI以及自定义的自举" title="自举">自举加载。其中自举加载的过程如图1所示。


本文介绍的代码实现过程用到了外部FLASH的并口自举。并口自举检测过程如下:DSP首先从I/O空间的0xFFFFH位置读取自举表的起始地址,如果低8位地址有效,则并行加载;如果低8位数据无效,则DSP将从数据空间0xFFFFH位置读取自举表的起始地址,同样低8位有效则并行加载,否则转串行检测。
3 编解码算法的实时实现[9][10]
汇编语言程序设计是TMS320VC5416应用软件设计的基础,其主要任务是利用DSP芯片提供的汇编指令和伪指令编写源程序完成指定的功能。开发环境是TI公司的集成DSP软件开发环境CCS,开发语言是汇编语言和C语言的混合编程。
由于G.722.2是多速率语音编码,所以在编码解码前要确定编码模式,在硬件平台实现时,通过修改C源代码的编码模式提取部分函数,从而给定每次编码的速率模式,使代码的实现不需要考虑信道传输情况,只专注于编解码的算法实现。
3.1 C语言和汇编的混合编程
采用C语言与汇编的混合编程实现G.722.2标准的代码。为了不破坏C环境,改写的汇编函数必须符合C函数的参数传递规则。在汇编程序设计时,参数的传递主要遵循以下规则:
(1)函数的第一个参数存放在A寄存器,后面的参数以逆序压入堆栈;如果参数有结构体,则将结构体的地址保存在A寄存器中。
(2)如果参数中存在长操作数,则应按照低位字先压栈、高位字后压栈的顺序保存,否则容易出错。
在编写汇编函数时,除了遵循汇编函数的调用规则外,还必须对函数中用到的辅助寄存器进行存放堆栈的保护,防止调用时修改被调用函数中使用的辅助寄存器。
3.2 系统软件结构
整个系统软件主要包括以下三个部分:初始化程序、语音编码解码部分和语音接口程序部分,整个软件体系结构如图2所示。

软件各模块的主要功能:(1)初始化部分完成编码解码和外设的初始化;(2)语音编码解码部分进行语音信号的编码和解码处理;(3)语音接口部分是整个系统的最底层,完成语音信号在串口上的接收与发送。
G.722.2语音编码解码实现软件中,主函数包含在main.c文件中。主程序的处理过程为:首先对DSP芯片、A/D(D/A)芯片以及McBSP、DMA初始化,然后打开中断屏蔽控制器(IMR),允许中断请求,进入等
待主循环启动DMA,同时串口开始接收数据。在接收过程中每接收完一帧数据时,DMA向CPU产生一次中断,将一帧数据从中取出,DMA缓冲区计数器清零以重新开始填充接收缓冲区。同时开始调用编码解码子程序对读入的语音数据进行压缩处理,存储处理后的输出数据等待发送;当发送完一帧数据时,DMA向CPU产生一次中断,缓冲区计数器清零,并将已存储的待输出数据填入发送缓冲区,然后继续对接收和发送缓冲区进行检测,重复上述循环过程。程序设计了两个独立并行的DMA通道,分别负责语音数据的发送和接收,在不影响CPU的情况下可同时收发数据,每发送或接收完一帧数据产生一次DMA中断。
重建语音的质量是评价编码解码算法和系统性能的关键指标之一,可分为客观评测和主观评测标准。其中客观评测标准主要是以3GPP提供的一套测试文件为DSP汇编程序正确性检验的标准;主观评测一般采用的是平均判分法(MOS)。本文的主观评测是邀请少量人员进行实验,实验结果具有一定的可参考性。实际测试时,利用导线将硬件平台上的Mic接口和各种声音源相连,耳机插孔输出编码解码后的语音,对解码后的语音进行试听测试。实验表明,以男生、女生、音乐等多种音源作为Mic输入,系统具有良好的适应性。非正式试听测试,恢复语音保留了较好的说话人特征。通过对不同编码速率的比较可知,高速率语音编码方式语音质量明显优于低速率语音编码方式。
参考文献
[1] 王炳锡.变速率语音编码[M].西安:西安电子科技大学出版社,2004,7.
[2] 程佩青.数字信号处理教程[M].北京:清华大学出版社,2002,2.
[3] 3GPP,TS 26.091:AMR Speech Codec;Error concealment of lost frames[S].2002,6.
[4] 3GPP,TS 26.092:AMR Speech Codec;Comfort noise for AMR speech traffic channels[S].2002,6.
[5] 3GPP,TS 26.093:AMR Speech Codec;Source controlled rate operation[S].2004,4.
[6] 3GPP,TS 26.094:AMR Speech Codec;Voice activity detector for AMR speech traffic channels[S].2002,6.
[7] 3GPP,TS 26.101:Mandatory speech codec speech processing functions;Adaptive Multi-Rate(AMR) speech codec frame structure[S].2004,9.
[8] TMS320VC5416 Fixed-Point digital signal processor data manual[Z],March 1999,Revised January 2005.
[9] 戴明祯.TMS320C54x数字信号处理器原理、结构及应用[M].北京:北京航空航天大学出版社,2001
[10] 宗战华,郑建生.TMS320VC5416并行自举的巧妙实现[J].电子技术应用,2004(12):77-80

本站内容除特别声明的原创文章之外,转载内容只为传递更多信息,并不代表本网站赞同其观点。转载的所有的文章、图片、音/视频文件等资料的版权归版权所有权人所有。本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如涉及作品内容、版权和其它问题,请及时通过电子邮件或电话通知我们,以便迅速采取适当措施,避免给双方造成不必要的经济损失。联系电话:010-82306118;邮箱:aet@chinaaet.com。
Baidu
map