新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > ITU-TG.729算法及其實(shí)時(shí)實(shí)現(xiàn)

ITU-TG.729算法及其實(shí)時(shí)實(shí)現(xiàn)

作者: 時(shí)間:2010-12-22 來(lái)源:網(wǎng)絡(luò) 收藏

· 接口功能模塊

該模塊ADSP-2181與主CPU的數(shù)據(jù)實(shí)際交換工作。該模塊包括DSP的主控程序和數(shù)據(jù)傳輸兩部分。DSP的主控程序主要負(fù)責(zé)不斷將采集到的語(yǔ)音數(shù)據(jù)分幀,送入編碼器,并將接收到的碼流分類(lèi)后送入解碼器模塊。數(shù)據(jù)傳輸部分負(fù)責(zé)采集數(shù)據(jù)和與主CPU的數(shù)據(jù)交換。

2.2 硬件設(shè)計(jì)

本系統(tǒng)考慮了各CPU之間的數(shù)據(jù)交換與協(xié)調(diào)等問(wèn)題。ADSP2181具有一個(gè)16位的IDMA

口,在處理器全速運(yùn)行的情況下,ADSP-2181可以自動(dòng)完成IDMA口的接收和發(fā)送數(shù)據(jù),這為系統(tǒng)的設(shè)計(jì)帶來(lái)了很大的便利。利用ADSP-2181的這個(gè)性質(zhì),我們通過(guò)IDMA口來(lái)ADSP-2181與主CPU的數(shù)據(jù)交互。

我們?cè)O(shè)計(jì)了ADSP-2181與PC機(jī)ISA總線接口的主從系統(tǒng)。在這個(gè)主從系統(tǒng)中,PC機(jī)為主CPU,ADSP-2181為從CPU。在啟動(dòng)時(shí),由PC機(jī)通過(guò)IDMA口將程序裝載入ADSP-2181內(nèi)部存儲(chǔ)器中。在ADSP-2181全速運(yùn)行時(shí),主機(jī)可以查詢從機(jī)的運(yùn)行狀態(tài)、讀取壓縮后的G.729碼流,也可以送入待解碼的G.729碼流等。

在該主從系統(tǒng)中,PC機(jī)通過(guò)ADSP-2181的IDMA口來(lái)讀寫(xiě)它的內(nèi)部存儲(chǔ)器。PC總線通過(guò)GAL譯碼,形成,,,,IACK信號(hào),與ADSP-2181的IDMA口連接,這樣就了在ADSP-2181全速運(yùn)行的情況下,PC機(jī)仍能訪問(wèn)到ADSP-2181內(nèi)部存儲(chǔ)器。

圖3是主從系統(tǒng)中的ADSP-2181功能與接口的框圖。語(yǔ)音信號(hào)由ADSP1847采集,通過(guò)ADSP-2181的串口0送入到ADSP-2181進(jìn)行編碼。編碼數(shù)據(jù)通過(guò)IDMA口送到主機(jī)進(jìn)行存儲(chǔ)。需要解碼的數(shù)據(jù)從主機(jī)由IDMA口送到ADSP-2181進(jìn)行解碼,解碼后獲得的語(yǔ)音信號(hào)通過(guò)串口0送至ADSP1847。

2.3 難點(diǎn)的解決

數(shù)據(jù)在DSP中的安排。維護(hù)好一張變量表,每次進(jìn)入一個(gè)模塊時(shí),首先使用已經(jīng)分配但暫時(shí)不用的變量。只在不夠的情形下,再去分配額外的變量,同時(shí)將這些新分配的變量計(jì)入到變量表中,供其它模塊使用。另外維護(hù)好一個(gè)局部變量堆棧,使得各個(gè)模塊的內(nèi)部局部變量分配在堆棧中,當(dāng)從該模塊退出時(shí),就從堆棧中彈出這些局部變量,釋放空間。

數(shù)據(jù)精度的處理。對(duì)精度要求比較高的地方,將計(jì)算的中間變量采用32位來(lái)表示,運(yùn)算結(jié)束后,再轉(zhuǎn)換成16位表示,這樣指令條數(shù)增加不多,但精度卻大大提高了。在某些精度要求比較高的模塊,采用尾數(shù)和指數(shù)來(lái)表示浮點(diǎn)數(shù),自己編寫(xiě)一套指數(shù)和尾數(shù)的運(yùn)算庫(kù),由于尾數(shù)和指數(shù)表示法有足夠大的精度范圍,完全滿足要求。但只能在少許地方采用這種方法,否則運(yùn)算量就會(huì)上去,給實(shí)現(xiàn)帶來(lái)困難。

