《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > 基于FPGA的AVS幀內(nèi)預(yù)測(cè)電路設(shè)計(jì)
基于FPGA的AVS幀內(nèi)預(yù)測(cè)電路設(shè)計(jì)
來源:電子技術(shù)應(yīng)用2013年第8期
李文軍,王祖強(qiáng),徐 輝,張貞雷
山東大學(xué) 信息科學(xué)與工程學(xué)院,山東 濟(jì)南250100
摘要: 提出了一種AVS高清視頻編碼器幀內(nèi)預(yù)測(cè)模塊硬件結(jié)構(gòu)。通過對(duì)AVS幀內(nèi)預(yù)測(cè)各個(gè)預(yù)測(cè)模式的分析,設(shè)計(jì)了幀內(nèi)預(yù)測(cè)編碼流水線結(jié)構(gòu)和模式預(yù)測(cè)運(yùn)算單元電路。根據(jù)各預(yù)測(cè)模式的編碼運(yùn)算關(guān)系,合理安排流水線結(jié)構(gòu),采用8 bit數(shù)據(jù)并行流水處理,實(shí)現(xiàn)了高清視頻幀內(nèi)預(yù)測(cè)實(shí)時(shí)編碼。將除Plane模式之外的其他預(yù)測(cè)模式采用同一硬件電路來實(shí)現(xiàn),對(duì)運(yùn)算比較復(fù)雜的Plane模式單獨(dú)設(shè)計(jì)了硬件結(jié)構(gòu),節(jié)省了硬件資源。
中圖分類號(hào): TN919.8
文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 0258-7998(2013)08-0050-04
FPGA-based design of intra mode prediction in AVS video encoder
Li Wenjun,Wang Zuqiang,Xu Hui,Zhang Zhenlei
School of Information Science and Engineering, Shandong University, Jinan 250100,China
Abstract: In this paper, a hardware architecture of AVS HD intra predictor is proposed. After the analysis of each prediction mode, a pipeline of the intra prediction encoder and the hardware of processing element are designed. According to the relationship of each prediction mode, the pipeline is reasonable organized. The encoder can encode 8 pixels in one cycle and realize the HD video sequences real-time encoding. All of the prediction modes but Plane mode are implied in the same hardware circuit and the Plane mode is implied in a different hardware, which saves the hardware resources. The design improves the usage of the hardware.
Key words : AVS;intra prediction;hardware architecture;pipeline;parallel processing

    AVS(Audio Video coding Standard)是由中國數(shù)字音視頻編解碼技術(shù)標(biāo)準(zhǔn)工作組制定的標(biāo)準(zhǔn),是國內(nèi)第一個(gè)針對(duì)音視頻產(chǎn)業(yè)需求而制定的標(biāo)準(zhǔn)。AVS-P2標(biāo)準(zhǔn)面向標(biāo)清、高清視頻編碼應(yīng)用,其采用了與H.264類似的技術(shù)框架。AVS標(biāo)準(zhǔn)在獲得高編碼效率的同時(shí)降低了實(shí)現(xiàn)的復(fù)雜度[1]。

    幀內(nèi)預(yù)測(cè)編碼器包含編碼過程和重建過程兩個(gè)方向的碼流分支。編碼過程包括幀內(nèi)預(yù)測(cè)模式選擇、整數(shù)DCT變換、量化、熵編碼等過程;重建過程則將編碼過程中量化后的殘差系數(shù)進(jìn)行反量化反變換,最終得到重建像素[2]。圖1所示為幀內(nèi)預(yù)測(cè)編碼器的硬件架構(gòu)。編碼器在預(yù)測(cè)一個(gè)8×8像素塊時(shí),需要使用相鄰塊的重建像素作為參考樣本,編碼器需要等待相鄰子宏塊完成最優(yōu)預(yù)測(cè)模式選擇、變換量化和反量化反變換后才能對(duì)當(dāng)前子宏塊進(jìn)行預(yù)測(cè),這種編碼方法需要合理設(shè)計(jì)編碼流水結(jié)構(gòu)來保證編碼速度。針對(duì)上述問題,本文提出一種幀內(nèi)預(yù)測(cè)硬件結(jié)構(gòu),使用重建像素作為參考樣本,具有相同預(yù)測(cè)值求解算法的預(yù)測(cè)模式共用一個(gè)預(yù)測(cè)器,在進(jìn)行編碼時(shí)無需等待參考樣本重建過程,其并行處理電路結(jié)構(gòu)提高了數(shù)據(jù)處理速度并且兼顧了編碼圖像的質(zhì)量。
