基于C5000的音頻解碼系統(tǒng)設(shè)計(jì)
MPEG(活動圖像專家小組)是ISO/IEC組織的一個工作小組,負(fù)責(zé)制訂有關(guān)活動圖像、音頻及其組合的壓縮和解壓縮處理等方面的技術(shù)標(biāo)準(zhǔn)。MPEG-1 Layer3(即MP3)是MPEG-1國際音頻標(biāo)準(zhǔn)(ISO/IEC 11172)中的第三層編、解碼算法,它具有壓縮比高、聲音還原質(zhì)量好、算法復(fù)雜度適中等優(yōu)點(diǎn),采用這種標(biāo)準(zhǔn)制作的MP3格式的音樂在數(shù)字音頻的存儲、互聯(lián)網(wǎng)上的多媒體音頻傳輸?shù)阮I(lǐng)域得到了廣泛應(yīng)用。
目前基于專用芯片的音頻編解碼方案軟件升級靈活性不高,基于DSP的音頻編解碼方案又多基于C54x平臺,而解決低功耗的技術(shù)方法是值得研究的問題。
基于上述背景,文中提出了基于DSP的音頻解碼系統(tǒng)的研究與實(shí)現(xiàn)這一解決方案。本課題的主要目的是:以TI公司的C5000系列通用型DSP芯片TMS320VC5509為核心,完成系統(tǒng)硬件平臺的設(shè)計(jì)以及MP3的解碼算法在該硬件平臺上的實(shí)現(xiàn)。整個系統(tǒng)的硬件平臺包括DSP核心模塊、FLA SH存儲器、音頻CODEC,電源等模塊。該系統(tǒng)通過USB接口與計(jì)算機(jī)通信,下載MP3格式的數(shù)據(jù)流,并將其存儲在Flash中,然后由DSP讀取Flash中的MP3數(shù)據(jù)流,完成解碼工作,并通過CODEC播放。同時可以對DSP進(jìn)行其他解碼算法的軟件編程,實(shí)現(xiàn)多種數(shù)據(jù)流格式的音頻解碼,具有很強(qiáng)的軟件升級靈活性,還解決了低功耗的問題。
1 硬件平臺的總體設(shè)計(jì)
目前業(yè)界對MP3解碼系統(tǒng)的解決辦法有兩個方案:一是使用將解碼算法固化到集成電路中去的專用芯片,這些芯片將一些片外資源集成到芯片內(nèi)部,可以簡化MP3解碼系統(tǒng)實(shí)現(xiàn)所需的片外電路,便于整個系統(tǒng)的開發(fā),但由于其算法固化到芯片內(nèi)部,不能通過軟件升級,而且此類芯片普遍價格偏高。另外一個方案,就是使用通用的DSP來實(shí)現(xiàn)MP3解碼系統(tǒng),這種解決方案對設(shè)計(jì)人員的軟硬件技能提出了很高的要求,不過其有很好的升級特性,而且可以更方便的改進(jìn)和優(yōu)化解碼算法,從而得到更好的音質(zhì)回放效果,并且和第一種解決方案一樣,其功耗比較低。
綜合各方面的優(yōu)劣條件,我們選擇了第二種解決方案,即基于通用DSP芯片來實(shí)現(xiàn)整個解碼系統(tǒng)的硬件平臺。其硬件系統(tǒng)實(shí)現(xiàn)框圖如圖1所示。
這個框圖大致的畫出了解碼系統(tǒng)的基本組成部分。在圖中,我們采用了512 k的串行EEPROM芯片用于實(shí)現(xiàn)bootloader,用CF卡存儲MP3音樂及解碼程序。核心的處理器采用了TI公司的TMS320VC5509 DSP芯片,考慮到其內(nèi)部的RAM容量有256 kB,而我們的程序大小為80 kB,因此我們在此設(shè)計(jì)中沒有外擴(kuò)RAM。
整個硬件平臺的工作流程如下:首先通過USB接口,從PC機(jī)中復(fù)制MP3音樂,拷貝在大容量CF卡中。然后DSP讀取CF卡的MP3數(shù)據(jù)進(jìn)行解碼,還原出PCM信號,再通過DSP的多通道帶緩沖串口(McBSP)傳送給音頻CODEC芯片,最終播放出MP3音樂。
1.1 硬件平臺的具體實(shí)現(xiàn)
1.1.1 核心DSP芯片介紹
本方案采用的x系列是TI公司推出的繼C5000系列C5x、C54x后的新型產(chǎn)品。它采用了增強(qiáng)型的哈佛結(jié)構(gòu),具有專門的硬件乘法器,使用流水線操作,提供特殊的DSP指令,可用來快速地實(shí)現(xiàn)各種數(shù)字信號處理算法。為方便實(shí)際中的應(yīng)用,C55X系列DSP具有各自不同的硬件結(jié)構(gòu),如在片存儲器和片上外設(shè)等,可根據(jù)性價比和不同的應(yīng)用場合靈活選用。由于采用了高度并行硬件結(jié)構(gòu)、模塊化設(shè)計(jì),使得C55X系列DSP具有功耗低、速度快等優(yōu)點(diǎn)。主要用在音頻壓縮、無線通訊等領(lǐng)域。
與5000系列其他芯片相比,TMS320VC5509以其獨(dú)有高性能低功耗和低價格特性,使得一推出就受到業(yè)內(nèi)用戶的歡迎。
1.1.2 與計(jì)算機(jī)的接口設(shè)計(jì)
與計(jì)算機(jī)的接口設(shè)計(jì)使用的是當(dāng)今十分流行的USB接口,實(shí)現(xiàn)從計(jì)算機(jī)下載數(shù)據(jù),5509自帶的USB接口完全符合USB2.0全速接口標(biāo)準(zhǔn),可與任何外部微控制器實(shí)現(xiàn)高速并行接口(12M比特/秒)。
1.1.3 存儲器設(shè)計(jì)
CF卡被用來存儲音樂和數(shù)據(jù)文件,它通過DSP的外部存儲器接口(EMIF)與DSP相連,它丁作在True—IDE模式和3.3 V的電壓下。我們可以根據(jù)系統(tǒng)需要選擇任意容量的CF卡。選用Microchip Tethnology公司的64 kB的EEPROM 24LC512存放的是啟動程序,每當(dāng)上電時,即將CF卡中的程序調(diào)入內(nèi)存運(yùn)行。
24LC512與DSP的接口采用I2C總線通信。I2C(Inter—Integrated Circuit)總線是一種由PHILIPS公司開發(fā)的兩線式串行總線,用于連接微控制器及其外圍設(shè)備。I2C總線是由數(shù)據(jù)線SDA和時鐘線SCL構(gòu)成的串行總線,可發(fā)送和接收數(shù)據(jù)。存CPU與被控IC之間、IC與IC之間進(jìn)行雙向傳送,最高傳送速率100 kbps。各種被控制電路均并聯(lián)在這條總線上,但就像電話機(jī)一樣只有撥通各自的號碼才能工作,所以每個電路和模塊都有唯一的地址,在信息的傳輸過程中,I2C總線上并接的每一模塊電路既是主控器(或被控器),又是發(fā)送器(或接收器),這取決于它所要完成的功能。CPU發(fā)出的控制信號分為地址碼和控制量兩部分,地址碼用來選址,即接通需要控制的電路,確定控制的種類;控制量決定該調(diào)整的類別(如音量等)及需要調(diào)整的量。這樣,各控制電路雖然掛在同一條總線上,卻彼此獨(dú)立,互不相關(guān)。其時序圖如圖4所示。
1.1.4 音頻解碼接口設(shè)計(jì)
音頻CODEC芯片采用的是TI公司的。它的主要作用是將DSP解碼后的PCM音頻流通過D/A變換,轉(zhuǎn)換成模擬聲音信號進(jìn)行播放。
TLV320AIC23 DSP Codec是德州儀器公司2001年推出的高性能單片立體聲編碼解碼器,數(shù)據(jù)轉(zhuǎn)換字長16/20/24/32可選,工作電壓與xDSP的核心和I/O電樂兼容,可實(shí)現(xiàn)與C55x DSP串行口的無縫連接,功耗很低,帶有的I2C和SPI總線兼容控制接口能使AIC23編碼譯碼器與其他微處理器共同使用。
其主要特點(diǎn)如下:
1)高性能立體聲編碼解碼器:支持8~96 kHz采樣頻率,90DB ADC,100DB DAC轉(zhuǎn)換信噪比,1.42~3.6 V內(nèi)核數(shù)字供電電壓,2.7~3.6 V模擬供電電壓均與C55x DSP兼容。
2)可編程多種串行口數(shù)據(jù)傳輸標(biāo)準(zhǔn):支持I2C和SPI串口數(shù)據(jù)傳輸模式,均可以與C55x DSP的McBSP口兼容。
3)內(nèi)置放大的立體聲輸入輸出(增益可調(diào)節(jié)),耳機(jī)放大模塊輸出((30mW)。
4)低功耗電源管理:錄音重放模式下19 mW,備用狀態(tài)小于150 uW,停止?fàn)顟B(tài)小于15 uW。
音頻CODEC與DSP的硬件接口電路如圖5所示。
由上圖我們可以看出,DSP VC5509與AIC23的接口可分成兩部分:控制接口部分(MeBSP1)和音頻數(shù)據(jù)接口部分(MeBSP0)。其中DSP的McBSP1口完成AIC23的控制部分功能,此控制口配置為常用的SPI接口模式;而McBSP0口完成音頻數(shù)據(jù)的傳輸功能,此數(shù)據(jù)口配置為DSP格式。
AIC23的數(shù)字音頻接口支持4種數(shù)據(jù)格式:Right—Justified;Left—Justified;I2S格式;DSP格式??刂平涌诘腟PI模式時序以及數(shù)字音頻接口的DSP模式時序分別如圖6和圖7所示。
1.1.5 電源模塊設(shè)計(jì)
在電源模塊中,我們選用了TI公司的三款芯片,分別是TPS61103,TPS60500,TPS73601。其中TPS61103用于將電池輸入的1到3 V電壓轉(zhuǎn)換為固定的3.3 V,它為DSP的I/O及其他外設(shè)供電。TPS60500用于將3.3 V轉(zhuǎn)換為DSP需要的內(nèi)核電壓1.6 V。此系統(tǒng)當(dāng)通過USB接口與計(jì)算機(jī)相連時,就可以通過適當(dāng)?shù)奶€設(shè)置不用接電池,TPS73601用于將USB接口提供的5V電壓轉(zhuǎn)換為3.3V。
2 軟件研究及算法實(shí)現(xiàn)
2.1 文件系統(tǒng)的實(shí)現(xiàn)
由于實(shí)現(xiàn)了FAT32文件系統(tǒng),因此當(dāng)此系統(tǒng)通過USB連接到PC機(jī)時,在Windows操作系統(tǒng)下將看到它作為一個獨(dú)立的存儲器出現(xiàn),可是通過復(fù)制粘貼操作將音樂文件拷貝到CF卡上。
2.2 MP3解碼算法的實(shí)現(xiàn)
本方案進(jìn)行軟件的開發(fā)平臺是TI公司的C5000系列的集成開發(fā)環(huán)境Code Composer Studio 2.0??紤]到MP3解碼軟件的復(fù)雜度和可讀性,整個解碼軟件采用DSP的C語言編寫。DSP的C語言具有與標(biāo)準(zhǔn)ANSI C語言相同的語法特點(diǎn),同時還和DSP硬件相結(jié)合,能夠直接控制DSP的在片或外圍設(shè)備資源。隨著數(shù)字信號處理技術(shù)的不斷發(fā)展,DSP的C語言編譯器的編譯效率也越來越高,5000系列的C語言編譯器效率能達(dá)到
60%~70%,C6x系列的編譯器效率高達(dá)80%。因此采用C語言來對DSP進(jìn)行編程是必然的趨勢。
本方案在LIBMAD的基礎(chǔ)上對軟件進(jìn)行設(shè)計(jì)。MAD(LIBMAD)是一個開源的高精度MPEG音頻解碼庫,支持MPEG-1(Laver I,Laver II和Laver III)。LIBMAD提供24-hit的PCM輸出,完全是定點(diǎn)計(jì)算,非常適合在沒有浮點(diǎn)支持的平臺上使用。使用LIBMAD提供的一系列API,就可以非常簡單地實(shí)現(xiàn)MP3數(shù)據(jù)解碼工作。在LIBMAD的源代碼文件目錄下的mad.h文件中,可以看到絕大部分該庫的數(shù)據(jù)結(jié)構(gòu)和API等。
MP3解碼算法雖然復(fù)雜,但是整個解碼過程分成各個模塊進(jìn)行,各個模塊之間相對比較獨(dú)立。在整個解碼軟件的設(shè)計(jì)過程中,對各個模塊采用子函數(shù),各個模塊之間的聯(lián)系就表現(xiàn)為函數(shù)的參數(shù)傳遞。整個解碼軟件由一個主函數(shù)控制,調(diào)度各個模塊的有序運(yùn)行。
解碼軟件的程序流程如圖9所示。從圖中我們可以看到對輸入音頻流解碼先經(jīng)過幀同步,讀入同步頭的信息,得到該MP3碼流的采樣頻率、碼流速率等參數(shù),并記錄現(xiàn)在所解碼的MP3碼流的幀數(shù)。然后獲得粒度信息、主信息及定標(biāo)因子,根據(jù)同步頭中所得的MP3碼流的壓縮類型來讀取信息,獲得對應(yīng)于各自顆粒中的各自通道的相關(guān)參數(shù)。
然后對一幀中的兩個顆粒進(jìn)行解碼,首先是從比特流中獲取每個顆粒對應(yīng)的定標(biāo)因子,并對每個顆粒下的數(shù)據(jù)進(jìn)行哈夫曼解碼,這個哈夫曼解碼過程需要32個哈夫曼碼表之一來進(jìn)行解碼,可以根據(jù)邊帶信息中含有每個顆粒選擇碼表的信息來進(jìn)行選擇。經(jīng)過哈夫曼解碼的數(shù)據(jù),接下來要經(jīng)過反量化取樣,在這步中,各個子帶的數(shù)據(jù)根據(jù)所使用窗的類型,利用在邊帶信息中獲得的參數(shù)反量化。接下來就是重排序和立體聲處理模塊,在這個模塊中根據(jù)MP3碼流所采用的壓縮類型來進(jìn)行相應(yīng)的處理。
這樣當(dāng)處理完一個顆粒中所有通道的數(shù)據(jù)后,就可以把這一顆粒已解碼好的數(shù)據(jù)輸出到輸出緩沖區(qū)中,當(dāng)把下一顆粒的數(shù)據(jù)解碼完畢并輸出后,這樣一幀數(shù)據(jù)就解碼完成。這幀數(shù)據(jù)就可以輸入到D/A部分進(jìn)行播放,并將輸出緩沖區(qū)清空,等待下一幀的解碼數(shù)據(jù)的輸入。解碼程序一直到在比特流中再也找不到一幀的同步頭時,就完成了這一音頻流的解碼。
3 結(jié)束語
MP3解碼算法比較復(fù)雜,并且市面上大部分便攜式MP3播放器都采用的是硬件解碼器,也就是采用專門的音頻解碼芯片來實(shí)現(xiàn)的,然而隨著數(shù)字信號處理技術(shù)的飛速發(fā)展,使得采用通用數(shù)字信號處理器(DSP)實(shí)現(xiàn)這一解碼算法成為可能,而且存性價比、低功耗和軟件升級靈活性上都優(yōu)于采用硬件解碼方案的mp3播放器,成為未來MP3市場的發(fā)展方向。