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