目前,大多数数字对讲机方案都是基于通用芯 片平台,集成度低,功耗较高,价格昂贵,调试复 杂,不利于产业化。随着集成电路技术的发展,基 于声码器与微控制器的对讲机方案得到了较快的发 展,声码器通常使用专用语音编解码芯片完成语音 收稿日期:2012-05-11。
男,硕士研究生,主要研究方向为无线通信系 统、语音信号处理、FPGA开发;杨骁(1978-), 男,讲师,博士,主要研究方向为模拟集成电 路设计、混合信号集成电路设计、射频集成电 路设计、信号处理。
数字化处理。为了简化系统维护,方便使用操作, 采用通用数字信号处理器作为基带处理核心,实现 声码器功能,使语音处理灵活,具有更好的通用性和 扩展性。
1系统的硬件设计
根据该基带系统在功耗、成本及扩展性等方面 考虑,需要完成模拟语音信号数字化转换及处理, 无线信道传输。系统总体结构方案如图1所示。
图1系统硬件结构
系统主要由AIC23数模转换模块、DSP语音处
理模块、微控制单元(MCU)模块和CC1101射频模 1^4部分构成。
1. 1 DSP处理模块
基带系统处理核心是基于通用DSP形成的数字 语音处理单元,实现数模转换模块AIC23的控制, 完成MELP声码器。选择TMS320VCM10作为基带系 统处理核心,它有如下特点⑴:双乘加器(MAC)结构, 代码执行效率高;320KWord的RAM,可以减少扩展功 耗较大的片外存储芯片;丰富的片上外设,如:外部 存储器接口(EMIF,External Memory Interface)、 直接内存存取(DMA, Direct Memory Access)控制 器、多通道缓冲串行口(McBSP,Multi-channel Buffered Serial Port)等;先进的电源管理技术 降低系统功耗。通过EMIF接口扩展256KWord的 Flash存储器,用于上电后系统程序的加载,和电 源、时钟管理、JTAG模块构成DSP的最小系统。
1.2数模转换模块
TLV320AIC23是H公司推出的一款高性能、低 功耗立体声音频编解码器[a。它可以和TI的DSP无 缝连接,通过DSP的McBSP接口与其进行连接, McBSP 1用于配置工作参数,McBSP2用于传送模数 (A/D)、数模(D/A)转换的数据。AIC23和DSP的 输入输出接口(I/O)电压兼容,使系统设计简单。
1. 3 MCU模块
控制器MCU主要实现对外围器件的控制和设 置,进行按键扫描检测、基带信号的发送与接收、 与DSP之间数据的交换和实现通信协议。选择 MSP430F149作为主控制器 ' 其通用同步/异步接 收/发送器(USART)串口与DSP进行通信。USART1 与DSP的McbspO接口连接,通过串行外设接口 (SPI) 进行数据通信;USART0与射频模块进行连接通信。 1. 4射频模块
射频模块主要完成数字基带信号调制解调,规 定比特符号和码元之间的关系,并建立频率同步和 码元同步。射频模块采用TI的CC1101芯片,集 成了一个高度可配置的基带调制解调器,支持四进 制频移键控(4FSK)、高斯频移键控(GFSK)、最小 移频键控(MSK)等调制方式。单片机通过SPI方式 实现对CC1101运行参数和64字节发送/接收先入先 出队列(FIFO)的控制[3]。
2系统软件的设计
软件主要是DSP与MSP430的程序设计,包括数 据采集、语音处理、MCU控制处理。接收时,CC1101 接收无线传输来的调制信号,解调后送到MSP430完 成数据组帧恢复,得到数字编码码流。与DSP进行 通信,DSP对其进行解码恢复成数字语音码流,送到
AIC23进行D/A转换为话音信号。发送时,由麦克 风输入的语音经AIC23进行A/D采样,由DSP进行数 字压缩编码,再送到单片机进行填充组帧,最后由 射频模块进行调制后发射出去。
2. 1数据采集
DSP与AIC23之间的数据交换采用DMA的工作 方式减轻数据采集时DSP的负担,同时进行声码 器处理。采用兵兵(Ping-Pong)存储结构,每当串 口 Mcbsp2发送/接收到一个单元数据,自动触发DMA 将其存入一个存储块中,例如Ping存储区,当存储 满时会中断CPU进行数据处理。同时,DMA会自动 去操作Pong存储区,继续采集数据。这样可以有效 防止数据在处理时被新数据覆盖的情况,而且 Ping-Pong之间自动切换,可以不间断对数据进行 采集,适合流水线式处理,完成数据的无缝缓冲与 实时处理。
2. 2语音处理
语音处理模块主要实现MELP声码器算法5]。 语音帧长22. 5 ms,每帧数据用54 bit进行编码。 MELP声码器分为分析器和合成器两部分。分析器实 现对原始语音信号进行帧分析处理,其流程图如图 2所示。首先经过高通滤波器进行预处理,滤除直流 工频干扰,然后完成各个语音段的特征参数(基音 周期、带通清/浊音强度、非周期脉冲标志、线谱 对(LSF, Linear Spectrum Pairs)参数、增益估计 和傅里叶谱幅度等)的提取,最后进行量化编码和 组帧。
图2 MELP声码器分析流程
合成器用于对接收到的码流进行解码恢复,首 先进行解包、排列,然后译码生成混合激励信号, 先后经过自适应谱增强,线性预测编码参数(LPC, Linear Predictive Coding)合成滤波,增益控 制,脉冲离散滤波等步骤处理,在接收端重构输入 的语音信号[5]。合成器的流程图如图3所示。
声码器模块采用MELP标准的C程序开源代 码。在DSP移植过程中,需要对其进行优化,以满 足实时性要求。主要从以下几个方面对MELP的定 点C代码进行优化。
图3 MELP声码器合成流程
(1)编译器优化选项和inline函数方法优化[6]
采用优化选项的优化级别-02,得到较高的代码
优化效率。对小函数用inline关键字限定,当函数 较常被调用时,可以减少调用的时间开销,获得较好 优化效果。
(2)使用ETSI函数m
调用mathhalf文件中基本运算函数非常频繁, 运行效率低。将这些函数用ETSI函数代替,当代码 中调用了这些函数时,编译器会自动把优化过的汇 编代码嵌入到程序中,可以节省很多时钟周期,优化 效果很好。
(3)数据内存的优化
对存储器进行合理规划,将程序代码和常量系 数分配到单访问随机存储器(SARAM,Single Access RAM)中,把频繁访问的变量、堆栈等放在双访问随 机存储器(DARAM,Dual-Access RAM)中,充分利用 片内内存,提尚程序的执行效率。
(4)对程序结构进行简化
对代码结构进行优化,减少一些不必要的代码 的运行,比如logicO;等测试函数。将算法中用到 MEM—ALL0C0等动态分配内存的函数,根据运行时所 需的空间大小在函数中直接给出,减少库函数的调 用,防止破坏软件流水执行。
(5)循环优化[8]
对算法中循环部分进行优化。利用其硬件结构、 寻址方式进行修改,减少分支和调用等指令,合理 安排代码处理流程。充分利用其指令执行时的流水 线特点,提局执行效率。
DSP程序的控制流程如图4所示。程序中设置 两个长度为180字编码和解码缓冲块。当接收缓冲 区满180样点时,DMA中断CPU进行处理,把数据 复制到编码缓冲块中并进行MELP编码,处理得到的 数据通过DMA复制到发送缓冲存储器,送到MCU进 行后续处理。解码过程是将MCU发来的帧比特数据, 经过MELP解码后存储解码数据到解码缓冲块中,然 后将合成语音数据发送到AIC23进行话音的回放。