基于DSP的多路语音实时采集与压缩处理系统设计
2 8路语音信号的数据采集
8路语音数字信号通过一2.048 Mb/s的同步串行数据总线传输到DSP。其中每个通道的数据是64 Kbps,每个通道占用2.048 Mb/s的同步串行数据总线的32个时隙中的一个,因此,共占用8个时隙。DSP通过对时隙分配电路的控制给8个通道各分配一个时隙。这样,8个通道的每个通道的数据都在由DSP指定的时隙中传输。
DSP的串口0是一个可编程的最大数据传输速率能达到4.096 Mb/s的同步串行口。DSP串口0的操作在接收到一个WORD或发送完一个WORD的数据时,从DSP内部RAM读、写一个WORD的数据需要占用DSP的一个机器周期(33 ns),在接收和发送过程中不占用DSP的处理时间。由此可见,DSP的串口0具有很强的数据采集与控制能力。
利用串口0的较强的数据采集与控制能力,很容易实现通过2.048 Mb/s的同步串行数据总线对8通道语音数字信号的采集与控制。首先,编程DSP的串口0的同步时钟信号及帧同步信号分别为2 048 kHz和8 kHz,这两个信号控制CODEC的A/D转换速率和位传送速率,同时同步时钟信号还可供CODEC的A/D转换的时钟。再者,编程DSP的串口0工作于多通道模式,打开32个时隙中对应的8通道的时隙接收,使对应的每通道字(WORD)长为8位,选择A-Law压/扩,并打开自动缓冲功能并设置自动缓冲指针。当如上对串口0初始化并打开串口0的接收中断后,串口0将接收到的8 WORD的按A-Law解压的数据存放在自动缓冲指针指向的长度为8的缓冲区中,自动缓冲指针自动回位,同时产生一个硬件接收中断。
3 多路语音实时压缩处理
3.1 压缩算法
考虑到压缩率的要求和实时的要求,在本系统中采用13 Kb/sRPE-LTP-LP编解码算法[GSM],该算法的特点是在模型编码算法中较为简单,语音质量高达到了通信等级,同时具有较高的压缩率。该算法的编码算法包括以下几个主要部分:
3.1.1 预处理部分
去除原始语音信号S0(n)中的直流分量得到S0f(n),再通过一阶的FIR滤波器进行高频预加重,得到信号S(n)。
3.1.2 LPC分析
按每160个样本点将信号S(n)进行分帧,对每帧数据计算出8个LPC反射系数γ(i),i=0,1,2,…,7;再转换成对数面积比参数LAR(i),i=1,2…7;并对所得的LAR(i)进行量化编码得到LARC。
3.1.3 短时分析滤波
短时分析滤波是一个8级格型滤波器,通过短时分析滤波,得到线性预测(LP)余量d(n)。
3.1.4 长时预测
利用长时预测综合对LP短时余量信号d(n)处理以进一步的去除冗余度。长时预测是按子帧进行处理的,每一帧分成4个子帧。
3.1.5 规则脉冲编码
对经过短时、长时预测后得到的LP余量信号,进行加权滤波、规则脉冲提取和量化编码。
在本系统的DSP上该算法实时实现性能如下:
·码流速率13 Kb/s
·编码运算量 3 MIPS
·解码运算量 0.7 MIPS
·程序量 2 KWORD
·占用数据RAM 1 KWORD
3.2 多路语音实时压缩处理的软件实现
由于实时实现13 Kb/sRPE-LTP-LP编码算法只占用了DSP的3MIPS的运算量,而解码运算量为0.7 MIPS故在本系统的具有33 MIPS的运算速度的DSP上,可软件实时实现多达10通道的13Kb/sRPE-LTP-LP编码算法和1通道的解码算法。同时,还有2MIPS的运算速度用于系统控制与管理。根据本系统的要求,已成功实现了8通道的13Kb/sRPE-LTP-LP编码算法和1通道的解码算法。因此,本系统的DSP在完成要求的多路语音采集与压缩处理任务的条件下,还有一定的处理能力用于系统其它的扩展处理上。本系统的多路语音实时压缩处理的系统软件框图如图2所示。
由图2可以看出,软件设计主要包括4大部分:
·命令解释与控制模块
·13 Kb/sRPE-LTP-LP编解码模块
·多通道语音编解码控制模块
·接口功能模块
3.2.1 命令解释与控制模块
命令解释与控制模块主要是用于解释由PC机通过IDMA口发来的各种命令,如发送或接收编解码数据、设置PC机与DSP的数据传输数据量的大小、查询编解码状态以及启动,停止编解码操作等。该模块不直接与PC机打交道,而是通过接口功能模块,间接实现与主CPU的数据信息交换。
3.2.2 13 Kb/sRPE-LTP-LP编解码模块
该模块是一个单通道13 Kb/sRPE-LTP-LP语音编解码模块。它是本系统的语音压缩处理的核心部分,为使该模块具有通用性,为该模块单独形成一个ADSP-2100系列语言库,可与任何其它ADSP-2100系列模块相连。
3.2.3 多通道语音编解码控制模块
该模块基于单通道13 Kb/sRPE-LTP-LP语音编解码模块,实现多通道语音编码和单通道语音解码。对于多通道语音编码,一方面,当某通道采集到一帧160点的语音数据时,调用语音编码模块对该帧进行编码,并将编码后的语音数据按约定的格式存放到各通道的编码数据缓冲区中;另一方面,由于语音的模型编码是前后帧相关联的,所以该模块还必须将当前通道的当前帧编码后的必须保存的数据和状态进行保存,以及在调用语音编码模块对当前帧进行编码前,恢复上一帧编码后的数据和状态。对于单通道语音解码,则只需在接收到由PC机传送来的压缩数据后,调用解码模块,然后将解码后的160点语音数据送到D/A的串口1发送缓冲区。
- 在采用FPGA设计DSP系统中仿真的重要性 (06-21)
- 基于 DSP Builder的FIR滤波器的设计与实现(06-21)
- 达芬奇数字媒体片上系统的架构和Linux启动过程(06-02)
- FPGA的DSP性能揭秘(06-16)
- 用CPLD实现DSP与PLX9054之间的连接(07-23)
- DSP+FPGA结构在雷达模拟系统中的应用(01-02)