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