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

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

圖2 硬件系統框圖

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