《電子技術(shù)應用》
您所在的位置:首頁 > 可編程邏輯 > 設計應用 > 基于SoPC的二維IDCT分布式算法的IP核研究
基于SoPC的二維IDCT分布式算法的IP核研究
來源:電子技術(shù)應用2011年第4期
付 揚, 鄧 超
北京工商大學 計算機與信息工程學院, 北京 100048
摘要: 研究基于SoPC的視頻解碼系統(tǒng)中二維IDCT 硬件設計與實現(xiàn)。針對二維IDCT的運算量大、乘法運算多,導致占用FPGA資源多和系統(tǒng)速度慢等問題,其設計采用一維IDCT復用,研究分布式算法實現(xiàn)乘法累加,并使用偏移二進制編碼來減小其查找表大小,其直接占用FPGA邏輯單元內(nèi)的查找表LUT,沒有寄存器或內(nèi)置RAM。綜合結(jié)果表明,芯片占用資源少、訪問速度快,其最高可綜合工作頻率達到140.39 MHz。此外,基于Avalon總線接口實現(xiàn)二維IDCT IP核的SoPC Builder系統(tǒng)構(gòu)建,在以Nios II處理器為核心SoPC視頻解碼系統(tǒng)中測試,結(jié)果表明,該IP核能提高視頻解碼速度20%以上,很大程度上增強了解碼的實時性。
中圖分類號: TP391
文獻標識碼: A
文章編號: 0258-7998(2011)04-0126-04
The IP core research of 2D IDCT distributed algorithm based on SoPC
Fu Yang, Deng Chao
Computer and Information Engineering Institute, Beijing Technology and Business University, Beijing 100048, China
Abstract: Research SoPC system of two-dimensional IDCT hardware design and implementation. Two-dimensional IDCT for computing capacity, multiplication and more, making the occupation of FPGA resources and system slow and so many disadvantages, the design uses a distributed algorithm multiply-accumulate, and use the offset binary coding to reduce the size of the lookup table can be directly FPGA logic cells using the look-up table LUT, there are no registers or internal RAM. The synthesis results show that the chip takes fewer resources, access speed, two-dimensional IDCT integrated work a maximum frequency of 140.39 MHz. Avalon bus interface based on two-dimensional IDCT IP core of the SoPC builder system construction, Testing based on SoPC video decoding system In Nios II processor as the core, the test results show that the IP core rate increased more than 20%, largely enhanced real-time decoding.
Key words : SoPC; IP core; IDCT; DA; OBC


    離散余弦變換(DCT)是最廣泛使用的圖像和視頻壓縮變換編碼方法之一,它可以去除數(shù)據(jù)之間的相關(guān)性、聚集圖像中的能量,使數(shù)據(jù)便于壓縮,是目前大多數(shù)圖像和視頻編碼標準(如JPEG、H.26x系列、MPEGx系列標準等)的核心。在圖像和視頻解碼系統(tǒng)中,則使用離散余弦逆變換(IDCT)對數(shù)據(jù)進行還原,而常用8×8的二維離散余弦逆變換(2D IDCT)的運算量較大,直接影響到圖像和視頻解碼系統(tǒng)的實時性。本文在基于SoPC視頻解碼系統(tǒng)設計中,考慮到充分利用SoPC具有的軟硬件協(xié)同設計優(yōu)勢,對二維IDCT優(yōu)化的硬件設計與實現(xiàn)進行了研究。
    研究采用IDCT的分布式算法(DA),并結(jié)合偏移二進制編碼(OBC)的查找表方式,設計基于SoPC解碼系統(tǒng)8×8的二維 IDCT IP核。在以Nios II處理器為核心的SoPC視頻解碼系統(tǒng)中,該 IP核設計滿足Avalon總線標準的接口。經(jīng)綜合測試表明,該IP核的應用提高了解碼的實時性,具有一定的應用價值。
1 IDCT算法
1.1二維IDCT分解

    8×8二維IDCT的定義式[1]如下:

其中Fx,y為DCT變換后的系數(shù),fi,j為原始數(shù)據(jù),當x,y=


    從式(9)可以看出,如果預先計算好部分和Dj并存入查找表,則通過移位累加操作,同樣可以計算出向量內(nèi)積Px。dij的取值只可能是-1或+1,部分和Dj關(guān)于向量d的正負值成鏡像對稱。下面以計算P1為例,來說明這種部分和的對稱關(guān)系:
 
2 二維IDCT硬件設計
2.1 二維IDCT硬件結(jié)構(gòu)

    設計方案利用2D IDCT的行列分解特性,使用一個1D IDCT核、8×8轉(zhuǎn)置RAM和復用器等模塊來構(gòu)成2D IDCT硬件系統(tǒng)。2D IDCT的結(jié)構(gòu)框圖如圖2所示。

    圖中,串并轉(zhuǎn)換緩沖器,每收到8個數(shù)據(jù)后將其作為一行數(shù)據(jù)同時輸出,該模塊還是輸入數(shù)據(jù)的緩存模塊。并串轉(zhuǎn)換緩沖器功能與此模塊類似。轉(zhuǎn)置RAM用來完成8×8數(shù)據(jù)的行列轉(zhuǎn)換,按行輸入按列輸出。1D IDCT模塊為整個IP的核心,用來計算8點1D IDCT的值??刂破髫撠熣麄€IP核的工作時序,保證其運行無誤。工作時先按行順序讀入數(shù)據(jù),然后由1D IDCT計算每行8點的逆變換值,再按行順序?qū)懭朕D(zhuǎn)置RAM中,然后控制器切換復用器,按列順序從轉(zhuǎn)置RAM中讀出數(shù)據(jù),計算每列IDCT值后按列順序?qū)懭胼敵鼍彺?,最后按行順序讀出最終結(jié)果。