有限計(jì)算資源的利用。利用ADSP強(qiáng)大的多功能指令可以非常好地利用有限計(jì)算資源。

DSJP高速運(yùn)行時(shí),DSP與主機(jī)的數(shù)據(jù)交互。由于ADSP-2181具有一個(gè)16位的IDMA口,在處理器全速運(yùn)行的情況下,ADSP-2181可以自動(dòng)完成IDMA口的接收和發(fā)送數(shù)據(jù),這為系統(tǒng)的設(shè)計(jì)帶來(lái)了很大的便利。利用ADSP-2181的這個(gè)性質(zhì),我們通過(guò)IDMA口來(lái)實(shí)現(xiàn)ADSP-2181與主CPU的數(shù)據(jù)交互。

語(yǔ)音信號(hào)和編解碼緩沖區(qū)的維護(hù)。本系統(tǒng)的數(shù)據(jù)交互都是采用雙緩沖的工作方式。雙緩沖的好處在于數(shù)據(jù)的交互不會(huì)影響到其他工作的正常進(jìn)行。

本系統(tǒng)的數(shù)據(jù)采集與播放采用雙緩沖的工作方式。采集時(shí)采用cod-ad和cod-work兩個(gè)緩沖區(qū),播放時(shí)采用decod-work和decod-work兩個(gè)緩沖區(qū)。cod-ad用于ADSP-2181的串口數(shù)據(jù)采集,cod-work用于ADSP-2181的編碼。當(dāng)cod-ad采完一幀數(shù)據(jù)后與cod-work互換。decod-work用于ADSP-2181的串口數(shù)據(jù)播放,decod-work用于ADSP-2181的解碼。當(dāng)播放完一幀數(shù)據(jù)后,decod-ad與decod-work互換。采集與播放程序放在ADSP-2181的中斷服務(wù)程序中。本系統(tǒng)只開(kāi)放ADSP-2181的接收中斷,ADSP-2181每接收一個(gè)數(shù)據(jù),同時(shí)就播放一個(gè)數(shù)據(jù)。

另外G.729的編碼器的編碼數(shù)據(jù)和解碼器的解碼數(shù)據(jù)都有兩個(gè)緩沖區(qū),緩沖區(qū)的工作原理與數(shù)據(jù)采集和播放的雙緩沖區(qū)的工作原理相同。

綜上所述,ITU-T的G.729協(xié)議是一個(gè)ITU-T的8Kbps語(yǔ)音編解碼協(xié)議,它具有高音質(zhì)和低延時(shí)的特點(diǎn)。軟件設(shè)計(jì)主要包括三個(gè)部分:命令解釋器、G.729數(shù)據(jù)引擎、接口功能模塊。我們用ADSP-2181實(shí)現(xiàn)了G.729協(xié)議,在ADSP-2181的數(shù)據(jù)采集/播放和ADSP-2181與主CPU接口的數(shù)據(jù)交互方面都采用了雙緩沖方式。硬件設(shè)計(jì)主要是通過(guò)ADSP-2181的IDMA口,來(lái)實(shí)現(xiàn)主CPU與ADSP-2181的數(shù)據(jù)交互。

針對(duì)實(shí)現(xiàn)G.729的一些難點(diǎn),我們提出了一系列解決的方法,通過(guò)這些解決方法,我們已經(jīng)在Analog Device的定點(diǎn)數(shù)字處理芯片ADSP-2181上實(shí)時(shí)實(shí)現(xiàn)了符合ITU-T G.729的全部功能,并且已經(jīng)通過(guò)了ITU-T G.729的全部測(cè)試矢量。該編解碼器已經(jīng)在數(shù)字語(yǔ)音記錄儀和H.323網(wǎng)上多媒體通信系統(tǒng)中推廣應(yīng)用。


上一頁(yè) 1 2 3 下一頁(yè)

評(píng)論


相關(guān)推薦

技術(shù)專(zhuān)區(qū)

關(guān)閉