摘 要:根據(jù)AVC/H.264標(biāo)準(zhǔn)中提出的整數(shù)離散余弦變換(DCT)及其反變換(iDCT)算法,旨在給出一種能夠同時(shí)實(shí)現(xiàn)4×4,8×8 DCT/IdCT和Hadamard變換的設(shè)計(jì)方法。設(shè)計(jì)中充分利用DCT和iDCT的相似性和算法對(duì)稱性,用高度并行結(jié)構(gòu)來加快處理速度。采用一維DCT/iDCT單元復(fù)用的方式實(shí)現(xiàn)二維DCT/iDCT運(yùn)算,同時(shí)提出實(shí)現(xiàn)設(shè)計(jì)的全定制實(shí)現(xiàn)方法,對(duì)全定制實(shí)現(xiàn)此設(shè)計(jì)進(jìn)行初步布局規(guī)劃。
關(guān)鍵詞:AVC/H.264;離散余弦變換;并行;全定制
中圖分類號(hào):TN43
文獻(xiàn)標(biāo)識(shí)碼:B
文章編號(hào):1004—373X(2008)04—121—03
AVC/H.264是ISO/IEC聯(lián)合視頻小組和ITU—T視頻編碼專家組聯(lián)合制定的視頻壓縮編碼國(guó)際新標(biāo)準(zhǔn)。AVC/H.264視頻編碼標(biāo)準(zhǔn)提供了比H.263和MPEG一4第2部分標(biāo)準(zhǔn)高出1.5~2倍的壓縮增益。以往在圖像、視頻壓縮領(lǐng)域應(yīng)用的實(shí)數(shù)DCT,由于在解碼端的浮點(diǎn)運(yùn)算精度問題,會(huì)造成解碼后的數(shù)據(jù)的失配,進(jìn)而引起漂移。AVC/H.264比其他圖像編碼使用了更多的預(yù)測(cè)過程,甚至內(nèi)部編碼模式也依賴空間預(yù)測(cè),因此對(duì)預(yù)測(cè)漂移十分敏感。為此AVC/H.264采用整數(shù)DCT技術(shù),有效地減少了計(jì)算量,同時(shí)不損失圖像的精確度。本文中的架構(gòu)能夠處理AVC/H.264中各種變換,根據(jù)實(shí)際需求,可以分別實(shí)現(xiàn)整數(shù)DCT和IDCT,也可以將眾多功能統(tǒng)一實(shí)現(xiàn),并且層次分明,方便全定制實(shí)現(xiàn)。
1 整數(shù)DCT/IDCT快速實(shí)現(xiàn)算法
1.1 一維4×4整數(shù)DCT/iDCT變換
直接用乘加法計(jì)算矩陣得到結(jié)果要經(jīng)過大量的計(jì)算,而采用蝶形變換,簡(jiǎn)化了計(jì)算過程,只要用加法和移位操作就可以實(shí)現(xiàn)矩陣相乘。既節(jié)省計(jì)算時(shí)間,又減少硬件實(shí)現(xiàn)的成本。整數(shù)4×4DCT和IDCT表示如下:
Hadamard正反變換矩陣相同,相似于整數(shù)離散余弦變換,如圖(1)、圖(2)所示,當(dāng)參數(shù)R=1時(shí),即為Hada—mard變換。
1.2 一維8×8整數(shù)DCT/iDCT變換
AVC/H.264標(biāo)準(zhǔn)增加8×8整數(shù)DCT/iDCT變換提高了視頻壓縮編碼率。8×8整數(shù)DCT矩陣如下:
2 AVC/H.264的變換架構(gòu)實(shí)現(xiàn)
文中的架構(gòu)可以處理4×4和8×8整數(shù)DCT和iDCT,也能夠處理4×4 Hadamard變換。對(duì)于8×8變換,每個(gè)時(shí)鐘周期處理1行或1列數(shù)據(jù),對(duì)于4×4變換,可以并行處理2行或2列數(shù)據(jù)。對(duì)于輸入數(shù)據(jù)的選擇,可以通過多路選擇器實(shí)現(xiàn)。
2.1 二維整數(shù)DCT/iDCT的實(shí)現(xiàn)結(jié)構(gòu)
2.2一維變換的實(shí)現(xiàn)
根據(jù)蝶形變換算法,本設(shè)計(jì)構(gòu)造3個(gè)子模塊,每一個(gè)模塊實(shí)現(xiàn)蝶形算法中的1步。由3個(gè)子模塊不同的組合,實(shí)現(xiàn)AVC/H.264中各種變換。模塊如圖4所示。
實(shí)現(xiàn)4×4 DCT/iDCT蝶形變換以及Hadamard變換時(shí),僅需要M和N模塊;在實(shí)現(xiàn)8×8 DCT/iDCT變換時(shí),還需要加上更加復(fù)雜的0模塊。在本架構(gòu)中,為了能夠處理各種類型的變換,需要2個(gè)M模塊、2個(gè)N模塊和1個(gè)0模塊。各個(gè)模塊的輸入數(shù)據(jù)選擇通過多路選擇器實(shí)現(xiàn)。多路選擇器根據(jù)模塊端口輸入個(gè)數(shù)的而定。數(shù)據(jù)通道模
在AVC/H.264編碼器中,只需要進(jìn)行正變換,而在解碼器中,只需要進(jìn)行反變換。運(yùn)用本文中的架構(gòu),單獨(dú)實(shí)現(xiàn)變換或反變換時(shí),基本子模塊的使用量相同,主要區(qū)別在于輸入多路選擇器和布線的變化。由于當(dāng)B—B′,C=C′時(shí)M和N實(shí)現(xiàn)相同的功能。因此在實(shí)現(xiàn)Hadamard變換時(shí),圖6中(a)和(b)的數(shù)據(jù)通道實(shí)現(xiàn)相同的功能。Hadamard變換和DCT,或者iDCT共用數(shù)據(jù)通道布線,節(jié)省布線資源。
2.3轉(zhuǎn)置矩陣的設(shè)計(jì)
轉(zhuǎn)置矩陣用來存儲(chǔ)并轉(zhuǎn)置數(shù)據(jù)。為達(dá)到并行存取的功能,本設(shè)計(jì)采用寄存器轉(zhuǎn)置矩陣。實(shí)現(xiàn)8×8變換時(shí),轉(zhuǎn)置矩陣中共需64個(gè)寄存器,而實(shí)現(xiàn)2個(gè)4×4變換,僅需要32個(gè)寄存器,所以在實(shí)現(xiàn)4×4變換時(shí),為了減少功耗,可以使用門控時(shí)鐘關(guān)閉沒有使用的寄存器。轉(zhuǎn)置矩陣的基本存儲(chǔ)單元和門控時(shí)鐘如圖7,8所示:
3 全定制設(shè)計(jì)的初步規(guī)劃
視頻信息的信息量大,要使視頻得到有效應(yīng)用,在解決視頻壓縮編碼問題時(shí),既要有高效的壓縮算法,又要有快速的硬件設(shè)備實(shí)現(xiàn)。全定制設(shè)計(jì)具有高性能、高密度等優(yōu)點(diǎn),是實(shí)現(xiàn)變換模塊設(shè)計(jì)很好的選擇。
3.1 子功能的設(shè)計(jì)
本設(shè)計(jì)中實(shí)現(xiàn)數(shù)據(jù)通道子模塊用到的功能包括多路選擇、加減法、移位以及存儲(chǔ)。由于數(shù)據(jù)通道中數(shù)據(jù)所移位數(shù)最多為2位,所以采用直接連線組合實(shí)現(xiàn)移位更加便捷。對(duì)于加減法,可以統(tǒng)一設(shè)計(jì)加法器實(shí)現(xiàn)。超前進(jìn)位加法器具有高效、易于設(shè)計(jì)等優(yōu)點(diǎn),所以應(yīng)是本設(shè)計(jì)的首選。圖9給出加減法實(shí)現(xiàn)的簡(jiǎn)圖。加法器最低進(jìn)位固定取0(置低電位),實(shí)現(xiàn)減法時(shí),將減數(shù)取反,加法器最低進(jìn)位取1(置低電位)實(shí)現(xiàn)。
3.2 總體布局框圖
從上述論述中可以推斷出,因?yàn)閷?shí)現(xiàn)各種變換所用基本子功能模塊的順序不同,而且存在大量的輸入/輸出多路選擇,同時(shí)考慮到深亞微米設(shè)計(jì)中互連線問題對(duì)整體設(shè)計(jì)的影響,因此本設(shè)計(jì)全定制實(shí)現(xiàn)時(shí),難點(diǎn)在于以合理的布局,實(shí)現(xiàn)最優(yōu)化布線。對(duì)于總體布局,如圖10所示。
其中控制單元用綜合布局布線軟件自動(dòng)實(shí)現(xiàn),其余部分手工優(yōu)化實(shí)現(xiàn),以達(dá)到數(shù)據(jù)處理的最佳效果。
4 結(jié) 語(yǔ)
本文給出一種能夠?qū)崿F(xiàn)AVC/H.264各種變換的體系結(jié)構(gòu),在不改變結(jié)構(gòu)的前提下,既可以統(tǒng)一實(shí)現(xiàn)各種變換,也可以分別實(shí)現(xiàn)正變換和反變換。討論并給出電路和版圖設(shè)計(jì)的參考簡(jiǎn)圖,用圖示方法描述數(shù)據(jù)處理具體流程,并描述全定制模塊設(shè)計(jì)的一些解決方法和布局框圖。本設(shè)計(jì)無論對(duì)全定制或半定制實(shí)現(xiàn)本設(shè)計(jì)都具有較高的參考價(jià)值。