《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 設計應用 > H.264視頻解碼器中幀內預測模塊的硬件設計
H.264視頻解碼器中幀內預測模塊的硬件設計
來源:電子技術應用2011年第10期
宋 健,王祖強,秦 盼
(山東大學 信息科學與工程學院,山東 濟南250100)
摘要: 提出一種能實時處理的H.264/AVC幀內預測硬件結構。通過對H.264/AVC各個預測模式的分析,設計了一個通用運算單元,提高了硬件資源的可重用性。采用4個并行運算單元計算預測值,對運算比較復雜的plane模式預處理,并設計模式預測器,加快了系統(tǒng)處理速度。硬件電路結構已通過RTL級仿真及綜合,并在Altera公司的Cyclone II FPGA平臺上進行了驗證和測試。
中圖分類號: TN919.8
文獻標識碼: A
文章編號: 0258-7998(2011)10-0053-03
Hardware design of intra prediction in H.264 video decoder
Song Jian,Wang Zuqiang,Qin Pan
College of Information Science and Engineering,Shandong University,Jinan 250100,China
Abstract: A hardware architecture for real-time implementation of intra prediction is proposed. According to analyzing all intra prediction modes, this paper designs a processing element, the processing element improves the reusability of hardware resources. In order to improve the processing speed, four parallel processing elements are employed, plane mode precomputation and mode predictor are adopted. The intra prediction decoder has pass RTL level emulation and synthesis; it has verification and test on cyclone II FPGA platform.
Key words : H.264;decoder;intra prediction;hardware


    H.264/AVC是由國際電信聯(lián)盟(ITU)和國際標準化組織(ISO)共同提出的最新一代數(shù)字視頻壓縮標準,它吸取了以往壓縮技術的精華,又引進了其他壓縮技術無法比擬的許多新技術,因此,H.264在通信領域得到了廣泛應用。H.264/AVC壓縮效率很高,但算法的復雜度和運算量同時也大大增加,為了滿足視頻解碼實時性的要求,尋求更有效的解碼技術成為重要的研究課題。
    幀內預測是視頻編解碼中重要的一部分,其主要功能是降低圖像的空間冗余。本文根據(jù)H.264/AVC 幀內預測的特點并結合對其算法的分析,提出了一種幀內預測硬件電路結構,有效地減少了硬件電路面積,提高了解碼的性能。
1 H.264幀內預測算法介紹
    H.264視頻解碼器中,對于I和SI宏塊類型采用幀內預測來解碼。幀內預測模塊的輸入是當前宏塊相鄰左邊塊和上邊塊環(huán)路濾波前的像素值及參考預測模式,輸出是當前宏塊的預測值。預測值與反變換反量化得到的殘差值重構,得到宏塊的像素值。完成后,當前宏塊的部分像素值和預測模式要進行存儲,為后面宏塊解碼提供參考值。
    H.264中亮度預測分兩類,一類是針對圖像中含有大量細節(jié)的部分采用4×4塊的預測模式(有9種預測模式);另一類是對圖像中比較平緩的區(qū)域采用16×16塊的預測模式(有4種預測模式)。色度預測是8×8塊的預測模式,有4種預測模式,這4種預測模式與亮度16×16的預測模式相似,也有豎直、水平、DC和平面模式。所有的預測模式都是根據(jù)左邊塊和上邊塊的參考值,計算當前宏塊的預測值。
2 硬件實現(xiàn)
    根據(jù)幀內預測算法,硬件結構劃分為predmode模塊、plane模塊、prediction模塊、reconstruct模塊、left_pixels模塊、predmode_ram、prediction_ram、sample和prediction_output模塊。如圖1所示,其中l(wèi)eft_pixels、prediction_ram、predmode _ram、sample和prediction_output模塊都是存儲單元,分別存儲的是當前宏塊左邊塊的參考值、當前宏塊上邊塊參考值、當前宏塊上邊塊的參考預測模式、提取的參考像素值和當前宏塊預測值輸出;predmode模塊預測計算出當前塊的預測模式;plane模塊是對plane預測模式的預處理;prediction模塊是幀內預測的核心計算單元,4個PE單元并行運算,一個時鐘周期解碼出一個4×4的一列4個預測值;reconstruct模塊的功能是實現(xiàn)重構。

2.1 predmode模塊設計
    Intra_16×16和Intra_Chroma的預測模式可通過語法元素解析直接獲得,所以本模塊的主要任務是解析Intra_4×4的預測模式。
    本模式預測器的輸入是當前4×4亮度塊的luma_4×4BlkIdx(塊索引)、解析的語法元素和當前宏塊的信息。輸出是當前宏塊的16個子塊的預測模式mb_predmode。predmode_ram中存儲的是當前宏塊上邊一行4×4塊的預測模式,如圖2陰影部分所示。左邊塊的預測模式存儲在predmode模塊內。對于高清圖像(分辨率為1 920×1 080)來說,predmode_ram需要的存儲空間為1 080 bit。

    如圖3所示,E是當前塊,A是左邊塊,B是上邊塊,D是左上邊塊,C是右上邊塊。predmode模塊的結構如圖4所示,圖中predmode_B模塊的作用是獲得當前宏塊E的上邊塊B的預測模式,預測當前宏塊E的子塊0、1、4、5,需要從predmode_ram中讀取上邊塊的參考預測模式,其他子塊的上邊塊參考預測模式是當前塊已解碼子塊的預測模式。predmode_A模塊的作用是獲得當前宏塊E的左邊塊A的預測模式,預測當前塊E的子塊0、2、8、10時,左邊塊預測模式從reg_A里讀取。當宏塊E的16個子塊預測完成時,把5、7、13、15子塊的預測模式存儲到reg_A中,為下個宏塊模式預測提供左邊塊參考值。

 

 

