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