基于PIC的低速率無線語音通信系統(tǒng)
在移動電話已經成為人們生活必需品的今天,一種低成本的點對點無線通信系統(tǒng)也在日益發(fā)展中。它不同于移動電話,不用根據通話時間計費,不存在網絡擁堵的問題。在設計語音通信系統(tǒng)的過程中,語音信號處理[1]的方法關系到系統(tǒng)的性能,隨著對通信質量要求的提高,人們需要用較少的碼率來獲得盡可能好的合成語音質量[2]。
本文引用地址:http://m.butianyuan.cn/article/155873.htmTETRA系統(tǒng)采用的低速率ACELP壓縮算法[3],是一種改進型的CELP,其碼率被壓縮至4.567 kb/s,仍能保證高質量的話音服務[4]。近幾年對ACELP算法的研究大部分集中在算法的仿真。本文主要設計了ACELP算法應用的硬件系統(tǒng)。
1 系統(tǒng)概述
Microchip公司推出的dsPICXX器件[5]將高性能16位單片機的控制特點與DSP高速運算的優(yōu)點相結合,為嵌入式系統(tǒng)設計提供了適合的單芯片、單指令流的解決方案。其獨特的RISC結構精簡指令與傳統(tǒng)的采用CISC結構的單片機相比,可以達到2:1的代碼壓縮,速度提高4倍,使其執(zhí)行效率大為提高[6]。
在用單個dsPICXX器件實現(xiàn)復雜的算法處理和控制操作時,存在通話質量差,不易擴展等功能,作為改進方案設計了雙單片機結構,如圖1所示。將計算量較大的語音壓縮編碼部分單獨用dsPIC33FJ64GP706實現(xiàn),用PIC24FJ32GA004作為主控芯片,控制信號之間的同步并處理按鍵信息,CC1100內有快速頻率變動合成器,能夠實現(xiàn)頻率跳躍,通過PIC24FJ32GA004不斷改變CC1100的載波頻率,實現(xiàn)了跳頻通信。
系統(tǒng)包括語音模塊、語音編解碼模塊、控制模塊、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來實現(xiàn)輸出模擬音量的可控調節(jié)。設定AD73311工作在混合模式,控制字可以交叉在DAC數據流中一起傳送,對于語音30 ms為一幀的處理速度,交叉?zhèn)鬏斂刂谱植粫绊懻Z音質量。PGA增益由CRD:4~6三位設定,可實現(xiàn)+6 dB~-15 dB范圍的音量調節(jié)。
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的工作速度(指令時鐘),為實現(xiàn)實時傳輸信號,要盡可能達到最高工作速度,設計時充分利用了芯片的內部資源——由PIC24的輸出比較模塊OC產生2.048 MHz給DSPIC33,DSPIC33再經內部PLL鎖相環(huán)產生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發(fā)送數據時,DSP中的數據也會傳遞過來,此時無論數據是否寫入SPIBUF,只要接收到幀同步脈沖時都將啟動發(fā)送,所以在接收幀同步脈沖前,必須保證DSP中裝入了正確的發(fā)送數據。在DSP的實現(xiàn)過程中,當語音壓縮完畢后,會通過UART發(fā)送握手信號,表明數據已經準備好。所以,當CPU成功接收到合成語音參數,并且接收到握手信號后,才可以向DSP發(fā)送數據。本系統(tǒng)中UART只進行簡單的數據傳輸,兩芯片間的連接較為簡單,只需將收發(fā)引腳交替連接就可以了。
射頻收發(fā)CC1100芯片通過4線SPI兼容接口SI、SO、SCLK、CSn實現(xiàn)配置,如圖3所示,這個接口同時用作寫和讀緩存數據,接口上的數據頭字節(jié)包含一個讀/寫位,一個突發(fā)訪問位和一個6位地址,突發(fā)訪問位表明數據是否連續(xù),若連續(xù),寄存器的地址將自動加1。在CPU發(fā)送數據之前,CPU必須先完成對CC1100的配置,可以設置調制方式、信道帶寬、是否進行糾錯編碼,還可以對數據包結構進行設置。本系統(tǒng)采用的跳頻方式較為簡單,頻率每30 ms(一幀語音的時間)改變一次。信道的中心頻率由432 MHz~434 MHz按照遞增的方式進行跳變,公差為20 kHz,當中心頻率到達434 MHz后,中心頻率再按照遞減的方式進行跳變,公差不變。
2 軟件設計
2.1 DSP模塊的軟件實現(xiàn)過程
程序主要由主程序和中斷程序組成,在初始化時進行如下設定:DCI接口工作在多通道幀同步模式下,字長16,緩沖區(qū)接收1個數據后觸發(fā)中斷,DCI數據傳輸時采用DMA通道,且數據傳輸的串行時鐘和幀同步都由AD73311提供;SPI工作在從/幀從模式下。在主程序中,設置好3個接口,然后不斷檢測相關的標志位并進行相應的處理,中斷程序包括DMA、SPI和UART接收緩沖區(qū)滿中斷。主程序的流程圖如圖4所示。
p2p機相關文章:p2p原理
評論