1 幀內(nèi)預(yù)測(cè)算法分析
    AVS幀內(nèi)預(yù)測(cè)亮度塊和色度塊均采用8×8塊,亮度塊共有5種預(yù)測(cè)模式,色度塊有4種預(yù)測(cè)模式,其中色度預(yù)測(cè)模式有3種與亮度預(yù)測(cè)模式算法相同。幀內(nèi)預(yù)測(cè)模式如表1所示。


 
    參考文獻(xiàn)[3]提出的幀內(nèi)預(yù)測(cè)電路使用原始像素作為預(yù)測(cè)塊的參考樣本,在這一預(yù)測(cè)過程中編碼器無需等待相鄰塊完成重建過程,這種方法雖然提高了編碼的速度,但也降低了編碼圖像的質(zhì)量[4]。針對(duì)上述問題,本文設(shè)計(jì)了幀內(nèi)預(yù)測(cè)的并行流水線結(jié)構(gòu),在對(duì)8×8像素子宏塊進(jìn)行幀內(nèi)預(yù)測(cè)時(shí),像素重建過程與像素預(yù)測(cè)過程同時(shí)進(jìn)行,幀內(nèi)預(yù)測(cè)編碼器無需等待重建過程,提高了編碼效率。具體流水線設(shè)計(jì)如下文所述。
    AVS標(biāo)準(zhǔn)中規(guī)定,對(duì)一幀圖像進(jìn)行編碼時(shí)是以宏塊為單位進(jìn)行編碼,宏塊內(nèi)編碼則是以子宏塊編號(hào)依次進(jìn)行,亮度塊與色度塊分別編碼。在對(duì)圖3所示8×8子宏塊F進(jìn)行幀內(nèi)預(yù)測(cè)時(shí),相鄰的上邊和左邊宏塊已經(jīng)完成了重建過程,參考樣本存入寄存器中等待使用。當(dāng)前預(yù)測(cè)塊F為0號(hào)子宏塊時(shí),幀內(nèi)預(yù)測(cè)使用的參考樣本均來自相鄰宏塊的重建像素且參考樣本A、B、C、D、E均可用;當(dāng)前預(yù)測(cè)塊F為1號(hào)子宏塊時(shí),來自相鄰宏塊的參考樣本A、B、E和來自0號(hào)子宏塊的參考樣本C可用,其他參考樣本均不可用;當(dāng)前預(yù)測(cè)塊F為2號(hào)子宏塊時(shí),分別來自0號(hào)和1號(hào)子宏塊的參考樣本A、B和來自相鄰宏塊的參考樣本C、E可用,其他參考樣本均不可用,對(duì)于來自1號(hào)子宏塊的參考樣本,只用到參考樣本塊B中的第一個(gè)樣本(即參考樣本r[9]),由于相鄰像素之間相似度很大,本文使用參考樣本r[8]代替r[9],這樣只需使用0號(hào)子宏塊的重建像素;當(dāng)前預(yù)測(cè)塊F為3號(hào)子宏塊時(shí),來自0號(hào)、1號(hào)和2號(hào)子宏塊的參考樣本E、A、C和來自相鄰宏塊的參考樣本B可用,宏塊內(nèi)的依賴性最強(qiáng)。同樣可以得出,色度子宏塊編碼時(shí)在宏塊中沒有依賴性。所以在對(duì)子宏塊逐塊進(jìn)行編碼時(shí),可以在亮度子宏塊預(yù)測(cè)過程之間插入色度子宏塊的預(yù)測(cè)過程。幀內(nèi)預(yù)測(cè)器流水線設(shè)計(jì)如圖4所示。由于1號(hào)、2號(hào)子宏塊的參考樣本均只來自0號(hào)子宏塊的重建像素,因此可以依次對(duì)這兩個(gè)子宏塊進(jìn)行預(yù)測(cè),再對(duì)V色度子宏塊進(jìn)行預(yù)測(cè),最后對(duì)3號(hào)子宏塊進(jìn)行預(yù)測(cè)。在對(duì)色度塊進(jìn)行預(yù)測(cè)的同時(shí)亮度塊進(jìn)行重建,在流水編碼時(shí)無需等待相鄰子宏塊的重建像素,提高了工作效率。

