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