五邑大學(xué) 程維好 張歆奕
MP3(MPEG Audio Layer3)是高品質(zhì)的音頻壓縮標(biāo)準(zhǔn),因其在音質(zhì),復(fù)雜度與壓縮比的完美折中,占據(jù)著廣闊的市場(chǎng),目前在便攜式設(shè)備領(lǐng)域深受人們喜愛。而隨著消費(fèi)電子的快速發(fā)展,MP3在各種場(chǎng)合的需求越來越多,同時(shí)針對(duì)MP3解碼器的設(shè)計(jì)也越來越多。其中主要有以下三種方式:①以專用MP3編解碼芯片為核心加上必要外圍電路的VLSI實(shí)現(xiàn);②DSP處理器加外部存儲(chǔ)器,數(shù)模轉(zhuǎn)換等外圍器件實(shí)現(xiàn);③以低速核心處理器(CPU/RISC)與其他硬件加速模塊的SOPC設(shè)計(jì)加上外圍器件實(shí)現(xiàn)。而第三種實(shí)現(xiàn)方式相對(duì)于前兩種方式在功耗和性價(jià)比方面有著明顯的優(yōu)勢(shì),本文是基于SOPC技術(shù)來實(shí)現(xiàn)MP3解碼器的設(shè)計(jì),其中MP3文件數(shù)據(jù)用SD卡來存放[1]。
MP3解碼流程如圖1所示,解碼的主要過程包括同步提取碼流(以幀為單位)哈夫曼解碼,比例因子解碼,反量化,重排列,立體聲處理,混疊重建,IMDCT變換,子帶綜合濾波合成,最后輸出原始的PCM數(shù)據(jù)。
在解碼過程中,耗時(shí)比較多的主要是IMDCT和子帶綜合濾波這兩部分。在編譯后它們占據(jù)著相當(dāng)多的硬件資源,功耗特高,所以在設(shè)計(jì)時(shí)針對(duì)這兩個(gè)計(jì)算量大的算法IMDCT,子帶綜合濾波器做了硬件加速處理,來提高整個(gè)系統(tǒng)的性能。在IMDCT算法中有長塊和短塊,計(jì)算時(shí)長塊輸入是18點(diǎn)而短塊輸入是6點(diǎn),長短塊輸入的值都是非2的n次方,所以可以采用Szu Wei Lee快速算法,此算法對(duì)輸入點(diǎn)數(shù)越大的運(yùn)算,其速度提升就越明顯。傳統(tǒng)的IMDCT算法,在計(jì)算長塊時(shí)需要的是36*18次乘法和36*17的加法,采用Szu Wei Lee算法后,長塊的計(jì)算只需要43次乘法和115次加法,程序的運(yùn)算速度顯著提高了。在設(shè)計(jì)子帶綜合濾波時(shí),直接計(jì)算則需要執(zhí)行32*64次乘法和31*64次加法,兩聲道采樣率為44.1KHz,乘法運(yùn)算量為(44100/32)*(64*32+512)*2=7056000次/秒,而系統(tǒng)時(shí)鐘一般都采用的是50MHz,單個(gè)周期內(nèi)占著整個(gè)解碼時(shí)間的58.2%,嚴(yán)重影響了整個(gè)系統(tǒng)解碼的速率。所以可以根據(jù)余弦函數(shù)的對(duì)稱性,并結(jié)合Byeong Gi Lee快速DCT算法來進(jìn)行改進(jìn),改進(jìn)后子帶綜合濾波則只需要進(jìn)行384次乘法和376次加法,大大提升了運(yùn)算速度[2]。

