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