2.2 prediction模塊設計
    prediction模塊是整個幀內預測的核心計算模塊。prediction模塊的功能是根據(jù)獲得的參考像素,在不同預測模式下采用不同的預測公式計算當前塊的預測值。幀內預測共有17種預測模式,通常若對每種預測模式都設計預測器,當求解一個預算值時,其他16個模式處于空閑,這就造成了很大的資源浪費。通過分析各個模式所對應的運算法則,可以發(fā)現(xiàn)這些運算法則的共同特點是:(1)計算每個位置預測值最多需要4個參考樣本像素;(2)計算公式都可由加法和移位操作完成計算。根據(jù)各個預測模式的相似點,把17種預測模式集合到一個運算單元中,可大大節(jié)約硬件資源。
    圖5給出了PE的設計,該PE的特點是:(1)Horizontal或Vertical預測模式中在獲得參考值x0后,在bypass控制下不需要經(jīng)過運算單元直接獲得預測值;(2)DC模式,該模式的預測值是一個平均值。對于Intra_4×4_DC模式,用2個PE單元(PE0和PE1)在1個時鐘周期就可解得預測值。Intra_16x16_DC模式需要4個時鐘周期,假設左邊和上邊的參考像素值分別命名為L0~L15和U0~U15,前3個時鐘周期,PE0的輸入分別為(L0,L1,L2,L3)、((L0+L1+L2+L3),U0,U1,U2)、((L0+L1+L2+L3+U0+U1+U2),U3,0,0),輸出存儲在PE_reg中作為下個時鐘周期的輸入,PE1、FE2、PE3的輸入類同,最后一個時鐘周期把PE0、PE1、PE2、PE3作為PE0的輸入求出DC模式的預測值;(3)其他預測模式,如(A+2B+C+2)>>2和plane預處理單元的輸出都能經(jīng)過此運算單元完成預測值的計算。

    為了提高解碼速度,滿足視頻解碼實時性的要求,采用4個運算單元PE0、PE1、PE2和PE3同時運行, 4個運算單元4個時鐘周期可以解碼出一個4×4塊,提高了解碼速度。
2.3 plane模塊設計
2.3.1 簡化 plane預測模式

    Intra_16×16_Plane模式和色度塊Intra_chroma_Plane模式是幀內預測中最復雜的預算模式,為了滿足系統(tǒng)實時處理的要求,可提前預算plane模式需要的一些參數(shù)。本文以Intra_16×16_Plane為例介紹如何簡化plane模式,Intra_chroma_Plane方法類同。
    在plane模式運算中要用到乘法,為了節(jié)約硬件資源,采用移位來實現(xiàn)乘法,其中參數(shù)a、b、c的計算公式為:
    

    上述公式,首先求得A后,pred(0,1)、pred(0,2)、pred(0,3)的值是在A的基礎上加上c、2c、3c,然后再進行移位和clip。pred(1,0)、pred(2,0)、pred(3,0)的值只是在A的基礎上加上b、2b、3b,然后再進行移位和clip。所以提前求得A、b、c,預算值是在A的基礎上加上b或者c的倍數(shù),本方法可大大優(yōu)化plane模式。
2.3.2 plane模式硬件設計
    plane模式的關鍵是求得參數(shù)H和V,其硬件設計如圖6所示。以V為例介紹本電路。
  
    舉例說明本運算單元如何計算出參數(shù)H:
    當a=a11、b=a12、c=a3、d=a3、sum=0、mux1=0、IS6=0、IS7=0、shift1=0、shift2=1時,就可以求得A1+A3。a=a21、b=a22、c=a51、d=a52、sum=0、mux1=0、IS6=0、IS7=0、shift1=1、shift2=2時,就可以求得A2+A5,并依照這個運算單元可求出A4+A6和A8+A7。
    本電路4個時鐘周期就可以求得H或V,所以共需要8個時鐘周期求H和V。本方法與通常方法相比,只計算一次A、b、c的值,其他位置的預測值只需要在A的基礎上加上b或者c的倍數(shù),降低了復雜度。
3 實驗結果
    本設計使用Verilog HDL完成硬件代碼的編寫,并用Altera公司的Quartus II 8.0進行代碼的仿真和綜合。圖7為核心單元prediction模塊的仿真結果,PE0_out、PE1_out、PE2_out、PE3_out9為4個并行單元的輸出。采用Altera公司的Cyclone II進行本設計FPGA驗證,本設計占用的邏輯資源數(shù)量較少,節(jié)約了硬件資源。
    本文根據(jù)H.264幀內預測的特點,提出了一種并行處理的硬件實現(xiàn)方法。該方法能夠提高幀內預測的處理速度,節(jié)約了硬件資源,滿足了高清視頻的解碼要求。
參考文獻
[1] ISO/IEC 14496-10.draft ITU-T recommendation and final international standard of joint video specification(ITU-TRec.H.264/AVC) [S].2003.
[2] SAHIN E,HAMZAOGLU I.An efficient intra prediction hardware architecture for H.264 Video Decoding[M].IEEE,2009.
[3] Wang Xi.A parallel intra prediction architecture for H.264 video decoding[M].IEEE,2007.
[4] 畢厚杰.新一代視頻壓縮編碼標準-H.264/AVC(第二版). 2009.

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