圖1 MP3解碼流程
基于Nios II的嵌入式系統(tǒng)主要是由三部分組成:IP庫(NiosII軟核處理器,Avalon總線,外圍設(shè)備接口等),GNUPro軟件編譯器,SOPC Builder開發(fā)工具。本文在硬件設(shè)計(jì)時(shí)使用Altera公司的Cyclone II FPGA芯片,型號(hào)為EP2C70F896C6,主要外圍設(shè)備包括片外SDRAM存儲(chǔ)器、SD卡、音頻芯片WM8731、LCD等,其中FPGA芯片完成對(duì)各個(gè)硬件模塊和數(shù)據(jù)流的控制,片外存儲(chǔ)器存放程序數(shù)據(jù)和執(zhí)行代碼,SD卡存放MP3文件,音頻芯片將PCM數(shù)據(jù)流轉(zhuǎn)換輸出,LCD顯示系統(tǒng)狀態(tài),IP核的復(fù)用是SOPC設(shè)計(jì)的關(guān)鍵[3]。其硬件系統(tǒng)結(jié)構(gòu)如圖2所示。
而FPGA內(nèi)部邏輯設(shè)計(jì)是以Quartus II為開發(fā)環(huán)境,以Verilog語言編程實(shí)現(xiàn)音頻控制,SD卡的讀寫,液晶顯示驅(qū)動(dòng)等功能模塊的設(shè)計(jì)。用SOPC Builder配置并產(chǎn)生NiosII軟核處理器以及必要的外設(shè),然后在再通過編譯,下載到FPGA的配置芯片中,形成硬件邏輯電路的連接,最后驗(yàn)證系統(tǒng),從而實(shí)現(xiàn)MP3音頻文件的輸出。除了音頻模塊、SD卡控制模塊、LCD顯示驅(qū)動(dòng)模塊外其他模塊都可以通過SOPC Builder來添加IP核構(gòu)建。
至于MP3解碼算法中的子帶綜合濾波,IMDCT變換兩部分處理起來特耗時(shí),針對(duì)這類耗時(shí)問題,可以采用軟硬件協(xié)同處理(軟件中耗時(shí)較多的部分進(jìn)行硬件加速后,往往會(huì)比原先軟件處理時(shí)的速度快上好幾倍。)來提高整個(gè)系統(tǒng)運(yùn)行的時(shí)間。通過這種設(shè)計(jì)方法,在綜合時(shí)可以確定系統(tǒng)軟件和硬件之間的相互制約關(guān)系,從而保證系統(tǒng)的確定性,高效性。

圖2 硬件系統(tǒng)框圖

圖3 SOPC的搭建
在FPGA中搭建SOPC系統(tǒng)時(shí),需要用到如下圖3所示的軟核處理器和Avalon總線結(jié)構(gòu)和外設(shè)接口等,其中,系統(tǒng)時(shí)鐘c0由外部晶振50MHz倍頻后得到的,c1為100MHz外設(shè)SDRAM時(shí)鐘,c2為音頻芯片提供的18.51MHz工作時(shí)鐘。timer用于系統(tǒng)內(nèi)部時(shí)間的產(chǎn)生,time_stamp用于記錄指令的運(yùn)行時(shí)間。片外SDRAM存儲(chǔ)芯片是作為程序存儲(chǔ)器及數(shù)據(jù)存儲(chǔ)器。本系統(tǒng)自定義了AUDIO模塊,該模塊主要用于與WM8731音頻芯片數(shù)字接口進(jìn)行數(shù)據(jù)傳輸。
本文是基于SOPC技術(shù)實(shí)現(xiàn)MP3解碼器的設(shè)計(jì),其優(yōu)勢(shì)在于系統(tǒng)功能改進(jìn)的靈活性,即不改變硬件平臺(tái)的情況下,可以隨便的對(duì)系統(tǒng)進(jìn)行增刪和優(yōu)化,降低系統(tǒng)的成本,這是其他方案很難比擬的地方。而本設(shè)計(jì)是在在DE2-70開發(fā)板上實(shí)現(xiàn)的,硬件解碼系統(tǒng)采用Verilog HDL語言進(jìn)行描述,經(jīng)過RTL級(jí)仿真和驗(yàn)證后,在Cyclone II EP2C70F896C6器件內(nèi)資源占用率為8%,總的寄存器為3335個(gè),系統(tǒng)頻率可達(dá)到72MHz,經(jīng)過實(shí)際測(cè)試,本設(shè)計(jì)達(dá)到了預(yù)期的效果。但還存在著一些地方不夠完善和有待改進(jìn),這同時(shí)也是以后MP3播放器設(shè)計(jì)需要改進(jìn)和研究的重點(diǎn):
(1)本設(shè)計(jì)功能比較簡單,編譯后FPGA芯片資源占用的比較少,可進(jìn)一步增加其它功能,如圖像顯示。
(2)如何改進(jìn)更有效的算法,提高系統(tǒng)運(yùn)行時(shí)間,降低功耗,以達(dá)到便攜式高性能、低功耗的要求,這是未來MP3設(shè)計(jì)研究的重點(diǎn)。
[1]毛麗萍.MP3音頻編解碼運(yùn)算中IMDCT算法研究及其FPGA實(shí)現(xiàn)[D].[碩士學(xué)位論文].華東師范大學(xué),2007.
[2]歐陽潞河.基于NIOS II 的MP3解碼實(shí)現(xiàn)[D].[碩士學(xué)位論文].西安電子科技大學(xué),2011.
[3]FPGA現(xiàn)代數(shù)字系統(tǒng)設(shè)計(jì)[M].清華大學(xué)出版社,2010.