陳學藝, 凌朝東, 陳哲平, 楊 驍
(華僑大學 信息科學與工程學院,福建 廈門 361008)
目前,大多數數字對講機方案都是基于通用芯片平臺,集成度低,功耗較高,價格昂貴,調試復雜,不利于產業化。隨著集成電路技術的發展,基于聲碼器與微控制器的對講機方案得到了較快的發展,聲碼器通常使用專用語音編解碼芯片完成語音數字化處理。為了簡化系統維護,方便使用操作,采用通用數字信號處理器作為基帶處理核心,實現聲碼器功能,使語音處理靈活,具有更好的通用性和擴展性。
根據該基帶系統在功耗、成本及擴展性等方面考慮,需要完成模擬語音信號數字化轉換及處理,無線信道傳輸。系統總體結構方案如圖1所示。

系統主要由 AIC23數模轉換模塊、DSP語音處理模塊、微控制單元(MCU)模塊和 CC1101射頻模塊4部分構成。
基帶系統處理核心是基于通用DSP形成的數字語音處理單元,實現數模轉換模塊AIC23的控制,完成MELP聲碼器。選擇TMS320VC5510作為基帶系統處理核心,它有如下特點[1]:雙乘加器(MAC)結構,代碼執行效率高;320KWord的RAM,可以減少擴展功耗較大的片外存儲芯片;豐富的片上外設,如:外部存儲器接口(EMIF, External Memory Interface)、直接內存存取(DMA, Direct Memory Access)控制器、多通道緩沖串行口(McBSP, Multi-channel Buffered Serial Port)等;先進的電源管理技術降低系統功耗。通過 EMIF接口擴展 256KWord的Flash存儲器,用于上電后系統程序的加載,和電源、時鐘管理、JTAG模塊構成DSP的最小系統。
TLV320AIC23是TI公司推出的一款高性能、低功耗立體聲音頻編解碼器[2]。它可以和TI的DSP無縫連接,通過 DSP的 McBSP接口與其進行連接,McBSP1用于配置工作參數,McBSP2用于傳送模數(A/D)、數模(D/A)轉換的數據。AIC23和DSP的輸入輸出接口(I/O)電壓兼容,使系統設計簡單。
控制器 MCU主要實現對外圍器件的控制和設置,進行按鍵掃描檢測、基帶信號的發送與接收、與 DSP之間數據的交換和實現通信協議。選擇MSP430F149作為主控制器[2],其通用同步/異步接收/發送器(USART)串口與 DSP進行通信。 USART1與DSP的Mcbsp0接口連接,通過串行外設接口(SPI)進行數據通信;USART0與射頻模塊進行連接通信。
射頻模塊主要完成數字基帶信號調制解調,規定比特符號和碼元之間的關系,并建立頻率同步和碼元同步。射頻模塊采用 TI的 CC1101芯片,集成了一個高度可配置的基帶調制解調器,支持四進制頻移鍵控(4FSK)、高斯頻移鍵控(GFSK)、最小移頻鍵控(MSK)等調制方式。單片機通過SPI方式實現對CC1101運行參數和64字節發送/接收先入先出隊列(FIFO)的控制[3]。
軟件主要是DSP與MSP430的程序設計,包括數據采集、語音處理、MCU控制處理。接收時,CC1101接收無線傳輸來的調制信號,解調后送到MSP430完成數據組幀恢復,得到數字編碼碼流。與DSP進行通信,DSP對其進行解碼恢復成數字語音碼流,送到AIC23進行 D/A轉換為話音信號。發送時, 由麥克風輸入的語音經AIC23進行A/D采樣,由DSP進行數字壓縮編碼,再送到單片機進行填充組幀,最后由射頻模塊進行調制后發射出去。
DSP與AIC23之間的數據交換采用DMA的工作方式[2],減輕數據采集時DSP的負擔,同時進行聲碼器處理。采用乒乓(Ping-Pong)存儲結構,每當串口Mcbsp2發送/接收到一個單元數據,自動觸發DMA將其存入一個存儲塊中,例如Ping存儲區,當存儲滿時會中斷 CPU進行數據處理。同時,DMA會自動去操作Pong存儲區,繼續采集數據。這樣可以有效防止數據在處理時被新數據覆蓋的情況,而且Ping-Pong之間自動切換,可以不間斷對數據進行采集,適合流水線式處理,完成數據的無縫緩沖與實時處理。
語音處理模塊主要實現MELP聲碼器算法[4-5]。語音幀長22.5 ms,每幀數據用 54 bit 進行編碼。MELP聲碼器分為分析器和合成器兩部分。分析器實現對原始語音信號進行幀分析處理,其流程圖如圖2所示。首先經過高通濾波器進行預處理,濾除直流工頻干擾,然后完成各個語音段的特征參數(基音周期、帶通清/濁音強度、非周期脈沖標志、線譜對(LSF,Linear Spectrum Pairs)參數、增益估計和傅里葉譜幅度等)的提取,最后進行量化編碼和組幀。

合成器用于對接收到的碼流進行解碼恢復,首先進行解包、排列,然后譯碼生成混合激勵信號,先后經過自適應譜增強,線性預測編碼參數(LPC,Linear Predictive Coding)合成濾波,增益控制,脈沖離散濾波等步驟處理,在接收端重構輸入的語音信號[5]。合成器的流程圖如圖3所示。
聲碼器模塊采用 MELP標準的 C程序開源代碼。在DSP移植過程中,需要對其進行優化,以滿足實時性要求。主要從以下幾個方面對MELP的定點C代碼進行優化。

