基于PIC的低速率无线语音通信系统
时间:2023-09-25 22:54来源: 作者: 点击: 次在移动电话已经成为人们生活必需品的今天,一种低成本的点对点也在日益发展中。它不同于移动电话,不用根据通话时间计费,不存在网络拥堵的问题。在设计的过程中,信号处理[1]的方法关系到的性能,随着对质量要求的提高,人们需要用较少的码率来获得尽可能好的合成质量[2]。
TETRA系统采用的低ACELP压缩算法[3],是一种改进型的CELP,其码率被压缩至4.567 kb/s,仍能保证高质量的话音服务[4]。近几年对ACELP算法的研究大部分集中在算法的仿真。本文主要设计了ACELP算法应用的硬件系统。
1 系统概述
Microchip公司推出的dsXX器件[5]将高性能16位单片机的控制特点与DSP高速运算的优点相结合,为嵌入式系统设计提供了适合的单芯片、单指令流的解决方案。其独特的RISC结构精简指令与传统的采用CISC结构的单片机相比,可以达到2:1的代码压缩,速度提高4倍,使其执行效率大为提高[6]。
在用单个dsXX器件实现复杂的算法处理和控制操作时,存在通话质量差,不易扩展等功能,作为改进方案设计了双单片机结构,如图1所示。将计算量较大的语音压缩编码部分单独用ds33FJ64GP706实现,用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所示。