3 并行幀內(nèi)預(yù)測(cè)電路硬件設(shè)計(jì)
    幀內(nèi)預(yù)測(cè)編碼器的另一個(gè)設(shè)計(jì)重點(diǎn)是模式預(yù)測(cè)電路的硬件設(shè)計(jì)。參考文獻(xiàn)[5-6]提出了針對(duì)H.264中幀內(nèi)預(yù)測(cè)的可重構(gòu)硬件電路。該電路可根據(jù)預(yù)測(cè)模式的不同對(duì)運(yùn)算模塊和數(shù)據(jù)通路進(jìn)行重構(gòu),從而達(dá)到對(duì)資源的最優(yōu)化利用。其缺點(diǎn)是像素塊處理速度慢,不利于實(shí)現(xiàn)高清實(shí)時(shí)編碼。參考文獻(xiàn)[7-8]針對(duì)預(yù)測(cè)值求解算法相同的模式設(shè)計(jì)了一個(gè)共用的預(yù)測(cè)器,從而優(yōu)化硬件資源。本文采用第二種方法,通過分析各預(yù)測(cè)模式之間的關(guān)系,設(shè)計(jì)出一個(gè)模式通用的預(yù)測(cè)器,并采用8路數(shù)據(jù)并行處理,解決了可重構(gòu)硬件電路處理速度慢的問題。
    分析亮度和色度的預(yù)測(cè)模式算法,本文將幀內(nèi)模式預(yù)測(cè)電路分為兩部分,亮度塊預(yù)測(cè)模式通用電路模塊和Plane模式預(yù)測(cè)電路模塊。
3.1 亮度預(yù)測(cè)模式電路設(shè)計(jì)
    本文設(shè)計(jì)了8像素并行處理結(jié)構(gòu),即預(yù)測(cè)電路一個(gè)時(shí)鐘完成8個(gè)像素預(yù)測(cè),完成一個(gè)8×8子宏塊所有模式的預(yù)測(cè)并得到最優(yōu)預(yù)測(cè)模式最多需要8×5=40個(gè)時(shí)鐘。分析模式預(yù)測(cè)算法,Vertical和Horizontal模式直接輸出參考樣本為預(yù)測(cè)樣本值,即預(yù)測(cè)值為對(duì)應(yīng)行或列的r[i]或c[i]值,只需要將參考像素RAM中的值直接輸出;DC、Down_Left和Down_Right模式結(jié)構(gòu)中,均有兩次(a+2×b+c+2)>>2的運(yùn)算過程,其中a、b、c為求取預(yù)測(cè)值相對(duì)應(yīng)的參考像素,將其轉(zhuǎn)化為兩個(gè)并行結(jié)構(gòu)的硬件電路,該電路只包含移位和加法器模塊,硬件結(jié)構(gòu)簡(jiǎn)單。該亮度預(yù)測(cè)模式硬件電路如圖5所示。

3.2 Plane預(yù)測(cè)模式電路設(shè)計(jì)
    Plane預(yù)測(cè)模式是幀內(nèi)預(yù)測(cè)中運(yùn)算最復(fù)雜的模式[9],圖6所示是本文設(shè)計(jì)的Plane預(yù)測(cè)模式硬件電路。由于參數(shù)ia、ib、ic、ih和iv均是由已知的參考樣本經(jīng)過運(yùn)算得到的,因此可以在編碼流水中提前在參考像素RAM中取出相應(yīng)的參考像素并計(jì)算出ia、ib和ic的值供預(yù)測(cè)Plane模式時(shí)使用。在Plane預(yù)測(cè)模式中使用到的乘法運(yùn)算均用移位來代替,節(jié)省了硬件資源。

    為了簡(jiǎn)化Plane模式的硬件結(jié)構(gòu),假設(shè)A=ia+(-3)×ib+(-3)×ic+16,可以分析得出PredMatrix[x,y]=Clip1((A+x×ib+y×ic)>>5),其中x×ib和y×ic運(yùn)算可以轉(zhuǎn)化ib和ic的移位加和運(yùn)算。
