摘 要:介紹了一種基于FPGA的AVS標(biāo)準(zhǔn)視頻部分反量化/反變換算法的實(shí)現(xiàn)。采用高效的全硬件實(shí)現(xiàn)方法,提出了各模塊的硬件電路結(jié)構(gòu)設(shè)計(jì),實(shí)驗(yàn)及仿真結(jié)果驗(yàn)證了該設(shè)計(jì)的有效性。
關(guān)鍵詞:AVS;反量化;反變換;FPGA
中圖分類號:TP37文獻(xiàn)標(biāo)識碼:A文章編號:1672-3198(2008)03-0293-01
1 引言
近年來世界上產(chǎn)生了許多數(shù)字視頻壓縮標(biāo)準(zhǔn),AVS是我國第一個(gè)具有自主知識產(chǎn)權(quán)的數(shù)字音視頻解碼標(biāo)準(zhǔn),為數(shù)字音視頻設(shè)備與系統(tǒng)提供高效經(jīng)濟(jì)的編解碼技術(shù)。AVS采用8×8的整數(shù)離散余弦變換和反變換,具有復(fù)雜度低、完全匹配等優(yōu)點(diǎn)。
2 反量化和反變換算法描述
2.1 反量化
在量化方面,AVS采用總共64級近似8階非完全周期性的量化,可以完全適應(yīng)不同的應(yīng)用和業(yè)務(wù)對碼率和質(zhì)量的要求。反量化是將二維量化系數(shù)矩陣QuantCoeffMatrix轉(zhuǎn)換為二維變換系數(shù)矩陣CoeffMatrix的過程。首先確定量化參數(shù)QP,QP取值范圍為0~63,QP值越大,精度越低。
二維變換系數(shù)矩陣CoeffMatrix的元素Wij由式(1)得到
2.2 反變換
AVS定義的反變換是將8×8變換系數(shù)矩陣CoeffMatrix轉(zhuǎn)換為8×8殘差樣值矩陣ResidueMatrix的過程,需要經(jīng)過一次水平變換和垂直變換,具體步驟如下:
第一步,對變換系數(shù)矩陣(CoeffMatrix,Mc)進(jìn)行如式(2)水平反變換
H′= Mc×TT(2)
其中,T是8×8反變換矩陣,如圖1所示,TT是T的轉(zhuǎn)置矩陣,H′是水平反變換后的中間結(jié)果。
T=8101098642
894-2-8-10-10-6
86-4-10-82109
82-10-689-4-10
8-2-1068-9-410
8-6-4108-210-9
8-942-810-106
8-1010-98-64-2
圖1 AVS的反變換矩陣T
第二步,對矩陣H′中的每個(gè)系數(shù)加4再右移3位,得到矩陣H″。
第三步,對矩陣H″進(jìn)行如式(3)垂直反變換
H=T×H″ (3)
其中,H表示垂直反變換后的8×8矩陣。
第四步,對H的每個(gè)系數(shù)加26再右移7位,得到殘差樣值矩陣(ResidueMatrix,MR)。
3 硬件結(jié)構(gòu)設(shè)計(jì)
本文的硬件結(jié)構(gòu)設(shè)計(jì)如圖2所示,從可變長解碼 FIFO中讀出num經(jīng)過GET模塊得到成對的游程run和幅度 level存于2個(gè)RAM中,反量化器根據(jù)模式控制器對幅度level值進(jìn)行反量化,得到變換系數(shù),并由存儲控制器完成串并轉(zhuǎn)換,一維反變換單元進(jìn)行一維行反變換后,其結(jié)果經(jīng)過轉(zhuǎn)置操作后并行輸出,進(jìn)行一維列反變換后,輸出殘差系數(shù)。3.1 GET模塊
負(fù)責(zé)采集可變長解碼FIFO輸入的num值存入寄存器,由addrA=base+num-1(base為已知的基地址)算出addrA的值,每給出一個(gè)addrA值都可從FIFO中得到level和run值,根據(jù)幅度run 將level寫入相應(yīng)的RAM1地址內(nèi)。地址指針上移一格后,以同樣的過程將數(shù)據(jù)寫入RAM1,共寫num次,最后將RAM1 的其他單元內(nèi)置零。RAM1 完成一個(gè)塊后以同樣的方式給RAM2 寫入。
這里,選用兩個(gè)RAM用于存放數(shù)據(jù)的好處是,在完成一個(gè)塊進(jìn)行反量化和反變換的同時(shí),下一個(gè)塊可以采集level和run的值,節(jié)約了流水線處理時(shí)間。時(shí)序安排如圖3所示。
3.2 一維反變換單元
AVS反變換采用的像素塊為8×8大小,順序地對每個(gè)系數(shù)進(jìn)行反變換顯然難以滿足碼流速度。另外,AVS的變換系數(shù)是基于整數(shù)運(yùn)算的,所以根據(jù)W.K. Cham提出的整數(shù)余弦變換(ICT)可以降低硬件實(shí)現(xiàn)的復(fù)雜度,即通過移位運(yùn)算和加法運(yùn)算代替乘法運(yùn)算。根據(jù)上述兩點(diǎn)要求,本設(shè)計(jì)采用一維的逆整數(shù)余弦變換的反變換設(shè)計(jì),即先對像素塊的每一行的8個(gè)變換系數(shù)做反變換,然后對像素塊的每一列作反變換。
設(shè)計(jì)時(shí),采用通用的一維反變換單元,既能做行變換,也能做列變換,以節(jié)約硬件開銷。
4 仿真結(jié)果及分析
用Verilog語言RTL級描述實(shí)現(xiàn)了上述的結(jié)構(gòu)設(shè)計(jì),并用ModelSim6.0進(jìn)行仿真,仿真波形如圖所示。與AVS視頻源代碼提取出的結(jié)果進(jìn)行比對,仿真結(jié)果表明采用上述結(jié)構(gòu)完全可以得到完全正確的反量化和反變換結(jié)果。
本設(shè)計(jì)經(jīng)過仿真,IQ/IDCT完成一個(gè)宏塊的操作需要370個(gè)時(shí)鐘。按照4:2:0的圖像格式,所設(shè)計(jì)的結(jié)構(gòu)可以達(dá)到的頻率為160MHz,占用的LUT數(shù)為5764個(gè),較節(jié)省硬件資源。本設(shè)計(jì)充分考慮了處理速度和硬件代價(jià),并較好改善了上述因素對解碼的影響。
參考文獻(xiàn)
[1]MA Si-wei,GAO Wen, FAN Xiao-peng. Low complexity integer transform and high definition coding[C]//Proceedings of SPIE 49th Annual Meeting,Vol 58. Aug 02-06, 2004, Denver, CO, USA. Bellingham WA,USA:SPIE Press, 2002:547-554.
[2]CHAM W -K. Development of integer cosine transforms by the principle of dyadic symmetry[J]. Communications, Speech and Vision, IEE Proceedings, 1989, 136(4):276-282.
注:本文中所涉及到的圖表、注解、公式等內(nèi)容請以PDF格式閱讀原文。