五邑大學(xué) 程維好 張歆奕
MP3(MPEG Audio Layer3)是高品質(zhì)的音頻壓縮標(biāo)準(zhǔn),因其在音質(zhì),復(fù)雜度與壓縮比的完美折中,占據(jù)著廣闊的市場,目前在便攜式設(shè)備領(lǐng)域深受人們喜愛。而隨著消費電子的快速發(fā)展,MP3在各種場合的需求越來越多,同時針對MP3解碼器的設(shè)計也越來越多。其中主要有以下三種方式:①以專用MP3編解碼芯片為核心加上必要外圍電路的VLSI實現(xiàn);②DSP處理器加外部存儲器,數(shù)模轉(zhuǎn)換等外圍器件實現(xiàn);③以低速核心處理器(CPU/RISC)與其他硬件加速模塊的SOPC設(shè)計加上外圍器件實現(xiàn)。而第三種實現(xiàn)方式相對于前兩種方式在功耗和性價比方面有著明顯的優(yōu)勢,本文是基于SOPC技術(shù)來實現(xiàn)MP3解碼器的設(shè)計,其中MP3文件數(shù)據(jù)用SD卡來存放[1]。
MP3解碼流程如圖1所示,解碼的主要過程包括同步提取碼流(以幀為單位)哈夫曼解碼,比例因子解碼,反量化,重排列,立體聲處理,混疊重建,IMDCT變換,子帶綜合濾波合成,最后輸出原始的PCM數(shù)據(jù)。
在解碼過程中,耗時比較多的主要是IMDCT和子帶綜合濾波這兩部分。在編譯后它們占據(jù)著相當(dāng)多的硬件資源,功耗特高,所以在設(shè)計時針對這兩個計算量大的算法IMDCT,子帶綜合濾波器做了硬件加速處理,來提高整個系統(tǒng)的性能。在IMDCT算法中有長塊和短塊,計算時長塊輸入是18點而短塊輸入是6點,長短塊輸入的值都是非2的n次方,所以可以采用Szu Wei Lee快速算法,此算法對輸入點數(shù)越大的運算,其速度提升就越明顯。傳統(tǒng)的IMDCT算法,在計算長塊時需要的是36*18次乘法和36*17的加法,采用Szu Wei Lee算法后,長塊的計算只需要43次乘法和115次加法,程序的運算速度顯著提高了。在設(shè)計子帶綜合濾波時,直接計算則需要執(zhí)行32*64次乘法和31*64次加法,兩聲道采樣率為44.1KHz,乘法運算量為(44100/32)*(64*32+512)*2=7056000次/秒,而系統(tǒng)時鐘一般都采用的是50MHz,單個周期內(nèi)占著整個解碼時間的58.2%,嚴(yán)重影響了整個系統(tǒng)解碼的速率。所以可以根據(jù)余弦函數(shù)的對稱性,并結(jié)合Byeong Gi Lee快速DCT算法來進行改進,改進后子帶綜合濾波則只需要進行384次乘法和376次加法,大大提升了運算速度[2]。
圖1 MP3解碼流程
基于Nios II的嵌入式系統(tǒng)主要是由三部分組成:IP庫(NiosII軟核處理器,Avalon總線,外圍設(shè)備接口等),GNUPro軟件編譯器,SOPC Builder開發(fā)工具。本文在硬件設(shè)計時使用Altera公司的Cyclone II FPGA芯片,型號為EP2C70F896C6,主要外圍設(shè)備包括片外SDRAM存儲器、SD卡、音頻芯片WM8731、LCD等,其中FPGA芯片完成對各個硬件模塊和數(shù)據(jù)流的控制,片外存儲器存放程序數(shù)據(jù)和執(zhí)行代碼,SD卡存放MP3文件,音頻芯片將PCM數(shù)據(jù)流轉(zhuǎn)換輸出,LCD顯示系統(tǒng)狀態(tài),IP核的復(fù)用是SOPC設(shè)計的關(guān)鍵[3]。其硬件系統(tǒng)結(jié)構(gòu)如圖2所示。
而FPGA內(nèi)部邏輯設(shè)計是以Quartus II為開發(fā)環(huán)境,以Verilog語言編程實現(xiàn)音頻控制,SD卡的讀寫,液晶顯示驅(qū)動等功能模塊的設(shè)計。用SOPC Builder配置并產(chǎn)生NiosII軟核處理器以及必要的外設(shè),然后在再通過編譯,下載到FPGA的配置芯片中,形成硬件邏輯電路的連接,最后驗證系統(tǒng),從而實現(xiàn)MP3音頻文件的輸出。除了音頻模塊、SD卡控制模塊、LCD顯示驅(qū)動模塊外其他模塊都可以通過SOPC Builder來添加IP核構(gòu)建。
至于MP3解碼算法中的子帶綜合濾波,IMDCT變換兩部分處理起來特耗時,針對這類耗時問題,可以采用軟硬件協(xié)同處理(軟件中耗時較多的部分進行硬件加速后,往往會比原先軟件處理時的速度快上好幾倍。)來提高整個系統(tǒng)運行的時間。通過這種設(shè)計方法,在綜合時可以確定系統(tǒng)軟件和硬件之間的相互制約關(guān)系,從而保證系統(tǒng)的確定性,高效性。
圖2 硬件系統(tǒng)框圖
圖3 SOPC的搭建
在FPGA中搭建SOPC系統(tǒng)時,需要用到如下圖3所示的軟核處理器和Avalon總線結(jié)構(gòu)和外設(shè)接口等,其中,系統(tǒng)時鐘c0由外部晶振50MHz倍頻后得到的,c1為100MHz外設(shè)SDRAM時鐘,c2為音頻芯片提供的18.51MHz工作時鐘。timer用于系統(tǒng)內(nèi)部時間的產(chǎn)生,time_stamp用于記錄指令的運行時間。片外SDRAM存儲芯片是作為程序存儲器及數(shù)據(jù)存儲器。本系統(tǒng)自定義了AUDIO模塊,該模塊主要用于與WM8731音頻芯片數(shù)字接口進行數(shù)據(jù)傳輸。
本文是基于SOPC技術(shù)實現(xiàn)MP3解碼器的設(shè)計,其優(yōu)勢在于系統(tǒng)功能改進的靈活性,即不改變硬件平臺的情況下,可以隨便的對系統(tǒng)進行增刪和優(yōu)化,降低系統(tǒng)的成本,這是其他方案很難比擬的地方。而本設(shè)計是在在DE2-70開發(fā)板上實現(xiàn)的,硬件解碼系統(tǒng)采用Verilog HDL語言進行描述,經(jīng)過RTL級仿真和驗證后,在Cyclone II EP2C70F896C6器件內(nèi)資源占用率為8%,總的寄存器為3335個,系統(tǒng)頻率可達到72MHz,經(jīng)過實際測試,本設(shè)計達到了預(yù)期的效果。但還存在著一些地方不夠完善和有待改進,這同時也是以后MP3播放器設(shè)計需要改進和研究的重點:
(1)本設(shè)計功能比較簡單,編譯后FPGA芯片資源占用的比較少,可進一步增加其它功能,如圖像顯示。
(2)如何改進更有效的算法,提高系統(tǒng)運行時間,降低功耗,以達到便攜式高性能、低功耗的要求,這是未來MP3設(shè)計研究的重點。
[1]毛麗萍.MP3音頻編解碼運算中IMDCT算法研究及其FPGA實現(xiàn)[D].[碩士學(xué)位論文].華東師范大學(xué),2007.
[2]歐陽潞河.基于NIOS II 的MP3解碼實現(xiàn)[D].[碩士學(xué)位論文].西安電子科技大學(xué),2011.
[3]FPGA現(xiàn)代數(shù)字系統(tǒng)設(shè)計[M].清華大學(xué)出版社,2010.