郭 巍,倪永婧
(1.中國電子科技集團公司第五十四研究所,河北石家莊050081;2.河北科技大學(xué),河北石家莊050000)
衛(wèi)星通信的快速發(fā)展,使衛(wèi)星通信業(yè)務(wù)的需求也不斷增大。話音通信由于其自身的便捷性和通用性,在目前所設(shè)計的各種衛(wèi)星通信系統(tǒng)中仍然占有很大的比重,是衛(wèi)星通信應(yīng)用系統(tǒng)的重要組成部分。但是,單路電話業(yè)務(wù)的衛(wèi)星通信系統(tǒng)已經(jīng)遠遠不能滿足需求,現(xiàn)在的系統(tǒng)設(shè)計往往需要通話路數(shù)更多,壓縮編解碼效率更高,占用帶寬更小的多路話音通信系統(tǒng)。通過采用多處理器結(jié)構(gòu),設(shè)計了一種多路話音編解碼器,可以同時對多路話音呼叫進行處理,并且對話音信號進行高效壓縮編碼處理,滿足衛(wèi)通網(wǎng)絡(luò)中多路話音通信的應(yīng)用需求。
在2 Mbps脈沖編碼調(diào)制信號(PCM)中一共包含有32個時隙信號,每個時隙信號帶寬為64 kbps,其中有30個時隙可以承載話音業(yè)務(wù),每個時隙承載一路。多路話音編解碼系統(tǒng)的主要功能是實現(xiàn)對2 Mbps PCM中多個時隙話音業(yè)務(wù)的呼叫控制,實現(xiàn)對64 kbps速率話音信號的壓縮編解碼處理,并完成數(shù)據(jù)的信道適配。
該系統(tǒng)通過幀定位信號和時鐘信號可以對2 Mbps PCM中的各時隙信號進行定位,并實現(xiàn)對各個時隙PCM信號的插入和提取。PCM信號的帶寬決定了該系統(tǒng)最多應(yīng)可以實現(xiàn)30路話音業(yè)務(wù)的處理。此外,為了更好地適應(yīng)衛(wèi)通信道,有效利用衛(wèi)通資源,需要對單路64 kbps的話音進行壓縮編解碼,系統(tǒng)采用8 kbps G.729編解碼方式,該方式具有延時小、話音重建質(zhì)量好等特性,非常適合衛(wèi)通信道的傳輸特點。壓縮后的話音數(shù)據(jù)經(jīng)過信道適配,轉(zhuǎn)換成同步數(shù)據(jù)發(fā)送至信道單元。
在系統(tǒng)的硬件設(shè)計方面,選用高級精簡指令微處理器(ARM)理器作為主控處理器,負責(zé)完成話音通信系統(tǒng)中信令的解析以及話音呼叫控制;同時,DSP[1]處理器運算能力強,功耗低,并且可以提供視音頻協(xié)處理器,所以選用DSP作為話音編解碼處理器,實現(xiàn)對PCM數(shù)據(jù)的壓縮編解碼。利用高性能現(xiàn)場可編程門陣列(FPGA)芯片實現(xiàn)對系統(tǒng)的時序控制,完成PCM時隙的定位以及信道成解幀處理。多路話音編解碼器組成框圖如圖1所示。
圖1 多路話音編編解碼器組成框圖
在系統(tǒng)的軟件設(shè)計方面,主控ARM處理器采用嵌入式LINUX操作系統(tǒng),使用C語言進行程序軟件設(shè)計;FPGA采用VHDL語言進行設(shè)計,在Xilinx開發(fā)環(huán)境ISE下進行編譯;DSP處理器使用C語言編程,在CCS環(huán)境下進行編譯。
根據(jù)系統(tǒng)的總體設(shè)計,選用了多個處理器分別承擔(dān)各個單元的工作,形成了多處理器結(jié)構(gòu)的多路話音編解碼器。根據(jù)系統(tǒng)的工作流程,該編解碼器的工作主要包括以下幾個部分:
呼叫控制:ARM處理器完成對話音信令的解析處理,并完成與衛(wèi)通網(wǎng)信令的適配,實現(xiàn)對多路話音的呼叫控制;
PCM處理:通過FPGA芯片完成對PCM信號中各個時隙的定位,并能夠?qū)崿F(xiàn)各個時隙PCM信號的插入和提取,由FPGA實現(xiàn);
話音編解碼處理:提取后的PCM信號送至話音編解碼DSP處理器進行編碼處理;同時接收來自信道的同步數(shù)據(jù),進行解碼處理,把壓縮后的話音信號再次恢復(fù)成PCM信號,并完成PCM信號的插入;
信道成解幀處理:將壓縮后的編碼數(shù)據(jù)進行并串轉(zhuǎn)換,轉(zhuǎn)換后的同步數(shù)據(jù)發(fā)送至同步接口,同時接收來自同步接口的同步數(shù)據(jù),進行串并轉(zhuǎn)換,發(fā)送至話音編解碼單元。
此外,設(shè)計的多路話音編解碼系統(tǒng)還具有以下2個功能:
①回波抵消處理:為了消除回聲,多路話音編解碼系統(tǒng)具有群路回波抵消功能,該功能通過專用芯片實現(xiàn);
②監(jiān)控單元:通過主控單元ARM處理器擴展的鍵盤接口和顯示屏接口,實現(xiàn)對整個多路話音編解碼系統(tǒng)的參數(shù)進行設(shè)置和查詢,并實現(xiàn)終端參數(shù)的斷電保存功能。
在系統(tǒng)處理的各個流程中,呼叫控制和話音壓縮編解碼是系統(tǒng)中最重要的2個部分,決定了一個系統(tǒng)能否穩(wěn)定高效的運行。由于在該多路話音編解碼系統(tǒng)中采用了多處理器處理形式,這樣既發(fā)揮了ARM在控制方面的優(yōu)勢,同時又發(fā)揮了DSP在數(shù)字信號處理方面的優(yōu)勢。但是如何設(shè)計DSP和ARM處理器之間高速穩(wěn)定的數(shù)據(jù)接口,成為了系統(tǒng)設(shè)計的關(guān)鍵。
HPI[2]是TI公司為新一代高性能DSP上配置的與主機進行通信的片內(nèi)外設(shè)。與直接存儲器存取(DMA)方式不同,HPI的引腳全部為專用,它可以實現(xiàn)并行、高速的數(shù)據(jù)傳送。
TMS320C6000系列DSP的HPI總線有32位數(shù)據(jù)總線HD[31:0],它是一個并行、雙向和3態(tài)的數(shù)據(jù)總線,當(dāng)數(shù)據(jù)總線不響應(yīng)一個HPI讀訪問時,它被置于高阻態(tài)。HPI接口通過3個32位寄存器來完成外部主機和DSP之間的通信,它們是HPI數(shù)據(jù)寄存器HPID、HPI地址寄存器HPIA和HPI控制寄存器HPIC。HPID中存放的是外部主機從DSP存儲空間中讀取的數(shù)據(jù),或者是外部主機向DSP存儲空間中寫入的數(shù)據(jù);HPIA中存放的是外部主機訪問DSP存儲空間的地址;HPIC中存放的是外部主機對DSP的控制信息。其中,HRDY位是DSP輸出給外部主機的準(zhǔn)備就緒信號;HINT位是DSP向外部主機發(fā)出的中斷請求;DSPINT位是外部主機向DSP發(fā)出的中斷請求;HWOB是半字順序。外部主機和DSP都可以訪問HPIC,但只有外部主機可以訪問HPIA和HPID。
此外,DSP的 HPI接口控制信號線還包括HCNTL、HHWIL、HR/W、HDS、HCS 及 HINT 等信號,通過這些信號線共同作用,實現(xiàn)對HPI接口的讀寫訪問。
在該多路話音編解碼系統(tǒng)中,ARM處理器通過HPI接口,實現(xiàn)對DSP編解碼后的話音數(shù)據(jù)的讀寫[3]。2個處理器之間的連接關(guān)系如圖2所示。
圖2 ARM處理器與DSP處理器連接關(guān)系
ARM處理器和DSP處理器之間的HPI接口驅(qū)動程序是數(shù)據(jù)傳輸設(shè)計的核心,ARM通過運行LINUX操作系統(tǒng)的HPI接口驅(qū)動程序完成對HPI接口的讀寫訪問[4]。LINUX操作系統(tǒng)將C6000的HPI總線作為一個外部設(shè)備,虛擬成一種特殊的文件,稱為設(shè)備文件,HPI驅(qū)動程序提供對這個設(shè)備的訪問接口。這些接口定義在LINUX內(nèi)核中,開發(fā)驅(qū)動程序就是要根據(jù)實際的硬件完成這些接口函數(shù)的功能[5]。驅(qū)動中的接口定義如下:
該結(jié)構(gòu)體定義了驅(qū)動程序與用戶的接口,運行于ARM上的用戶應(yīng)用程序可以利用這些接口實現(xiàn)對C6000的HPI總線讀、寫以及其他控制操作。
通過調(diào)用get_mapping_addr函數(shù),(get_mapping_addr(0x0C000000,0x3000000)),可以實現(xiàn)地址映射,將這個物理地址向LINUX內(nèi)核注冊成可以直接訪問的虛擬地址,并定義為VirtualAddr。
對HPI總線的讀或?qū)懖僮魇怯尚盘朒R/W決定的,通過圖2的連接對HPIA和HPID寄存器的訪問可映射為對以下地址的訪問:
根據(jù)系統(tǒng)設(shè)計需要,配置HCNTL1/HENTL0為0/1,實現(xiàn)當(dāng)對HPID進行讀寫訪問后,HPIA地址的自動加1。此時的HPIA地址為:
定義HPI接口的收發(fā)緩沖區(qū)位于DSP內(nèi)主控可尋址的 DARAM內(nèi),字地址從0x40~0x83f共2 048個字,其中收發(fā)各1 024個字。從DSP往主控發(fā)的數(shù)據(jù)位于0x40~0x43f的緩沖區(qū),從主控往DSP發(fā)的數(shù)據(jù)位于0x430~0x83f的緩沖區(qū)內(nèi)。
話音通信過程中,當(dāng)完成了信令交互之后,此時進入話音編解碼通信狀態(tài),編碼時,DSP定時產(chǎn)生中斷,主控處理器ARM在收到中斷之后需要在下一次中斷來臨之前,通過HPI接口把固定地址的數(shù)據(jù)讀空;并將需要解碼的數(shù)據(jù)寫入對應(yīng)的DSP處理器地址,最后清除中斷信號,完成ARM與DSP的一次通信。
多路話音編解碼系統(tǒng)樣機設(shè)計采用標(biāo)準(zhǔn)2U機箱,通過機箱內(nèi)部的背板連接系統(tǒng)的各個單元。采用Intel公司的ARM處理器PXA270作為多路話音編解碼系統(tǒng)的主控處理器;選用 TI公司的TMS320C6416[6]作為系統(tǒng)多路話音壓縮編解碼處理芯片;FPGA芯片采用XILINX公司的XC3S1000芯片,負責(zé)系統(tǒng)中的各種邏輯處理。
通過同步接口連接2臺多路話音編解碼系統(tǒng),同時通過2臺交換機連接呼叫模擬器,這樣便組成了多路話音編解碼測試系統(tǒng)。樣機測試連接如圖3所示。
圖3 多路編解碼系統(tǒng)測試框圖
實際測試過程中,利用呼叫模擬裝置,模擬同時發(fā)起多路電話業(yè)務(wù)呼叫,測試系統(tǒng)工作情況;測試結(jié)果表明,該多路話音編解碼系統(tǒng)能夠支持30路話音呼叫,并且可同時實現(xiàn)30路話音的G.729編解碼,且話音質(zhì)量清晰。
采用多處理器結(jié)構(gòu)對系統(tǒng)進行設(shè)計,利用不同處理器的性能特點,高效地解決了多路話音編解碼器實現(xiàn)過程中的各種問題;并通過HPI接口以及A/D接口,解決了不同處理器之間的數(shù)據(jù)交互問題,實現(xiàn)了強大的通信處理芯片與高性能數(shù)字信號處理芯片以及FPGA處理器的完美結(jié)合。此外,多路話音編解碼器的實現(xiàn)極大地擴展了衛(wèi)星通信系統(tǒng)中話音業(yè)務(wù)的應(yīng)用。
[1]楊軍,周啟靖,晉宗俊,等.低端DSP芯片的語音處理算法研究[J].無線電通信技術(shù),2011,37(1):45-46.
[2]劉喬,繆思恩.基于HPI的ARM與DSP雙核通信實現(xiàn)[J].通信電子技術(shù),2010(3):52 -53.
[3]劉喬,繆思恩.基于HPI的ARM與DSP雙核通信實現(xiàn)[J].電子技術(shù),2010(3):51 -52.
[4]李軼,張善從.基于HPI的雙處理器通信接口設(shè)計[J].微計算機信息,2009,25(10):136 -138.
[5]董強,冷靜,楊靜.基于嵌入式雙核通信HPI接口驅(qū)動的實現(xiàn)研究[J].科技資訊,2008(28):3 -4.
[6]張洪義,王金奎,劉永輝.實現(xiàn) TMS320C6X1X HPI啟動模式[J]. 無線電工程,2005,35(10):52-53.