文獻(xiàn)標(biāo)識碼: A
文章編號: 0258-7998(2011)04-0126-04
離散余弦變換(DCT)是最廣泛使用的圖像和視頻壓縮變換編碼方法之一,它可以去除數(shù)據(jù)之間的相關(guān)性、聚集圖像中的能量,使數(shù)據(jù)便于壓縮,是目前大多數(shù)圖像和視頻編碼標(biāo)準(zhǔn)(如JPEG、H.26x系列、MPEGx系列標(biāo)準(zhǔn)等)的核心。在圖像和視頻解碼系統(tǒng)中,則使用離散余弦逆變換(IDCT)對數(shù)據(jù)進(jìn)行還原,而常用8×8的二維離散余弦逆變換(2D IDCT)的運(yùn)算量較大,直接影響到圖像和視頻解碼系統(tǒng)的實(shí)時(shí)性。本文在基于SoPC視頻解碼系統(tǒng)設(shè)計(jì)中,考慮到充分利用SoPC具有的軟硬件協(xié)同設(shè)計(jì)優(yōu)勢,對二維IDCT優(yōu)化的硬件設(shè)計(jì)與實(shí)現(xiàn)進(jìn)行了研究。
研究采用IDCT的分布式算法(DA),并結(jié)合偏移二進(jìn)制編碼(OBC)的查找表方式,設(shè)計(jì)基于SoPC解碼系統(tǒng)8×8的二維 IDCT IP核。在以Nios II處理器為核心的SoPC視頻解碼系統(tǒng)中,該 IP核設(shè)計(jì)滿足Avalon總線標(biāo)準(zhǔn)的接口。經(jīng)綜合測試表明,該IP核的應(yīng)用提高了解碼的實(shí)時(shí)性,具有一定的應(yīng)用價(jià)值。
1 IDCT算法
1.1二維IDCT分解
8×8二維IDCT的定義式[1]如下:
其中Fx,y為DCT變換后的系數(shù),fi,j為原始數(shù)據(jù),當(dāng)x,y=
從式(9)可以看出,如果預(yù)先計(jì)算好部分和Dj并存入查找表,則通過移位累加操作,同樣可以計(jì)算出向量內(nèi)積Px。dij的取值只可能是-1或+1,部分和Dj關(guān)于向量d的正負(fù)值成鏡像對稱。下面以計(jì)算P1為例,來說明這種部分和的對稱關(guān)系:
2 二維IDCT硬件設(shè)計(jì)
2.1 二維IDCT硬件結(jié)構(gòu)
設(shè)計(jì)方案利用2D IDCT的行列分解特性,使用一個(gè)1D IDCT核、8×8轉(zhuǎn)置RAM和復(fù)用器等模塊來構(gòu)成2D IDCT硬件系統(tǒng)。2D IDCT的結(jié)構(gòu)框圖如圖2所示。
圖中,串并轉(zhuǎn)換緩沖器,每收到8個(gè)數(shù)據(jù)后將其作為一行數(shù)據(jù)同時(shí)輸出,該模塊還是輸入數(shù)據(jù)的緩存模塊。并串轉(zhuǎn)換緩沖器功能與此模塊類似。轉(zhuǎn)置RAM用來完成8×8數(shù)據(jù)的行列轉(zhuǎn)換,按行輸入按列輸出。1D IDCT模塊為整個(gè)IP的核心,用來計(jì)算8點(diǎn)1D IDCT的值??刂破髫?fù)責(zé)整個(gè)IP核的工作時(shí)序,保證其運(yùn)行無誤。工作時(shí)先按行順序讀入數(shù)據(jù),然后由1D IDCT計(jì)算每行8點(diǎn)的逆變換值,再按行順序?qū)懭朕D(zhuǎn)置RAM中,然后控制器切換復(fù)用器,按列順序從轉(zhuǎn)置RAM中讀出數(shù)據(jù),計(jì)算每列IDCT值后按列順序?qū)懭胼敵鼍彺?,最后按行順序讀出最終結(jié)果。
2.2 一維IDCT硬件設(shè)計(jì)
實(shí)現(xiàn)2D IDCT硬件的關(guān)鍵是如何實(shí)現(xiàn)1D IDCT。本設(shè)計(jì)使用OBC編碼的分布式算法來完成1D IDCT的硬件設(shè)計(jì),其核心是4輸入的移位累加模塊的設(shè)計(jì),其結(jié)構(gòu)如圖3所示。移位累加模塊可以計(jì)算一個(gè)乘積和,并行使用8個(gè)移位累加模塊及1個(gè)后處理模塊,組成完整的1D IDCT模塊。后處理模塊用于式(5)、式(6)的計(jì)算,其輸出為最終8點(diǎn)1D IDCT的結(jié)果。在設(shè)計(jì)移位累加器時(shí),要注意初始值Dapp的設(shè)置。在視頻解碼系統(tǒng)中,對IDCT輸出數(shù)據(jù)的準(zhǔn)確性較敏感,對數(shù)據(jù)的舍入要求較高。因此設(shè)計(jì)時(shí),對輸出數(shù)據(jù)采用四舍五入,將累加器的初始值加上4 096,右移13次后將輸出結(jié)果補(bǔ)償0.5。
圖4為1D IDCT的硬件結(jié)構(gòu)圖。1D IDCT模塊的輸入數(shù)據(jù)精度為13 bit,輸出為16 bit。其中移位寄存器輸入13 bit,輸出為8 bit。為防止數(shù)據(jù)溢出,移位累加器的輸出為14 bit,而非13 bit。經(jīng)后處理模塊將精度擴(kuò)展為16 bit后,作為最后結(jié)果輸出。
1D IDCT是整個(gè)設(shè)計(jì)的核心,該模塊功能的正確與否將影響整個(gè)系統(tǒng)的性能。
2.3 Avalon總線接口2D IDCT IP核設(shè)計(jì)
基于SoPC視頻解碼中,IP核還應(yīng)包含Avalon總線接口以及控制寄存器組。Avalon總線接口包含對總線進(jìn)行讀寫操作,它是2D IDCT IP核與Avalon總線數(shù)據(jù)傳輸?shù)臉蛄篬5]。通過接口模塊,可以將IP核加入到SoPC系統(tǒng)中??刂萍拇嫫鹘M用于存儲控制狀態(tài)字,以及控制IP核的參數(shù)數(shù)據(jù)[5]。
圖5為基于Avalon總線接口的2D IDCT IP核的總體結(jié)構(gòu)圖。
Avalon總線讀取模塊根據(jù)寄存器中的操作地址,將要處理的64個(gè)數(shù)據(jù)讀入輸入緩存,經(jīng)2D IDCT模塊處理后由總線寫入模塊將結(jié)果寫回原地址。模塊運(yùn)行時(shí),首先向控制寄存器寫入控制數(shù)據(jù),然后IP核發(fā)起總線數(shù)據(jù)讀取操作,等IP核接收到Avalon總線返回的數(shù)據(jù)后開始對數(shù)據(jù)進(jìn)行處理,最后再將結(jié)果寫回Avalon總線。
3 二維IDCT IP核的綜合與測試
3.1 二維IDCT IP核的綜合
使用以Cyclone II EP2C35F672C8 FPGA芯片為核心的SoPC開發(fā)平臺,硬件設(shè)計(jì)使用Verilog HDL硬件描述語言編寫,在Quartus II軟件進(jìn)行綜合,綜合報(bào)告如圖6所示。由此可見,整個(gè)2D IDCT占用了4 336個(gè)邏輯單元,核心模塊1D IDCT只占用了632個(gè)邏輯單元。8個(gè)查找表模塊直接使用了FPGA邏輯單元內(nèi)的查找表LUT,沒有寄存器或內(nèi)置RAM。這種查找表模塊的實(shí)現(xiàn)方式簡單靈活,并且芯片訪問速度快。2D IDCT IP核的最高可綜合工作頻率為140.39 MHz。其時(shí)序分析報(bào)告如圖7所示。
3.2 二維IDCT IP核的SoPC測試結(jié)果
在以Nios II 為處理器的SoPC系統(tǒng)中,進(jìn)行實(shí)際視頻解碼測試。將 IDCT IP核添加到SoPC Builder中,將編碼過的視頻測試文件燒入到Flash中,移植解碼程序到Nios II IDE中,刪除原有的IDCT軟件函數(shù),用C語言編寫2D IDCT IP核的驅(qū)動函數(shù)。經(jīng)系統(tǒng)解碼后,通過帶VGA接口的LCD進(jìn)行播放[6]。
測試結(jié)果看出系統(tǒng)加入IDCT IP核后,LCD顯示畫面清晰,沒有降低系統(tǒng)的解碼質(zhì)量。
對于不同的測試視頻,解碼速度是有差異的,為了能更準(zhǔn)確地測試出IP核的性能,本研究選用了多個(gè)視頻文件進(jìn)行比較如表1所示。從表1可以看出,加入2D IDCT IP核以后, 解碼每幀所需時(shí)間平均減少了約6 ms,幀率平均提高了6~8幀,使系統(tǒng)的解碼速率平均提高了20%以上。
本文研究設(shè)計(jì)的2D IDCT IP核針對FPGA的硬件特點(diǎn),采用分布式算法實(shí)現(xiàn)乘法累加模塊,使用OBC編碼減小了查找表的大小,節(jié)省了FPGA資源,優(yōu)化了硬件設(shè)計(jì)。
該IP核的研究基于先進(jìn)的SoPC技術(shù),應(yīng)用于視頻解碼系統(tǒng)中,結(jié)果表明,該IP核很大程度上提高了視頻解碼速度,增強(qiáng)了視頻解碼系統(tǒng)的實(shí)時(shí)性。由于SoPC的IP核復(fù)用技術(shù),該設(shè)計(jì)將具有很強(qiáng)的實(shí)用性、通用性和擴(kuò)展性。
參考文獻(xiàn)
[1] RICHARDSON I E G.視頻編解碼器的設(shè)計(jì)-開發(fā)圖像與視頻壓縮系統(tǒng)[M]. 北京:國防科技大學(xué)出版社, 2005.
[2] CHEN W H. A fast computational algorithm for the discrete cosine transforms [J]. IEEE Transactions on Communications, 1977,25(9):1004-1009.
[3] 梁剛.分布算術(shù)的并行計(jì)算技術(shù)研究[J]. 微電子學(xué)與計(jì)算機(jī), 2009(5).
[4] 紀(jì)秀花.用查表法快速實(shí)現(xiàn)二維8×8離散余弦逆變換的研究[J]. 電子學(xué)報(bào),2008(4):639-645.
[5] 劉家良,任懷魯,陳新華.AVS視頻解碼中幀內(nèi)預(yù)測模塊的硬件化設(shè)計(jì)及SOPC驗(yàn)證 [J].電子技術(shù)應(yīng)2009,
35(10):18-21.
[6] Altera. Avalon Interface Specifications [DB/OL].2009-11.