(1)編譯器優化選項和inline函數方法優化[6]
采用優化選項的優化級別-o2,得到較高的代碼優化效率。對小函數用inline關鍵字限定,當函數較常被調用時,可以減少調用的時間開銷,獲得較好優化效果。
(2)使用ETSI函數[7]
調用mathhalf文件中基本運算函數非常頻繁,運行效率低。將這些函數用ETSI函數代替,當代碼中調用了這些函數時,編譯器會自動把優化過的匯編代碼嵌入到程序中,可以節省很多時鐘周期,優化效果很好。
(3)數據內存的優化
對存儲器進行合理規劃,將程序代碼和常量系數分配到單訪問隨機存儲器(SARAM, Single Access RAM)中,把頻繁訪問的變量、堆棧等放在雙訪問隨機存儲器(DARAM, Dual-Access RAM)中,充分利用片內內存,提高程序的執行效率。
(4)對程序結構進行簡化
對代碼結構進行優化,減少一些不必要的代碼的運行,比如 logic();等測試函數。將算法中用到MEM_ALLOC()等動態分配內存的函數,根據運行時所需的空間大小在函數中直接給出,減少庫函數的調用,防止破壞軟件流水執行。
(5)循環優化[8]
對算法中循環部分進行優化。利用其硬件結構、尋址方式進行修改,減少分支和調用等指令,合理安排代碼處理流程。充分利用其指令執行時的流水線特點,提高執行效率。
DSP程序的控制流程如圖 4所示。程序中設置兩個長度為180字編碼和解碼緩沖塊。當接收緩沖區滿180樣點時,DMA中斷CPU進行處理,把數據復制到編碼緩沖塊中并進行MELP編碼,處理得到的數據通過DMA復制到發送緩沖存儲器,送到MCU進行后續處理。解碼過程是將MCU發來的幀比特數據,經過MELP解碼后存儲解碼數據到解碼緩沖塊中,然后將合成語音數據發送到AIC23進行話音的回放。
DSP與 MSP430微控制器采用 SPI 方式進行通信,MSP430工作在主模式。主要流程如圖5所示。發送過程中MSP430通過串行通信模塊USART1 接收來自DSP的54bit一幀的語音壓縮碼流后,加上一些幀頭、幀尾等信息進行組幀,形成 72 bit 的數據幀,由 USART0 送至射頻模塊進行發射。接收過程,MSP430對從射頻模塊接收到解調后的數據進行處理,將數據組幀恢復成壓縮的數字語音碼流,發送至DSP進行語音的合成處理。


程序經過編譯、連接,然后進行下載調試[9]。對MELP聲碼器進行測試,優化前后的所占用的時鐘周期如表1所示。

表1 優化前后時鐘周期
可以看出,優化前MELP處理一幀數據,分析就需要 31 115 629個時鐘周期,DSP工作在最高頻率200 MHz下也需要 155.6 ms,遠遠大于一幀 22.5 ms的處理時間。經過優化后,分析一幀數據只需要4.1 ms,合成一幀語音也從43.6 ms降到了1.3 ms。能夠達到語音的實時處理,滿足系統性能要求。
利用國際電信聯盟(ITU)推薦的P.862主觀語音質量評估(PESQ, Perceptual Evaluation of Speech Quality)算法對合成語音與原始語音的誤差進行數學計算,得到合成語音的平均主觀得分(MOS, Mean Opinion Score)[6]。優化后 MELP聲碼器的合成語音的MOS值在3.27左右,通過人耳可以聽到較清晰,可懂度較好的話音,符合要求。
從基帶系統中 MELP聲碼器的測試結果看, 基于通用DSP的方案在發射端能進行語音采集數字化處理,并在接收端正確完成語音的解碼回放,話音質量良好。結合DSP處理器特點,通過對代碼優化后獲得性能良好,在信道頻率資源有限的條件下,較好的實現了MELP聲碼器對語音的數字化處理,能滿足數字對講機基帶系統設計要求。適用于短波窄帶數字語音通信、保密通信等需要低速率的語音編碼場合, 具有廣闊的應用前景。
[1] 劉媛媛.基于DSP的MELP語音編碼算法研究及實現[D].哈爾濱:哈爾濱工程大學,2008.
[2] 熊堃,陳向東,葛林.數字對講機中語音編碼的研究與DSP實現[J].通信技術,2010,43(10):123-125.
[3] 韋建超,陳向東.基于 CC1101的無中心數字對講機設計[J].電子設計工程,2009,17(06):1-3.
[4] 彭天偉,凌朝東,楊驍.數字對講機中語音信號處理的研究[J].通信技術,2011,44(10):58-60.
[5] 王洪,唐凱.低速率語音編碼[M].北京:國防工業出版社,2006:72-172.
[6] 李洋,吳玉成.MELP語音編解碼算法在DSP上的優化[J].電聲技術, 2010,34(05):44-47.
[7] 鐘磊. G.723.1在DSP數字對講機基帶系統中的應用[J].單片機與嵌入式系統應用,2009(08):13-16.
[8] 陳泰紅,任勝杰,魏宇.手把手教你學 DSP:基于 TMS320 C55x[M].北京:北京航天航空大學出版社,2011:154-171.
[9] 文軍,王加懂.DSP程序在線編程的研究與實現[J].信息安全與通信保密.2007(08):193-195.