4 仿真和綜合結(jié)果

 


    本文根據(jù)高清視頻實(shí)時(shí)編碼的實(shí)際要求,設(shè)計(jì)實(shí)現(xiàn)了AVS幀內(nèi)預(yù)測(cè)編碼器的硬件電路。該編碼器每個(gè)時(shí)鐘周期可處理8個(gè)像素,采用并行流水線結(jié)構(gòu)對(duì)各個(gè)模式進(jìn)行預(yù)測(cè)。該設(shè)計(jì)使用Verilog HDL語言完成硬件的編寫,選用Altera公司的Cyclone II 系列2C35 FPGA芯片進(jìn)行了綜合和驗(yàn)證,部分仿真結(jié)果如圖7所示。其中enable_A~enable_E表示為預(yù)測(cè)塊所用參考樣本的可用性,valid_mode表示有效模式輸出,PE0_out_reg~PE7_out_reg表示8個(gè)像素預(yù)測(cè)輸出。從仿真圖中可以看出,電路按照本文設(shè)計(jì)的流水線進(jìn)行預(yù)測(cè),每8個(gè)時(shí)鐘周期完成一個(gè)預(yù)測(cè)模式的預(yù)測(cè),預(yù)測(cè)結(jié)果正確。本設(shè)計(jì)所占用的邏輯資源數(shù)量較少,節(jié)省了硬件資源;且本設(shè)計(jì)提出的并行流水線結(jié)構(gòu)能夠提高幀內(nèi)預(yù)測(cè)電路的工作速度,滿足了高清視頻實(shí)時(shí)編碼的要求,對(duì)AVS高清視頻編碼芯片設(shè)計(jì)具有一定的意義。

參考文獻(xiàn)
[1] AVS工作組.信息技術(shù)先進(jìn)音視頻編碼:視頻[M].北京:中國標(biāo)準(zhǔn)出版社,2006.
[2] 陳靖,劉京,曹喜信.深入理解視頻編解碼技術(shù)——基于 H.264標(biāo)準(zhǔn)及參考模型[M].北京:北京航空航天大學(xué)出版社,2012.
[3] Zhu Xiangkui,Yin Haibin,Gao Wen,et al.An intra prediction pipeline architecture design for AVS encoder[C].Consumer Electronics(ICCE),2010.
[4] Wang Tu-Chih,Huang Yu-Wen,F(xiàn)ang Hung-Chi,et al.Performance analysis of hardware oriented algorithm modifications in H.264[C].Acoustics,Speech,and Signal Processing,2003.
[5] Huang Yu-Wen,Hsieh Bing-Yu,Chen Tung-Chien,et al. Analysis,fast algorithm, and VLSI architecture design for  H.264/AVC intra frame coder[C].IEEE Transactions on Circuit and Systems for Video Technology,2005.
[6] 劉凌志,路奇,戎蒙,等.一種并行結(jié)構(gòu)的H.264幀內(nèi)預(yù)測(cè)器[J].上海交通大學(xué)學(xué)報(bào),2006,40(1):54-58.
[7] Huang Yu-Wen,Hsieh Bing-Yu,Chen Tung-Chien,et al. Hardware architecture design for H.264/AVC intra frame  coder[C].International Symposium on Circuits and System,2004.
[8] Kao Yu-Chien,Kuo Huang-Chih,Lin Yin-Tzu,et al.A  high-performance VLSI architecture for intra prediction and  mode decision in H.264/AVC video encoding[C].Asia Pacific Conference on Circuits and Systems,2006.
[9] 宋健,王祖強(qiáng),秦盼.H.264視頻解碼器中幀內(nèi)預(yù)測(cè)模塊的硬件設(shè)計(jì)[J].電子技術(shù)應(yīng)用,2011,37(10):53-59.

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