
(1)調(diào)度及命令解釋模塊
該模塊主要用于解釋HOST發(fā)來的各種命令,如發(fā)送或接收編解碼數(shù)據(jù),查詢編解碼狀態(tài)以及啟動、停止編解碼操作等,該模塊不直接與HOST打交道,而是以SPOX提供的服務(wù)方式,通過接口功能模塊間接地實現(xiàn)與HOST之間數(shù)據(jù)交換。同時在SPOX的支持下,完成對多路語音編解碼的適時調(diào)度。
(2)G.729.A數(shù)據(jù)壓縮與解壓縮模塊
該模塊是ITU-T G.729.A編解碼器的核心模塊,在很大程序上影響編解碼的性能。該模塊實現(xiàn)了ITU-T G.729.A全部功能。該部分已單獨形成一個TMS320C6201函數(shù)庫,可與其他任何部分連接。
(3)接口模塊
該模塊主要實現(xiàn)TMS320C6201與HOST以及與語音卡之間的數(shù)據(jù)交換,因此該模塊分成兩部分。一部分主要負(fù)責(zé)TMS320C6201 DSP與語音卡之間的數(shù)據(jù)傳輸,它負(fù)責(zé)不斷地將語音卡采取的語音數(shù)據(jù)通過語音總線(如SCbus),采取等時通信方式送入到LSI/PCI6200資源卡RAM中,或者是將編解碼器解碼后的數(shù)據(jù)經(jīng)SCbus總線送給語音卡。另一部分主要負(fù)責(zé)TMS320C6201 DSP與HOST之間的數(shù)據(jù)交換,一方面要將壓縮后的語音信號由PCI總線送往HOST;另一方面將HOST解包的碼流分類后讀入編解碼器。編解碼器與HOST之間的數(shù)據(jù)交換采用中斷方式進行同步。
2.3 ITU-T G.729.A標(biāo)準(zhǔn)在TMS320C6201上實現(xiàn)的關(guān)鍵技術(shù)
處理密度是衡量IP電話網(wǎng)關(guān)性能好壞的一個重要指標(biāo)。而一個IP電話網(wǎng)你在硬件平臺確定的情況下,其處理密度主要取決于它所采用的編解碼器的語音編碼處理延遲,即代碼的執(zhí)行速度。如何提高G.729.A語音編碼的執(zhí)行速度是G.729.A編解碼器實現(xiàn)的關(guān)鍵技術(shù)問題之一。這此,歸納出一系列編程技巧和優(yōu)優(yōu)方法,較好地解決了這一難題。
(1)G.729.A標(biāo)準(zhǔn)中規(guī)定的算法都是基本算法。因此,在實現(xiàn)時,可以用快速算法。例如,相關(guān)系數(shù)的計算,在G.729.A標(biāo)準(zhǔn)中使用一種最基本的計算方法,如果采用快速的傅里葉變換技術(shù)或采用分解因子的計算方法,就可以加快計算速度。
(2)算法中有很多FIR和IIR運算,如:共振峰濾波器、聽覺加權(quán)濾波器、聯(lián)合濾波器等,在設(shè)計這些濾波器時,使用較大數(shù)組來放濾波器的系數(shù)。這樣,每計算一次輸出,不需系數(shù)更新移位,從而可以減少內(nèi)存操作次數(shù),因此可以通過犧牲存儲器空間來提高代碼的執(zhí)行速度。如:共振峰濾波器是十階濾波器,常規(guī)的實現(xiàn)方法是設(shè)置一個長度為10元素的一維數(shù)組來保存最近的10個共振峰樣本點。濾波器每輸出一個樣本點,該數(shù)組就需更新一次。對于一個子幀40個樣本點,就需進行40次更新操作。如設(shè)置長度為70元素的一組數(shù)組,就可以免去更新操作?梢院艽蟪潭鹊夭僮鞔a的運行速度。
(3)多使用指針,盡量減少變量之間的反復(fù)拷貝操作。
(4)用查詢靜態(tài)表的方法來代替動態(tài)的計算,從而減少計算延遲。例如,在設(shè)計cos()函數(shù)時,程序在初始化時就生成一個512項的cos()函數(shù)表。當(dāng)需要計算cos()函數(shù)值時,可以采用查表方式來代替動態(tài)計算。
(5)內(nèi)存單元的合理分配。TMS320C6201 DS的片內(nèi)存儲器有64KB數(shù)據(jù)存儲器。由于TMS320C6201從片內(nèi)存儲器讀入一個字比從片外存儲器讀入一個字快14倍,因此在編程時,盡量將經(jīng)常使用的數(shù)據(jù)分配在片內(nèi)存儲器中。

(7)充分利用TMS320C6201的編譯器和優(yōu)化工具來優(yōu)化C和線性匯編代碼,并合理地選擇優(yōu)化參數(shù)。有關(guān)速度的優(yōu)化參數(shù)是:-o3、-pm、-mt、mi等。并盡量用TMS320C6201的線性匯編或匯編語音來實現(xiàn)G.729.A編解碼器的算法。
(8)充分利用TMS320C6201的特點來編寫代碼。如流水功能,8個功能單元并行操作功能,32位字讀寫功能以及Intrinsics的使用等,例如:對多重循環(huán),如最內(nèi)層循環(huán)次數(shù)少而較簡單,可把最內(nèi)層循環(huán)展開,以便外循環(huán)做流水線;對一些簡單循環(huán)而前后沒有因果關(guān)系,合并這些循環(huán)也有利于做流水線。
3 性能測試
分別用二種測試工具對G.729.A編解碼器的處理延遲作了測試。第一種測試工具是C6X Simulator(TMS320C6201的仿真軟件),測試條件是假設(shè)所有代碼裝在TMS320C6201片同的程序存儲器中;因此,稱之為Non cache測試模式。另外一種測試方式是采用TI公司的C6X的EVM卡(評估卡),測試條件是將TMS320C6201片內(nèi)64KB RAM作為Cache使用;因此稱之為cache模式。二種測試模式的測試結(jié)果如表1所示。
表1 G.729.A編解碼的時鐘數(shù)





