文獻(xiàn)標(biāo)識碼: A
文章編號: 0258-7998(2011)06-084-03
近年來,數(shù)字多媒體技術(shù)得到了前所未有的發(fā)展。數(shù)字音頻技術(shù)已經(jīng)同CD、DVD和MP3等娛樂產(chǎn)品一起進(jìn)入到人們的日常生活中,對人們的生活產(chǎn)生了巨大影響[1]。而隨著個人數(shù)字娛樂產(chǎn)品的普及,音頻專用解碼芯片以其低成本和高性能而得到了廣泛的應(yīng)用[2-3]。
在音頻解碼芯片設(shè)計過程中,研究人員往往需要對解碼器的功能進(jìn)行反復(fù)驗證[4]。傳統(tǒng)的驗證方法一般是利用FPGA搭建專用的測試平臺并使用ChipScope等在線邏輯分析儀進(jìn)行輔助分析。這種方法可以有針對性地獲取用戶所需數(shù)據(jù),從而在一定程度上達(dá)到驗證的目的,但存在一些缺陷。首先,測試平臺通用性差,無法兼容多個音頻解碼器。即使對于同一個解碼器,一旦接口或內(nèi)部測試模塊改變,測試平臺就需要做相應(yīng)的修改。其次,受限于在線邏輯分析儀的功能,測試結(jié)果的顯示不直觀,如無法根據(jù)用戶的需求實現(xiàn)可配置的圖形化顯示功能。為此,本文設(shè)計并實現(xiàn)了一個通用的音頻解碼器測試系統(tǒng),其功能強(qiáng)大,并具有良好的可擴(kuò)展性,可以幫助研究人員提高工作效率,具有很大的實用價值。
1 系統(tǒng)結(jié)構(gòu)與工作原理
系統(tǒng)總體結(jié)構(gòu)如圖1所示。在FPGA內(nèi)部,該驗證系統(tǒng)主要由系統(tǒng)控制、碼流輸入、輸入緩沖、音頻解碼器、輸出緩沖、音頻輸出、信息提取和信息顯示共八個模塊組成。
系統(tǒng)復(fù)位完成后,如果用戶在一定時間內(nèi)沒有改變系統(tǒng)參數(shù),則系統(tǒng)會根據(jù)默認(rèn)設(shè)置運(yùn)行。首先,碼流輸入模塊接收系統(tǒng)控制模塊的指令,指定接口芯片在存儲介質(zhì)的特定位置讀取數(shù)據(jù)并將其寫入輸入緩沖區(qū)中。當(dāng)輸入緩沖區(qū)中的有效數(shù)據(jù)量到達(dá)預(yù)先設(shè)定的解碼最小值時,音頻解碼器便開始從輸入緩沖區(qū)中讀取編碼數(shù)據(jù)并進(jìn)行解碼,之后將解碼得到的PCM樣本寫入到輸出緩沖區(qū)中。同樣,在輸出緩沖區(qū)中的有效數(shù)據(jù)量達(dá)到預(yù)先設(shè)定的播放最小值時,音頻輸出模塊開始根據(jù)獲得的音頻信息以給定的速率從輸出緩沖區(qū)中讀取PCM樣本,并按照特定的格式輸出到AC’97編解碼芯片中,從而驅(qū)動揚(yáng)聲器發(fā)出聲音。在系統(tǒng)運(yùn)行過程中,系統(tǒng)控制模塊實時響應(yīng)用戶輸入、改變系統(tǒng)工作狀態(tài)。而信息顯示模塊則將信息提取模塊獲得的數(shù)據(jù)通過VGA顯示器或LED實時顯示出來。
1.1 系統(tǒng)控制和信息提取
系統(tǒng)控制模塊一方面響應(yīng)用戶輸入從而對系統(tǒng)進(jìn)行控制,另一方面協(xié)調(diào)各模塊工作,防止緩沖區(qū)溢出。對于用戶輸入,系統(tǒng)控制模塊采用了延時查詢與循環(huán)驗證的處理方式,這樣提高了系統(tǒng)判斷的準(zhǔn)確性,減少了誤觸發(fā)率[5]。而對于各模塊工作的協(xié)調(diào)則由系統(tǒng)控制模塊與信息提取模塊共同完成的。例如在音樂第一幀解碼過程中,系統(tǒng)控制模塊會通過信息提取模塊獲取音樂的基本信息(聲道信息、采樣率等),之后將該信息傳遞給音頻輸出模塊,從而決定輸出緩沖區(qū)中PCM樣本與聲道的對應(yīng)關(guān)系以及音樂的播放速率等。同樣,輸入輸出緩沖區(qū)中的有效數(shù)據(jù)量和剩余空間等信息也通過信息提取模塊反饋到系統(tǒng)控制模塊中,作為控制音頻解碼器是否繼續(xù)解碼的依據(jù)。此外,信息提取模塊還對獲取的數(shù)據(jù)進(jìn)行整合和篩選,并將處理結(jié)果送入到信息顯示模塊中。
1.2 碼流輸入模塊
碼流輸入模塊通過接口芯片從存儲介質(zhì)中讀取數(shù)據(jù)并將其存入到輸入緩沖區(qū)中,其結(jié)構(gòu)如圖2所示。系統(tǒng)控制模塊在命令碼流輸入模塊讀取數(shù)據(jù)的同時,將起始地址(邏輯地址)和要讀取的數(shù)據(jù)量傳遞給該模塊。其中邏輯地址首先通過地址映射子模塊轉(zhuǎn)換為硬件物理地址,再送到數(shù)據(jù)讀取控制子模塊中。數(shù)據(jù)讀取控制子模塊確認(rèn)來自系統(tǒng)控制模塊的指令和數(shù)據(jù)合法后,啟動進(jìn)度控制狀態(tài)機(jī),進(jìn)而通過讀寫時序產(chǎn)生子模塊將指令寫入接口芯片內(nèi)的命令寄存器中,之后等待接口芯片的反饋信息并讀取數(shù)據(jù)。在數(shù)據(jù)讀取過程中,接口芯片的工作狀態(tài)會寫入到狀態(tài)寄存器中,供數(shù)據(jù)讀取控制子模塊使用。
1.3 音頻解碼模塊
音頻解碼模塊即待驗證的音頻解碼器。該模塊的接口分為兩部分:一是與輸入輸出緩沖區(qū)的接口,在默認(rèn)狀態(tài)下,該部分接口均為單比特串行模式,但系統(tǒng)預(yù)留了串并轉(zhuǎn)換和并串轉(zhuǎn)換模塊,因此用戶可以選擇使用并行輸入或并行輸出。此外,基于異步FIFO的設(shè)計允許用戶在解碼器輸入輸出端使用不同的時鐘;二是與系統(tǒng)控制模塊和信息提取模塊的接口,為了減少接口數(shù)量,系統(tǒng)控制模塊只提供了解碼起始信號和解碼結(jié)束反饋信號。而信息提取模塊除提供了必須的解碼信息傳遞接口外,還提供了兩組信息提取接口,一個用于時序波形的顯示,另一個用于直接的數(shù)值顯示。除使用系統(tǒng)默認(rèn)的接口外,用戶也可根據(jù)自己的需要對接口進(jìn)行定制或擴(kuò)展。可見,對于一般的音頻解碼器,用戶無需改變接口便可將其直接嵌入到驗證系統(tǒng)中,增強(qiáng)了系統(tǒng)的通用性。
1.4 音頻輸出模塊
音頻輸出模塊是一個整合PCM輸出控制和AC’97輸入輸出控制的音頻輸出接口。由圖3可見,由比特時鐘生成的同步信號同時送入AC’97 編解碼器、SDATA_IN子模塊和SDATA_OUT子模塊中。其中SDATA_OUT子模塊將指令和PCM數(shù)據(jù)串行輸出到AC’97 編解碼器中,而SDATA_IN子模塊從傳輸?shù)拇行盘栔薪獬鯬CM樣本和編解碼器狀態(tài)信息,并將其送到音頻輸出控制子模塊中。音頻輸出控制子模塊一方面將輸出緩沖區(qū)中的PCM數(shù)據(jù)送到SDATA_OUT模塊中,另一方面根據(jù)獲得的編解碼器狀態(tài)信息采取相應(yīng)的操作。例如,在改變音量時,可以先通過SDATA_IN子模塊讀取AC’97 編解碼器中音量寄存器中的數(shù)據(jù),再將數(shù)據(jù)進(jìn)行一定的運(yùn)算后發(fā)送到SDATA_OUT子模塊中,進(jìn)而通過串行輸出接口寫入AC’97 編解碼器的相應(yīng)寄存器中,從而完成音量的改變。
在系統(tǒng)復(fù)位完成后,音頻輸出控制子模塊首先通過SDATA_IN子模塊獲得的狀態(tài)信息判斷AC’97 編解碼器的工作狀態(tài),待可以接收指令后,再通過指令控制信息命令SDATA_OUT子模塊將指令ROM中的數(shù)據(jù)依次寫入AC’97 編解碼器中,從而完成初始化操作。在接收到播放指令后,音頻輸出控制子模塊開始從輸出緩沖區(qū)中讀取PCM樣本并經(jīng)由SDATA_OUT子模塊將其填入AC’97幀結(jié)構(gòu)的特定位置,實現(xiàn)音樂的播放。
可見,只要將音頻輸出控制子模塊稍作修改,便可將SDATA_IN子模塊獲得的PCM數(shù)據(jù)寫入到緩沖區(qū)中,這為音頻編碼器的驗證提供了支持。
1.5信息顯示模塊
由圖4可見,信息顯示模塊提供了多種數(shù)據(jù)顯示方式,即字符顯示、圖形顯示和字符與圖形混合的顯示方式。對于字符顯示,默認(rèn)的每個字符大小為8×8個像素點,像素點數(shù)值由字符庫產(chǎn)生。在字符庫中,用戶除使用基本的ASCII碼字符外,也可自行定制字符點陣從而實現(xiàn)一些特殊字符或圖形(如公司LOGO)的顯示。因此對于較小的或可以由多個字符構(gòu)成的圖形,可通過字符庫直接產(chǎn)生。
而對于較復(fù)雜的圖形,則由圖形生成子模塊通過逐點繪制的方式實現(xiàn)。圖形和字符數(shù)據(jù)經(jīng)過合成和配色后同行場同步信號一起送入到VGA顯示模塊中。
在信息顯示模塊中,顯示控制子模塊一方面控制行場同步信號及消隱信號的產(chǎn)生、保證圖像數(shù)據(jù)的同步輸出,另一方面獲取數(shù)據(jù)處理子模塊的輸出數(shù)據(jù),控制圖像的生成。而數(shù)據(jù)處理子模塊則根據(jù)系統(tǒng)控制模塊指定的顯示方式對原始數(shù)據(jù)進(jìn)行計算或排序處理。例如,當(dāng)需要在屏幕的322~578行顯示PCM波形時,由于16位PCM數(shù)據(jù)的動態(tài)范圍為-32 768~32 767,因此對這些數(shù)據(jù)進(jìn)行加法和移位運(yùn)算從而將其映射到指定范圍。
1.6 系統(tǒng)特點
由以上分析可知,同現(xiàn)有的音頻解碼器驗證系統(tǒng)相比,該系統(tǒng)的優(yōu)勢主要體現(xiàn)在以下幾個方面:
(1)兼容各種音頻解碼器,具有很好的通用性。
(2)支持用戶自定義的顯示和分析功能,且只需稍加改動便可用于音頻編碼器的驗證,具有良好的可擴(kuò)展性。
(3)基于物理地址的底層數(shù)據(jù)讀取方式使用戶可根據(jù)需要在存儲介質(zhì)的任意位置進(jìn)行非連續(xù)的數(shù)據(jù)讀取,既降低了系統(tǒng)復(fù)雜度,減少了資源開銷,又增加了數(shù)據(jù)讀取的靈活性。
(4)基于FPGA的純硬件驗證方式,驗證結(jié)果更接近流片結(jié)果。
(5)既是一個通用的音頻解碼器驗證平臺,也是一個功能完備且數(shù)據(jù)顯示直觀的播放器和演示系統(tǒng)。
2 系統(tǒng)實現(xiàn)及驗證實例
整個系統(tǒng)在Xilinx公司的VirtexII pro開發(fā)板上實現(xiàn),其硬件連接結(jié)構(gòu)如圖5所示。其中FPGA內(nèi)部各模塊使用VHDL和Verilog HDL語言混合編程實現(xiàn),音頻解碼器為MP3解碼器[6]。在系統(tǒng)運(yùn)行時,F(xiàn)PGA通過System ACE從CF卡中讀取MP3編碼數(shù)據(jù)后,在FPGA內(nèi)部進(jìn)行解碼,之后通過LM4550進(jìn)行實時播放。在播放的過程中,系統(tǒng)通過FMS3818將解碼的信息顯示到VGA顯示器上,同時通過LED顯示當(dāng)前系統(tǒng)的工作狀態(tài)。
由系統(tǒng)資源開銷情況(表1)和MP3解碼器的資源開銷情況(表2)可見,在忽略解碼器資源開銷的情況下,整個測試系統(tǒng)的各項資源開銷均不到系統(tǒng)資源的60%。此外,實驗結(jié)果表明,該系統(tǒng)的最高時鐘頻率為106.95 MHz,且輸入輸出模塊均具有很強(qiáng)的實時性,可以保證數(shù)據(jù)的實時讀取與聲音的流暢播放。
音頻解碼芯片的研究人員往往需要對解碼器的功能進(jìn)行反復(fù)驗證,傳統(tǒng)的驗證方法存在諸多缺陷,降低了研究人員的工作效率。而本文設(shè)計的音頻解碼器驗證系統(tǒng)通用性強(qiáng)、數(shù)據(jù)顯示直觀、功能強(qiáng)大,縮短了音頻解碼器的片上驗證周期。實驗結(jié)果表明,該系統(tǒng)資源開銷低、實時性強(qiáng),具有很大的實用價值。
參考文獻(xiàn)
[1] Hu Ruimin, Zhang Yong, Ai Haojun. Digital audio compression technology and AVS audio standard research[C]. proceedings of ISPACS 2005, Hong Kong, China, December, 2005:757-759.
[2] Zhang Hongsheng, Lu Mingying, Wang Guoyu. An ASIC implementation of MPEG audio decoders[C].ASICON′ 07.7th International Conference on.Guilin,China,October, 2007:754-757.
[3] 宋奇剛.MP3數(shù)字音頻解碼芯片VLSI設(shè)計研究[D]. 成都:電子科技大學(xué),2005.
[4] 周建,劉鵬,陳科明,等. 基于FPGA平臺的媒體系統(tǒng)芯片驗證框架[J]. 微電子學(xué),2006,36(3):284-287.
[5] 肖看,朱光喜,劉文予,等. FPGA按鍵模式的研究與設(shè)計[J].電子技術(shù)應(yīng)用,2008,34(10):45-47.
[6] FALTMAN I, HAST M, LUNDGREN A, et al. A hardware implementation of an MP3 decoder.DIGITAL IC-PROJECT, LTH, Sweden.2003.5.