2.2 一維IDCT硬件設計
    實現(xiàn)2D IDCT硬件的關(guān)鍵是如何實現(xiàn)1D IDCT。本設計使用OBC編碼的分布式算法來完成1D IDCT的硬件設計,其核心是4輸入的移位累加模塊的設計,其結(jié)構(gòu)如圖3所示。移位累加模塊可以計算一個乘積和,并行使用8個移位累加模塊及1個后處理模塊,組成完整的1D IDCT模塊。后處理模塊用于式(5)、式(6)的計算,其輸出為最終8點1D IDCT的結(jié)果。在設計移位累加器時,要注意初始值Dapp的設置。在視頻解碼系統(tǒng)中,對IDCT輸出數(shù)據(jù)的準確性較敏感,對數(shù)據(jù)的舍入要求較高。因此設計時,對輸出數(shù)據(jù)采用四舍五入,將累加器的初始值加上4 096,右移13次后將輸出結(jié)果補償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)后處理模塊將精度擴展為16 bit后,作為最后結(jié)果輸出。

    1D IDCT是整個設計的核心,該模塊功能的正確與否將影響整個系統(tǒng)的性能。
2.3 Avalon總線接口2D IDCT IP核設計
    基于SoPC視頻解碼中,IP核還應包含Avalon總線接口以及控制寄存器組。Avalon總線接口包含對總線進行讀寫操作,它是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個數(shù)據(jù)讀入輸入緩存,經(jīng)2D IDCT模塊處理后由總線寫入模塊將結(jié)果寫回原地址。模塊運行時,首先向控制寄存器寫入控制數(shù)據(jù),然后IP核發(fā)起總線數(shù)據(jù)讀取操作,等IP核接收到Avalon總線返回的數(shù)據(jù)后開始對數(shù)據(jù)進行處理,最后再將結(jié)果寫回Avalon總線。
3 二維IDCT IP核的綜合與測試
3.1 二維IDCT IP核的綜合

    使用以Cyclone II EP2C35F672C8 FPGA芯片為核心的SoPC開發(fā)平臺,硬件設計使用Verilog HDL硬件描述語言編寫,在Quartus II軟件進行綜合,綜合報告如圖6所示。由此可見,整個2D IDCT占用了4 336個邏輯單元,核心模塊1D IDCT只占用了632個邏輯單元。8個查找表模塊直接使用了FPGA邏輯單元內(nèi)的查找表LUT,沒有寄存器或內(nèi)置RAM。這種查找表模塊的實現(xiàn)方式簡單靈活,并且芯片訪問速度快。2D IDCT IP核的最高可綜合工作頻率為140.39 MHz。其時序分析報告如圖7所示。

3.2 二維IDCT IP核的SoPC測試結(jié)果
    在以Nios II 為處理器的SoPC系統(tǒng)中,進行實際視頻解碼測試。將 IDCT IP核添加到SoPC Builder中,將編碼過的視頻測試文件燒入到Flash中,移植解碼程序到Nios II IDE中,刪除原有的IDCT軟件函數(shù),用C語言編寫2D IDCT IP核的驅(qū)動函數(shù)。經(jīng)系統(tǒng)解碼后,通過帶VGA接口的LCD進行播放[6]。
    測試結(jié)果看出系統(tǒng)加入IDCT IP核后,LCD顯示畫面清晰,沒有降低系統(tǒng)的解碼質(zhì)量。
    對于不同的測試視頻,解碼速度是有差異的,為了能更準確地測試出IP核的性能,本研究選用了多個視頻文件進行比較如表1所示。從表1可以看出,加入2D IDCT IP核以后,  解碼每幀所需時間平均減少了約6 ms,幀率平均提高了6~8幀,使系統(tǒng)的解碼速率平均提高了20%以上。

    本文研究設計的2D IDCT IP核針對FPGA的硬件特點,采用分布式算法實現(xiàn)乘法累加模塊,使用OBC編碼減小了查找表的大小,節(jié)省了FPGA資源,優(yōu)化了硬件設計。
    該IP核的研究基于先進的SoPC技術(shù),應用于視頻解碼系統(tǒng)中,結(jié)果表明,該IP核很大程度上提高了視頻解碼速度,增強了視頻解碼系統(tǒng)的實時性。由于SoPC的IP核復用技術(shù),該設計將具有很強的實用性、通用性和擴展性。
參考文獻
[1] RICHARDSON I E G.視頻編解碼器的設計-開發(fā)圖像與視頻壓縮系統(tǒng)[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] 梁剛.分布算術(shù)的并行計算技術(shù)研究[J]. 微電子學與計算機, 2009(5).
[4] 紀秀花.用查表法快速實現(xiàn)二維8×8離散余弦逆變換的研究[J]. 電子學報,2008(4):639-645.
[5] 劉家良,任懷魯,陳新華.AVS視頻解碼中幀內(nèi)預測模塊的硬件化設計及SOPC驗證 [J].電子技術(shù)應2009,
35(10):18-21.
[6] Altera. Avalon Interface Specifications [DB/OL].2009-11.
 

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。