一種基于FPGA高性能H.264變換量化結(jié)構(gòu)設(shè)計(jì)
2.2 變換模塊(DCT/Hadamard變換)及反變換模塊
(iDCT/iHadamard反變換)設(shè)計(jì)由DCT變換矩陣可以推導(dǎo)得出:本文引用地址:http://www.ex-cimer.com/article/192007.htm
同樣:Y01~Y03以及Y20~Y23也可將式(5)展開得到。同理可得:
由前述的變換算法分析可知,Hadamard變換和DCT變換的核心變換矩陣只存在是否乘以2的差別,因此將式(5)和(7)中的cr換成Hi,且2變?yōu)?,由此可得到Hadamard變換。
在實(shí)際的硬件電路中,乘以2和除以2的操作都可以通過移位來實(shí)現(xiàn)。此外,DCT正向變換與Hadamard變換在整個變換過程中不是同時進(jìn)行操作,因此將 DCT正向變換與Hadamard變換結(jié)合到一起,并分時復(fù)用,以是否乘2來區(qū)分當(dāng)前是哪種變換。同時采用16個殘差數(shù)據(jù)同時輸入,輸出8位變換數(shù)據(jù),每 2個時鐘輸出一個4×4塊的變換結(jié)果。這樣既充分利用了硬件資源,又能一次性處理一個4×4殘差塊的全部16個數(shù)據(jù),確保了效率。DCT變換和 Hadamard變換的核心變換均可用快速蝶形算法實(shí)現(xiàn),如圖2所示。
對iDCT反向變換和iHadamard反變換的核心變換進(jìn)行分析,原理與上述相似。
2.3 量化及反量化模塊設(shè)計(jì)
整個量化及反量化模塊全部采用乘法器、加法器和移位操作來實(shí)現(xiàn),并采用FPGA內(nèi)部的兩個ROM來分別存放正反量化的乘法因子MF和尺度因子V。
由于變換模塊輸出是8位,因此量化模塊采用8數(shù)據(jù)輸入,每2個時鐘輸出一個4×4塊的量化結(jié)果。反量化模塊也是采用8數(shù)據(jù)輸入,且每2個時鐘輸出一個4×4塊的反量化結(jié)果。
3 時序分析及硬件調(diào)試驗(yàn)證
該結(jié)構(gòu)設(shè)計(jì)全部采用VHDL編寫程序,使用ISE環(huán)境下的XST進(jìn)行綜合,綜合頻率達(dá)到112 MHz。該設(shè)計(jì)采用的FPGA是Xilinx公司生產(chǎn)的XC2V1500,并使用在線邏輯分析儀Chipscope來觀察量化輸出數(shù)據(jù) (quant_out_i)和反變換后的殘差輸出數(shù)據(jù)(inv_dct_i);圖3所示為反變換后的殘差輸出數(shù)據(jù)(inv_dct_i)。輸入數(shù)據(jù)采用數(shù)值相同的4×4塊,因此輸出數(shù)據(jù)也完全相同。波形顯示:每次輸出8個數(shù)據(jù);對于一個宏塊的16個亮度4×4塊進(jìn)行處理時,可在45個時鐘內(nèi)完成變換量化 (包括AC/DC)用于編碼,在91個時鐘內(nèi)完成變換量化反變換反量化一系列操作得到用于重建的殘差,在236個時鐘內(nèi)完成對一個宏塊的殘差數(shù)據(jù)從輸入到反變換輸出重建值的完整過程。
4 結(jié) 語
提出的這種H.264變換量化結(jié)構(gòu)完全基于FPGA實(shí)現(xiàn),每一個時鐘輸出8個數(shù)據(jù),每2個時鐘得出對一個4×4塊處理的最終結(jié)果。一方面采用流水線操作,對16個數(shù)據(jù)并行處理提高了數(shù)據(jù)的處理速度,另一方面分時復(fù)用技術(shù)又在一定程度上節(jié)省了硬件資源。相比文獻(xiàn)中只實(shí)現(xiàn)了部分功能,本文實(shí)現(xiàn)了從殘差輸入經(jīng)變換量化、反變換反量化得到用于重建的殘差值這一系列完整的操作,并保證了在一定的數(shù)據(jù)處理速度下對資源的優(yōu)化處理,適合用于H.264.編碼器硬件加速。
評論