基于PIC的低速率无线语音通信系统
扫描二维码
随时随地手机看文章
在移动电话已经成为人们生活必需品的今天,一种低成本的点对点无线通信系统也在日益发展中。它不同于移动电话,不用根据通话时间计费,不存在网络拥堵的问题。在设计语音通信系统的过程中,语音信号处理[1]的方法关系到系统的性能,随着对通信质量要求的提高,人们需要用较少的码率来获得尽可能好的合成语音质量[2]。
TETRA系统采用的低速率ACELP压缩算法[3],是一种改进型的CELP,其码率被压缩至4.567 kb/s,仍能保证高质量的话音服务[4]。近几年对ACELP算法的研究大部分集中在算法的仿真。本文主要设计了ACELP算法应用的硬件系统。
1 系统概述
Microchip公司推出的dsPICXX器件[5]将高性能16位单片机的控制特点与DSP高速运算的优点相结合,为嵌入式系统设计提供了适合的单芯片、单指令流的解决方案。其独特的RISC结构精简指令与传统的采用CISC结构的单片机相比,可以达到2:1的代码压缩,速度提高4倍,使其执行效率大为提高[6]。
在用单个dsPICXX器件实现复杂的算法处理和控制操作时,存在通话质量差,不易扩展等功能,作为改进方案设计了双单片机结构,如图1所示。将计算量较大的语音压缩编码部分单独用dsPIC33FJ64GP706实现,用PIC24FJ32GA004作为主控芯片,控制信号之间的同步并处理按键信息,CC1100内有快速频率变动合成器,能够实现频率跳跃,通过PIC24FJ32GA004不断改变CC1100的载波频率,实现了跳频通信。
系统包括语音模块、语音编解码模块、控制模块、RF模块以及各个模块的接口。本文设计时将语音编解码模块和控制模块按其功能分别简写为DSP模块和CPU模块。
1.1 语音模块
本模块的作用是将麦克风微弱语音信号放大给A/D,以及将从D/A出来的语音播放出去。在语音输入A/D电路中,利用运放芯片 LPV321M5,采用单电源3.3 V供电,将输出的信号送到A/D。在语音输出A/D电路中,采用LM4673音频放大器进行语音放大。图2是AD73311的外围电路图。芯片复位之后才能工作,复位时间至少为4个DMCLK周期。
在图1中,CPU传出的控制命令(即手持终端机的旋钮音量控制命令)将作用于AD73311内部集成的可编程增益放大器PGA来实现输出模拟音量的可控调节。设定AD73311工作在混合模式,控制字可以交叉在DAC数据流中一起传送,对于语音30 ms为一帧的处理速度,交叉传输控制字不会影响语音质量。PGA增益由CRD:4~6三位设定,可实现+6 dB~-15 dB范围的音量调节。
1.2 时序分配
图2中AUDIO_MCLK是主时钟输入,由外部时钟信号驱动,DSP中的输出比较OC模块将产生供AD73311工作所需的2.048 MHz时序波形,因AD73311是可编程的,通过设置CRB:4-6=000、CRB:2-3=00、CRB:0-1=11,分别得到内部主时钟频率DMCLK为2.048 MHz,串行时钟频率SCLK为256 kHz,串行口的帧同步频率即采样频率FS为8 kHz。4个I/O引脚AUDIO-SDI、AUDIO-SDO、AUDIO-SDFS、AUDIO-SCLK与DCI有关,采用基于DMA控制器的DCI设计,在不需要CPU干预下可完成数据传输,DCI接口负责传输16 bit的A/D、D/A数据和音量控制命令。
DSPIC33工作频率支持最高40 MHz的工作速度(指令时钟),为实现实时传输信号,要尽可能达到最高工作速度,设计时充分利用了芯片的内部资源——由PIC24的输出比较模块OC产生2.048 MHz给DSPIC33,DSPIC33再经内部PLL锁相环产生38.912 MHz的指令时钟。PIC24外接7.168 MHz晶振获得工作时钟。
1.3 SPI串行接口模块
SDI、SDO、SCK、SS是SPI串行接口的4个引脚,CPU内部集成着两块SPI模块,其中与DSP相连的SPI1模块工作在SPI主/帧主模式,相应的DSP中的SPIx模块工作在SPI从/帧从模式。配置为主模块的CPU为从器件DSP提供SPI串行时钟和同步信号。
当CPU通过SPI向DSP发送数据时,DSP中的数据也会传递过来,此时无论数据是否写入SPIBUF,只要接收到帧同步脉冲时都将启动发送,所以在接收帧同步脉冲前,必须保证DSP中装入了正确的发送数据。在DSP的实现过程中,当语音压缩完毕后,会通过UART发送握手信号,表明数据已经准备好。所以,当CPU成功接收到合成语音参数,并且接收到握手信号后,才可以向DSP发送数据。本系统中UART只进行简单的数据传输,两芯片间的连接较为简单,只需将收发引脚交替连接就可以了。
射频收发CC1100芯片通过4线SPI兼容接口SI、SO、SCLK、CSn实现配置,如图3所示,这个接口同时用作写和读缓存数据,接口上的数据头字节包含一个读/写位,一个突发访问位和一个6位地址,突发访问位表明数据是否连续,若连续,寄存器的地址将自动加1。在CPU发送数据之前,CPU必须先完成对CC1100的配置,可以设置调制方式、信道带宽、是否进行纠错编码,还可以对数据包结构进行设置。本系统采用的跳频方式较为简单,频率每30 ms(一帧语音的时间)改变一次。信道的中心频率由432 MHz~434 MHz按照递增的方式进行跳变,公差为20 kHz,当中心频率到达434 MHz后,中心频率再按照递减的方式进行跳变,公差不变。
2 软件设计
2.1 DSP模块的软件实现过程
程序主要由主程序和中断程序组成,在初始化时进行如下设定:DCI接口工作在多通道帧同步模式下,字长16,缓冲区接收1个数据后触发中断,DCI数据传输时采用DMA通道,且数据传输的串行时钟和帧同步都由AD73311提供;SPI工作在从/帧从模式下。在主程序中,设置好3个接口,然后不断检测相关的标志位并进行相应的处理,中断程序包括DMA、SPI和UART接收缓冲区满中断。主程序的流程图如图4所示。
2.2 CPU模块的软件实现过程
PIC24是整个系统的控制芯片,实现对输入按键信息的处理、发送音量调节命令、配制CC1100、产生跳频图案、控制数据发送时机等功能。向CC1100发送数据进行同步控制,主要是为了通信终端以时分复用的方式占用信道,具体是在一个语音帧内(30 ms),信道被分配给终端A 10 ms,空闲5 ms作为保护时隙,再分配给终端B 10 ms,留5 ms的保护时隙,这样在一帧语音的时间内,可以完成数据的发送和接收,实现两台终端的同步对话。通信终端在发送数据时分为主叫方和被叫方两种模式,图5给出了CPU主叫模式的流程图。
本文设计的系统中丰富的PIC外设资源和灵活的外围接口电路可以为语音信号处理的其他算法研究和实时实现提供一个通用平台,也为进一步处理噪声抑制和回声控制奠定了硬件基础。