FPGA的邏輯架構(gòu)主要包括平臺部分和HEVC編碼器IP部分,其中FPGA平臺主要包括PCIE DMA以及DDR總線相關(guān)邏輯,這部分邏輯主要實現(xiàn)和host CPU的數(shù)據(jù)通信以及和FPGA板卡上的DDR通信。如圖7所示,F(xiàn)PGA架構(gòu)上實例化了4個HEVC core(具體幾個是和FPGA資源有關(guān)),每一個HEVC core完成HEVC編碼算法的完整處理,這里4核心并行工作,也就是同一時刻,4個編碼任務(wù)可以并行工作,同時輸出4條HEVC碼流。

圖7. FPGA內(nèi)部邏輯架構(gòu)
FPGA內(nèi)部邏輯主要包括:
HEVC CORE 0-3:H265編碼器IP,實現(xiàn)HEVC的編碼算法;
PCIE/DMA:實現(xiàn)和host CPU進行通信;
REGISTER RW/INT:寄存器讀寫以及中斷處理;
HEVC RW ARBITER:總線讀寫仲裁模塊;
AXI INTERCONNECT/DDRC/DDRY: 總線控制訪問DDR邏輯;
FPGA圖像編碼流程
FPGA HEVC core內(nèi)部算法處理流程如圖8所示:分為當前圖像載入,intra預測初選,intra預測精選,CABAC編碼,碼流輸出。

圖8. HEVC core內(nèi)部算法處理流程
那么如何設(shè)計HEVC core實現(xiàn)算法功能呢?這里,編碼器模塊流水線設(shè)計成四級流水,如圖9所示,四級流水CURLD/PINTRA/SEL/CABAC處理性能設(shè)計接近,并行起來后,平均處理每個LCU需要8400個周期,如果按照1080p圖片一共510個LCU計算,單核理論上編碼可以達到編46 幀/s (FPGA電路實現(xiàn)頻率200M),這樣4核并行能達到184幀/s。
具體來說,CURLD完成當前圖像的載入邏輯,PINTRA完成intra預測初選35種模式的遍歷,得到最優(yōu)的預測模式,這級流水算法上做了優(yōu)化,預測參考像素沒有像傳統(tǒng)方式選擇重構(gòu)像素,而是選擇當前像素做參考像素,這樣優(yōu)化,使得intra預測初選可以單獨劃分為一級流水,和intra預測精選分開,使得編碼器整體處理性能增加一倍。SEL完成幀內(nèi)預測模式精選以及RDO模式選擇,預測塊大小支持32/16/8,由于涉及到變換量化等運算量大的邏輯,這一級流水是整個編碼器的資源消耗大戶,設(shè)計上在算法上以及邏輯資源消耗上做了權(quán)衡;CABAC模塊完成頭信息的碼流生成以及每個LCU的語法元素和殘差的編碼,并完成碼流的打包輸出,這一級流水的主要問題在于CABAC的性能是否足夠快,從而應(yīng)對QP比較小編碼更多bin的處理及時。

圖9. 運算模塊流水線
性能和收益
用FPGA完成JPEG格式圖片轉(zhuǎn)成HEVC格式圖片,圖片分辨率大小為1920x1080,F(xiàn)PGA處理延時相比CPU降低7倍,F(xiàn)PGA處理性能是CPU機器的10倍,F(xiàn)PGA機型單位性能成本是CPU機型的1/3(參見圖10)。

圖10.圖片轉(zhuǎn)碼FPGA和CPU對比
總之,圖片算法的FPGA實現(xiàn),如果不考慮FPGA資源、硬件實現(xiàn)架構(gòu)和處理性能,CPU圖像壓縮算法可以完全在FPGA進行“復制”實現(xiàn),F(xiàn)PGA算法壓縮性能可以完全等同CPU。但是現(xiàn)實沒那么理想,F(xiàn)PGA算法實現(xiàn)要統(tǒng)一考慮FPGA性能,資源,算法實現(xiàn)復雜度等要素,只有聯(lián)合設(shè)計才能設(shè)計出最優(yōu)秀的方案,為了發(fā)揮FPGA硬件實現(xiàn)的速度優(yōu)勢,算法進行優(yōu)化是必須要做的,綜合考慮各方面,我們在實際應(yīng)用中,往往FPGA的算法實現(xiàn)要做一些“讓步”。另外,某種型號的FPGA一旦被選定,它的運算以及布線資源往往有個理論值,算法的實現(xiàn)同時要考慮FPGA資源的利用情況,如何能在相同的FPGA資源上實現(xiàn)最好的壓縮算法成為設(shè)計的難點。我們用FPGA進行算法實現(xiàn)的目標-----實現(xiàn)算法性能盡量接近CPU,圖片處理吞吐量,以及處理延遲讓CPU望其項背。
參考文獻:
[1]. KPCB:瑪麗·米克爾“互聯(lián)網(wǎng)女皇”-2016年互聯(lián)網(wǎng)趨勢報告
[2]. G. J. Sullivan, J. R. Ohm, W. J. Han and T. Wiegand, "Overview of the High Efficiency Video Coding (HEVC) Standard," in IEEE Transactions on Circuits and Systems for Video Technology, vol. 22, no. 12, pp. 1649-1668, Dec. 2012.
[3].G. Pastuszak and A. Abramowski, "Algorithm and Architecture Design of the H.265/HEVC Intra Encoder," in IEEE Transactions on Circuits and Systems for Video Technology, vol. 26, no. 1, pp. 210-222, Jan. 2016.
[4].D. Zhou, J. Zhou, W. Fei and S. Goto, "Ultra-High-Throughput VLSI Architecture of H.265/HEVC CABAC Encoder for UHDTV Applications," in IEEE Transactions on Circuits and Systems for Video Technology, vol. 25, no. 3, pp. 497-507, March 2015.
電子發(fā)燒友App

































評論