基于DSP的數(shù)字對講機基帶系統(tǒng)中的應用
隨著通信技術的發(fā)展,傳統(tǒng)的模擬對講機已不能滿足人們的需求,對講機數(shù)字化勢在必行。信息社會的高速發(fā)展使頻譜資源變得愈加寶貴,信道利用率成為一項關鍵因素。如何在有限的信道資源下,通過壓縮信源以提高傳輸效率,已成為當前急需解決的問題之一。DSP數(shù)字信號處理器的運算能力越來越強,本設計采用TI公司的通用定DSPTMS320C5509A作為基帶系統(tǒng)的處理器,主要對G.723.1語音壓縮編碼在頻帶、DSP資源有限的數(shù)字對講機基帶系統(tǒng)中的具體應用進行研究與實現(xiàn)。
1G.723.1語音壓縮編碼原理
G.723.1標準主要用于對語音及其他多媒體聲音信號的壓縮。該算法是H.324系列標準的一部分,包含2種工作速率:低速率(5.3kbps)采用代數(shù)碼本線性激勵預測(ACELP),高速率(6.3kbps)采用多脈沖激勵最大似然量化(MP_MLQ)。2種速率的編碼器都以幀為處理單位,幀長為30ms,加上另需7.5ms的延時,總共37.5ms的算法延時。編碼器原理如圖1所示。
輸入的16位線性PC碼流分成長度為240樣點的語音幀。每幀信號先通過1個高通濾波器,去除低頻成分,再分成4個子幀,每個子幀60個樣點。對每個子幀進行10階LPC預測,將最后1個子幀的LPC參數(shù)轉化成線譜對LSP參數(shù)。用預測分裂矢量量化法(PSVQ)進行量化。為了減少合成端合成語音信號的誤差,在分析端對LSP系數(shù)解碼、插值后,再變?yōu)長PC系數(shù)。由LPC分析后的LPC系數(shù)可得到共振峰加權濾波器的系數(shù)。用共振峰加權濾波器對經高通濾波后的語音信號進行共振峰加權濾波,可得到共振峰加權濾波后的語音信號f(n)。由f(n)經基音估計可求出開環(huán)基音周期,基音周期的搜索范圍為18~142個樣點。對每個子幀的語音信號進行諧波噪聲整形、沖擊響應計算,然后進行閉環(huán)基音搜索,求出閉環(huán)基音周期及基音增益,再計算出殘差信號。然后根據(jù)不同的速率進行激勵搜索,求出脈沖位置和幅度參數(shù),打包后形成以幀為單位的編碼數(shù)據(jù)流。
2語音系統(tǒng)的結構及硬件原理圖
原始的模擬語音首先要經過模數(shù)變換,轉化為數(shù)字信號之后,通過串口輸入到DSP中,再進行語音壓縮算法。G.723.1標準計算復雜和數(shù)據(jù)存儲量大的問題使得語音編解碼方案的實時實現(xiàn)存在很多困難。為了保證該算法處理的實時性,本系統(tǒng)選用DSP作為主控芯片,用來實現(xiàn)編解碼算法。語音系統(tǒng)整體硬件結構如圖2所示。
3語音系統(tǒng)的硬件設計
本基帶系統(tǒng)的核心部件采用CPLD和DSP。DSP負責基帶的數(shù)字化處理,CPLD用于外圍器件的控制。將CPLD和DSP技術相結合,一方面能利用DSP軟件控制的靈活性,另一方面又能利用CPLD硬件上的高速、高集成度和可編程性。
本系統(tǒng)選用TMS320C5509A(簡稱C5509A)負責G.723.1標準的算法及后續(xù)基帶數(shù)字化的處理(信道編譯碼、交織、加擾、CRC、基帶調制解調)。該芯片是TMS320C55X系列DSP中的一款,C55X系列的結構見參考文獻[1]。
CPLD主要用來擴展DSP的外部地址空間,實現(xiàn)地址譯碼、時序控制,并給DSP提供所需的邏輯和時序控制信號。本系統(tǒng)選用Altera公司MAX7000系列中的EPM7128,其與DSP的接口電路如圖3(a)所示,其中FSX和FSR幀同步信號端的同步信號相同。原始模擬語音信號必須進行數(shù)字化處理后,才能在DSP中進行語音壓縮編解碼算法。系統(tǒng)選用的是ADI公司推出的低成本、低功耗通用模擬前端AD7311L,其與DSP的接口電路如圖3(b)所示。由于G.723.1的算法比較復雜,處理時需要大量的存儲空間,本設計采用4Mb×16的SDRAM,芯片為MT48LCM16,通過EMIF接口映射到C5509A的CEO空間。其與DSP的接口電路如圖3(c)所示。
4語音系統(tǒng)的軟件設計
總體軟件流程如圖4所示。當DSP處于發(fā)送狀態(tài)時,通過MCBSP1接收來自AD7311L的數(shù)字化語音數(shù)據(jù),調用語音壓縮編碼程序,編完1幀輸出數(shù)據(jù),然后繼續(xù)進行后續(xù)的相關基帶處理。當DSP處于接收狀態(tài)時,接收來自后續(xù)基帶處理的數(shù)據(jù),調用語音解碼程序;解碼后的語音數(shù)據(jù),再以每幀的數(shù)據(jù)通過MCBSP1送入AD7311L,最后還原成原始語音。下面主要介紹初始化模塊及語音編解碼模塊。
[!--empirenews.page--]4.1初始化模塊
系統(tǒng)的初始化是系統(tǒng)運行的基礎部分,它涉及系統(tǒng)的整體硬件設計,如引腳的分配及連接、各芯片采用的工作模式等問題。本系統(tǒng)初始化模塊劃分為3個部分:初始化微處理器、初始化語音處理器、初始化外部寄存器。
DSP初始化函數(shù)名為DSP_Init.c,主要是對DSP的時鐘(clock),外部存儲器接口(EMIF)和多通道串行緩沖串口(McBSP)進行初始化設置。
AD7311L的初始化函數(shù)主要是對其的外部引腳配置,該模塊分為McBSP1的配置和AD7311L的硬件配置。
McBSP1的初始化函數(shù)如下:
4.2語音編解碼模塊
該模塊主要是對G.723.1的代碼處理。系統(tǒng)若直接使用ITU提供的定點C源代碼,C5509A完成1幀的編碼需要53400912個周期,即使C5509A工作在最高頻率200MHz,也需要267ms。所以代碼必須經過優(yōu)化,且優(yōu)化后的代碼占用DSP的資源不能過高,這樣才能保證DSP有足夠的資源對后續(xù)的基帶數(shù)字化進行實時處理。本設計主要從編譯器、C語言級、匯編級和算法級4個方面對G.723.1的定點C代碼進行優(yōu)化。本文主要對算法級優(yōu)化進行介紹。
在對G.723.1算法進行仿真的過程中發(fā)現(xiàn),基音估計、自適應碼本搜索、固定碼本搜索和代數(shù)碼本搜索等模塊占語音編解碼的總時間超過70%,因此優(yōu)化措施應著重對這幾個模塊的算法進行優(yōu)化。
①開環(huán)基音估測函數(shù)Estim_Pitch()中,計算圖1f[n]中的互相關值COL(j):
尋找使得COL(j)max,開環(huán)基音周期j的搜索范圍18~142。在基音周期較短時,基音頻率較大;對語音信號編碼質量影響較大,而基音周期較長時,基音頻率較小,對語音信號編碼質量較小。所以18~58之間基音周期采用逐點計算搜索,而59~142之間以采用隔點計算,可以減少運算量。
?、诟咚俾实拿}沖激勵編碼(MP-MLQ)函數(shù)Find_Best()中計算預測殘差信號
時需要進行卷積碼預算,對其進行優(yōu)化。計算誤差信號的均方值
時,式中
先通過加減運算完成,最后做1次增益G的乘法運算即可得到r’[n],這樣計算1次殘差矢量最多需要60×6=360次加減運算,而優(yōu)化前的預算量為4×8×(1+2L+58+59)=56640。由此可見優(yōu)化減少了大量的運算。
③基本運算庫函數(shù)優(yōu)化。G.723.1代碼的基本運算庫函數(shù)Basop.c中,存在大量數(shù)字信號處理功能的函數(shù),而且占據(jù)絕大部分運算,如L_mac()、L_mull()、L_add()、sature()等,所以還需在這幾個函數(shù)上進行一些優(yōu)化工作。
5調試結果分析
最終在TMS320C5509A上實時實現(xiàn)G.723.1標準。對于1幀語音在高速率6.3kbps模式下,編解碼算法占用時間7.42ms,算法復雜度為49.5MIPS;低速率5.3kbps模式下,編解碼占用時間5.34ms,算法復雜度35.6MIPS。
其主要模塊代碼優(yōu)化前后占用的時間對比如表1所列。
整個程序優(yōu)化后,G.723.1算法占用CPU的資源不到20%,即DSP還有足夠的資源對后續(xù)的基帶算法進行處理。
結語
在工作頻率為200MHz的C5509A自制硬件電路上,實現(xiàn)了對G.723.1標準的實時處理。將2塊板子串口相連,收端揚聲器可以傳出發(fā)端傳來的實時、連續(xù)和清晰的語音。最后優(yōu)化驗證以及整體基帶系統(tǒng)的調試結果證明,語音壓縮編碼方案選用正確,代碼優(yōu)化結果良好,硬件電路設計合理,在頻譜帶寬、DSP資源有限的條件下,圓滿地實現(xiàn)了G.723.1語音壓縮編碼在對講機基帶數(shù)字化系統(tǒng)設計中的應用。從DSP的CPU負載情況看,G.723.1的代碼還可進一步優(yōu)化。若想進一步降低功耗,可采用全匯編實現(xiàn)。