微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于DSP的G.723.1数字对讲机基带系统中的应用

基于DSP的G.723.1数字对讲机基带系统中的应用

时间:04-24 来源:3721RD 点击:

SP1的初始化函数如下:



4.2 语音编解码模块

该模块主要是对G.723.1的代码处理。系统若直接使用ITU提供的定点C源代码, C5509A完成1帧的编码需要53 400 912个周期,即使C5509A工作在最高频率200 MHz,也需要267 ms。所以代码必须经过优化,且优化后的代码占用DSP的资源不能过高,这样才能保证DSP有足够的资源对后续的基带数字化进行实时处理。本设计主要从编译器、C语言级、汇编级和算法级4个方面对G.723.1的定点C代码进行优化。本文主要对算法级优化进行介绍。

在对G.723.1算法进行仿真的过程中发现,基音估计、自适应码本搜索、固定码本搜索和代数码本搜索等模块占语音编解码的总时间超过70%,因此优化措施应着重对这几个模块的算法进行优化。

①开环基音估测函数Estim_Pitch()中,计算图1f[n]中的互相关值COL(j):

寻找使得COL(j)max,开环基音周期j的搜索范围18~142。在基音周期较短时,基音频率较大;对语音信号编码质量影响较大,而基音周期较长时,基音频率较小,对语音信号编码质量较小。所以18~58之间基音周期采用逐点计算搜索,而59~142之间以采用隔点计算,可以减少运算量。

②高速率的脉冲激励编码(MP-MLQ)函数Find_Best()中计算预测残差信号
时需要进行卷积码预算,对其进行优化。计算误差信号的均方值
时,式中
先通过加减运算完成,最后做1次增益G的乘法运算即可得到r’[n],这样计算1次残差矢量最多需要60×6=360次加减运算,而优化前的预算量为4×8×(1+2L+58+59)=56 640。由此可见优化减少了大量的运算。

③基本运算库函数优化。G.723.1代码的基本运算库函数Basop.c中,存在大量数字信号处理功能的函数,而且占据绝大部分运算,如L_mac()、L_mull()、L_add()、sature()等,所以还需在这几个函数上进行一些优化工作。

5 调试结果分析

最终在TMS320C5509A上实时实现G.723.1标准。对于1帧语音在高速率6.3 kbps模式下,编解码算法占用时间7.42 ms,算法复杂度为49.5 MIPS;低速率5.3 kbps模式下,编解码占用时间5.34 ms,算法复杂度35.6 MIPS。

其主要模块代码优化前后占用的时间对比如表1所列。

整个程序优化后,G.723.1算法占用CPU的资源不到20%,即DSP还有足够的资源对后续的基带算法进行处理。

结语

在工作频率为200 MHz的C5509A自制硬件电路上,实现了对G.723.1标准的实时处理。将2块板子串口相连,收端扬声器可以传出发端传来的实时、连续和清晰的语音。最后优化验证以及整体基带系统的调试结果证明,语音压缩编码方案选用正确,代码优化结果良好,硬件电路设计合理,在频谱带宽、DSP资源有限的条件下,圆满地实现了G.723.1语音压缩编码在对讲机基带数字化系统设计中的应用。从DSP的CPU负载情况看,G.723.1的代码还可进一步优化。若想进一步降低功耗,可采用全汇编实现。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top