引 言
英國CML公司推出的語音編解碼芯片CMX618,能夠以較低的比特率進行編解碼處理,并保證很高的語音質量。在此基于CMX618設計實現了一個數字語音通信系統,該系統結構簡單,但功能強大,而且它的工作電壓很低,功耗很小,非常適合通信領域開發使用。
l CMX618功能與特點
1.1 RALCWI算法
CMX618是接近長話級的半雙工語音編解碼芯片,通過一種新的數據速率算法技術——RALCWI技術,對語音進行編解碼處理。RALCWI是一種魯棒的先進的復雜性波形插入技術,與其他語音編解碼技術不同,它使用獨有的信號分解和參數編碼方法,可確保在較高的壓縮率下有很好的語音質量。在聲碼器中,采用 RALCWI技術實現的語音質量與編碼位速率在4 Kb/s以上的標準聲碼器話音質量基本相符。它的MOS(平均意見得分)處于3.5~3.6之間,而且表現相當優秀。
RALCWI聲碼器以幀一幀為基礎進行傳輸。在8 kHz的采樣速率下,對語音信號進行分幀處理,每幀語音包含160個采樣點,形成20 ms的元語音幀。語音編碼器以較高的計時分辨率(8次/幀)進行語音分析,對每一個語音段都會生成一系列的評估參數。然后,使用不同的矢量量化(VQ)方法,這些估算參數被量化生成41 b,48 b或55 b的幀。值得一提的是,這些向量量化值是以多語言語音為基礎進行混合編排的,包含了東西方多種語言的語音采樣值。
1.2 芯片主要功能及特點
CMX618語音編解碼芯片體積小,性能高,功耗低,其具體特點如下:
(1)編碼時,有三種位速率可供選擇(2 050 b/s,2 400 b/s或者2 750 b/s)。在選擇前向糾錯編碼(FEC)的情況下,可通過信道編碼和交織處理形成3 600 b/s的位數據流(60 ms/216 b的數據包或80 ms/288 b數據包)。
(2)解碼時,可選擇前向糾錯(FEC)解碼器對輸入編碼后的語音位流(216 b/60 ms或者288 b/80 ms的數據包)進行解交織和信道解碼,生成糾錯后的編碼語音位速率為2 050 b/s,2 400 b/s或者2 750 b/s,速率依據所選的模塊而定。當使用FEC解碼器時,可利用“軟決策”方法增強解碼功能,減小誤碼的產生。
(3)內部含有一個集成的語音壓縮/解壓器(CODEC),實現模擬語音到低位速率編碼的壓縮/解壓過程。
(4)芯片大部分功能,均可通過軟件編程的方式,配置內部的寄存器來實現,簡單方便。
(5)具有非連續發送檢測(DTX)、舒適噪聲生成器(CNG)、語音激活檢測(VAD)和雙音多頻信號檢測(DTMF)的檢測和產生等輔助功能,使語音性能達到最佳。
1.3 CMX618工作原理
CMX618內部結構圖如圖1所示。
?
由結構圖可以看出,CMX618主要由音頻壓縮/解壓器(CODEC)、RALCWI編解碼器、前向糾錯編解碼器和其他特殊功能模塊幾部分組成。
編碼時,輸入的模擬語音首先要經過音頻壓縮/解壓器(CODEC)模塊,進行調節增益、A/D轉換、濾波和壓縮處理,然后進入編碼器中開始編碼。編碼后,如果選擇使用前向糾錯(FEC)功能,則會對編碼進行糾錯處理,盡量消除誤碼。這樣,編碼后的語音數據,按選擇的位速率和幀的結構生成數據包,利用C- BUS串行總線,傳輸到微控制器LPC2138中。
解碼是編碼的逆處理過程。經C-BUS串行總線傳輸的數字語音,進入解碼器(可選擇FEC功能)開始解碼,然后經過解壓、濾波、D/A轉換、調節增益等處理后,就成為可以聽到的模擬語音。另外,在編碼和解碼期間,如果選擇一些輔助功能,例如非連續發送檢測(DTX)、語音激活檢測(VAD)或雙音多頻信號檢測(DTMF)時則需另行處理。
2 系統設計實現
2.1 微控制器
ARM微控制器具有內核耗電少,功能強,成本低等優點,現在多應用于無線通信、GPS、智能手機開發等諸多領域。這里選用PHILIPS公司的 LPC2138作為數字語音通信模塊的主控制器。LPC2138是一個基于支持實時仿真和嵌入式跟蹤的32位ARM7TDMI-SCPU的微控制器芯片,較小的封裝和很低的功耗使LPC2138特別適用于小型系統中。此外,由于LPC2138片內集成了ROM,RAM,A/D和多個外設模塊,如通用I/O 口、定時器、串行口等,因此非常適合于通信網關、協議轉換器、軟件modem、語音識別、低端成像等場合,為這些應用提供大規模的緩沖區和強大的處理功能。
2.2 系統的硬件設計與實現
基于CMX618的語音通信模塊主要由語音編解碼器CMX618和LPC2138組成,如圖2所示。
?
該語音通信系統使用CMX618內置的CODEC模塊,其內部集成了A/D和D/A轉換、通道濾波、增益調節等功能,足以滿足對模擬語音的抽樣、量化等操作的指標要求。因此,無需再外接芯片,也節省了大量的物理空間,這在實際的開發設計中是十分重要的。
微控制器LPC2138通過C-BUS串行總線與CMX618連接。C-BuS是一個四線中斷一驅動串行系統,可在主控制器和CMX618內部寄存器間進行數據傳輸、控制或狀態信息的發送。
2.3 系統的軟件設計與實現
系統的軟件設計主要是編寫CMX618的驅動程序,以及對主控制器LPC2138進行編程實現對CMX618的控制。在上電后,首先應初始化CMX618 和LPC2138。對語音編解碼芯片,要配置其中的一些功能寄存器,這包括設置編解碼位速率、組幀結構、增益大小、輔助功能選用以及開啟中斷標志位等;對主控制芯片,則要配置接口方式、中斷條件和傳輸速率等。
實際應用中,為使編解碼過程中的糾錯能力達到最佳,在使用前向糾錯(FEC)編碼器處理語音編碼時。可選擇聲碼器幀以3×20 ms或4×20 ms的形式進行數據包傳輸。這種把多幀數據進行封裝、打包傳輸的形式,更有效地抑制了誤碼的產生。
這里,要注意CMX618語音編解碼芯片的狀態(state)寄存器(地址為MYM40)。編碼和解碼操作在狀態寄存器中都有對應的標志位,當采用中斷方式編解碼時,每次要先讀出狀態寄存器中對應標志位的值,只有當對應標志位的值為“1”時,才會產生中斷,執行相應的操作,如圖3所示。
?
其中,在狀態(state)寄存器(地址為MYM40)中對應的狀態標志有VDA,VDW,RDY。其中,VDA為編碼標志位;VDW為解碼標志位;RDY為等待配置標志位。
2.4 關鍵問題
(1)采用RALCWI算法時,由于存在算法抖動,會使編碼每一幀時花費的時間不同,這使微處理器對輸出數據的時間不好掌握。為解決此問題,在編碼時,會給微處理器一條指令,只要編碼可行,就會進行數據傳輸;在解碼時,則會增加一個初始延遲時間,避免CODEC因無采樣數據而產生時間空隙。
(2)為了提高微控制器LPC2138與CMX618間的傳輸速率,使用C-BUS串行總線讀/寫寄存器時,可采用“數據流”的方法傳輸數據,即只需要一個地址/指令,就可以傳輸多個數據字節。具體實例如圖4和圖5所示。
?
利用C-BUS串行總線,寫入CMX618內部寄存器的過程中,從主控制器傳過來的數據,首個字節為CMX618寄存器的地址,然后,數據就會源源不斷地傳人此寄存器中;同樣,從CMX618內部寄存器讀出數據時,首先也要寫入寄存器的地址,確定位置,然后就可以從此寄存器中讀出數據了,直到傳輸完為止。
3 應 用
?
該語音通信模塊已經成功應用于900 MHz數字無中心對講機中,圖6為900 MHz數字無中心對講機各功能模塊的結構簡圖,圖中的語音模塊與微控制器部分即為涉及的內容。如今,民用對講機逐步數字化已是大勢所趨,國內外眾多機構已經投入了大量的人力、物力進行研究和開發,故此系統有著廣闊的發展空間。
4 結語
基于該芯片設計的數字語音通信系統,有很好的清晰度和穩定性,在通信產業迅猛發展的今天,必將有著廣闊的應用前景。
評論
查看更多