黃圣勛,王法翔,鐘昌標
(福州大學 物理與信息工程學院 福建省集成電路設計中心,福建 福州350002)
AVS是我國自主研發的數字音視頻編解碼標準,并于2006年獲批成為國家標準實施,2012年11月起被強制執行,所有在中國大陸上市的地面數字電視接收機(包括機頂盒、一體機)需內置AVS解碼功能,否則將無法銷售。作為我國具有自主知識產權的第二代信源編解碼標準,其發展對我國的數字音視頻業務具有極其重要的意義。
與H.264相比,AVS視頻標準解碼復雜度只相當于H.264的30%,編碼復雜度相當于H.264的70%。其核心技術主要包括:特殊的幀間預測運動補償、1/4精度像素插值、幀內預測、去塊效應濾波、二維熵編碼和8×8整數變換等[1]。由此可見,作為AVS編碼器的重要組成部分,研究幀內預測的硬件設計與實現意義重大。
在現有的幀內預測硬件實現方案中,由于基于可重構硬件電路只能逐個計算各預測模式的預測值,處理速度較慢,難以滿足高清實時編碼的需求,因此在高清視頻編碼器幀內預測部分的硬件設計中,通常采用將具有相同預測值求解算法的預測模式共用一個預測器的設計方案,文獻[2-3]都采用這樣的設計。文獻[2]提出了一種基于并行流水的幀內預測硬件架構,實現6種預測模式的并行處理,取得了很好效果,但其并沒有充分利用6種預測模式算法上的相似性進行運算單元的進一步共享,資源利用率不夠。而文獻[3]雖然相對于文獻[2]進一步實現了運算單元的資源復用,但參考數據輸入控制機制復雜,資源消耗大,并且一個時鐘只能預測各模式的一個像素點,難以滿足高清實時編碼的要求。
本文在采用并行流水處理結構的基礎上,將亮度和色度多種預測模式共用一個預測單元。同時根據各模式算法的相似性,結合移位寄存器操作設計了一種新的預測值計算架構,簡化了參考數據輸入控制機制,進一步提高了預測值計算單元的硬件復用,減少資源消耗。
AVS幀內預測算法采用了代表空間域紋理方向的多種預測模式,利用當前塊相鄰的左邊和上邊塊重建數據作為參考樣本,實現對當前塊數據的預測,有效地去除了相鄰塊的相關性,很大程度上提高了幀內預測效率[4]。
AVS視頻編解碼標準中,幀內預測分為亮度預測和色度預測,亮度預測有5種預測模式(如圖1所示):Vertical模式(模式值0),Horizontal模式(模式值1),DC模式(模式值2),Down_Left模式(模式值3),Down_Right模式(模式值4);色度預測模式有4種預測模式:DC模式(模式值0),Horizontal模式(模式值1),Vertical模式(模式值2),Plane模式(模式值3)。其中亮度和色度預測有3種預測模式的算法是相同的,因此在幀內預測中共有6種不同的預測模式。

圖1 8×8亮度塊幀內預測模式
由圖1可知,幀內預測各模式的預測方向不同,需要選取的周邊塊參考數據也不同,因此在預測值計算之前需要提前判斷當前塊的左邊塊和上邊塊是否存在,根據周邊塊可用性確定預測塊可用預測模式及參考數據。幀內預測結束后,需要計算預測塊和原始塊之間的殘差數據用于代價計算。模式判決模塊通過比較,選取代價值最小的模式作為最終的預測模式,并將相應模式的殘差和預測數據輸出,經過重建后作為后邊塊的參考數據。
在實際應用中一般有三種代價值計算方式,分別為SSD,SATD和SAD[5]。其 中采用SSD的率失真優化(RDO)模式選擇算法性能最佳,但運算復雜度高,不利于硬件實現。SAD運算復雜度低,硬件消耗小,但性能一般,而SATD性能較好,介于SSD和SAD之間,同時硬件復雜度不大,資源消耗適中,因此在本設計中采用SATD作為模式代價值計算算法。
AVS編碼器幀內預測主要分為預測值計算和模式判別兩部分,而運算中所需的參考像素值和圖像原始數據則存儲在相應的RAM中,圖2給出了幀內預測模塊硬件結構框圖。由圖可知,計算預測值之前需要先判定當前塊周邊塊的可用性(包括左下、左邊、左上、上邊和右上邊快),根據判定結果確定可用預測模式及其對應的參考樣本數據。預測單元從RAM中取得參考像素值C0~C17和R0~R17后進行預測值計算,其中亮度和色度共用一個計算單元,同時每種預測模式對應一個預測器,實現各模式的并行計算。預測值計算結束后將預測結果mpr_data輸出,進行殘差計算以及SATD計算,從而判定最優預測模式best_mode作為最終預測模式,并將相應的殘差數據送入變換量化、反變換反量化單元進行處理,然后與存儲在預測結果RAM中的預測值進行數據重建,用于后邊塊的預測。

圖2 幀內預測硬件結構框圖
需要說明的是,色度預測的代價計算需要綜合考慮2個色度塊中相應代價之和作為該模式代價值,因此在第1個色度塊預測結束后需要將相應的代價值及預測數據進行緩存,直到2個色度塊都完成預測后才能得到最終的色度預測模式。
通過分析幀內預測算法可知,AVS雖然具有多種幀內預測模式,但除了色度Plane模式外,各模式預測值計算框架都是類似的,每種模式都是以(a+2×b+c+2)>>2的3抽頭濾波結構為核心[6]。在本文的設計中也采用該3抽頭濾波結構作為幀內預測運算的最小單元,應用于DC模式、Down_Right模式和Down_Left模式中。圖3中給出了針對此最小單元設計的硬件電路。對于Vertical模式和Horizontal模式,由于其預測值可由參考樣本直接獲得,因此只需要進行數據賦值。
為滿足高清實時編碼要求,提高幀內預測的速度,本設計采用6路并行流水的硬件架構,預測一個8×8塊只需要8個時鐘周期。由于采用多種模式并行預測,如果每種預測模式都分別采用專用預測電路,同時考慮到DC模式和Down_Left模式預測一個像素需要2個最小運算單元,因此總共需要40個最小運算單元。另外,由于幀內預測可能用到的參考數據最多有35個,則輸入控制單元需要從35個參考樣本值中選取120個數據作為40個最小單元的預測輸入,控制邏輯復雜,硬件資源消耗大。
對此本文通過分析幀內預測算法,結合流水線技術實現各模式相同運算單元的資源共享,將所需最小預測單元縮減至19個,同時采用移位寄存器操作簡化參考樣本輸入控制機制,減少資源消耗,具體硬件電路結構如圖3所示,該電路能夠滿足除Plane模式以外所有預測模式的預測值計算。

圖3 預測值計算單元硬件結構
由圖3可知,該電路將最小單元的輸入初始化為r0~r9和c0~c9,同時通過對輸入參考數據的移位操作,實現輸出結果outr0~outr9和outc0~outc9的移位,從而達到1個時鐘周期預測8×8塊、1行8個數據的目的。
預測開始后,各預測模式在控制單元的控制下進行預測值的并行計算。Vertical和Horizontal模式在周邊塊判別為可用后,預測值分別由輸入參考像素值r1~r8和c1~c8直接得到,因此并不需要通過圖3電路的運算。對于DC模式,電路在第一個時鐘到來時將outr1~outr8的值寄存,如果左邊和上邊塊都可用,則將寄存器reg0~reg7的值分別與outc1求均值后輸出,作為當前塊第1行預測數據。接著通過c0~c16的移位操作實現outc2~outc8值的移位,并分別與寄存器reg0~reg7的值作均值運算后得到后續7行預測數據;如果僅有上邊塊可用,則輸出寄存器reg0~reg7的值作為每一行的預測結果;如果僅有左邊塊可用,則輸出outc1的值作為一行預測值,否則直接輸出常數128作為預測值,在8個時鐘內完成一個塊預測。對于Down_Left模式,將outr2~outr9和outc2~outc9分別兩兩順序求均值作為一行預測結果,通過r0~r16以及c0~c16移位操作在8個時鐘周期內實現一個塊8行數據預測。對于Down_Right模式,電路在第一個時鐘到來時將outr0-outr7的值寄存為s0~s7作為第1行預測結果,然后將outc1和s0~s7進行順序移位操作并輸出s0~s7的值作為后續7行的預測值。
色度Plane模式為幀內預測中最為復雜,所需時鐘數最多的預測模式,需要通過獨立的硬件模塊進行運算。圖4所示為Plane模式的硬件電路,其中A0=ia+(-3)×ib+(-4)×ic+16,在輸入參考數據確定的前提下,ia,ib以及ic的值在當前宏塊的計算中都是固定的,因此A0的值也是固定的。根據Plane模式算法,當該預測模式被掛起時,A0以及A0與ib各乘積項之和分別構成預測塊第1行的8個預測數據。在第1行預測結束后將預測值進行寄存,并在其后每個時鐘周期中將寄存器中的值與ic進行累加,經過限幅運算后輸出,作為Plane模式后續7行的預測數據。電路中A0,ic,ib及其各乘積項均采用移位和加法實現,完成一個8×8塊的預測需要12個時鐘周期。

圖4 色度Plane模式預測電路
本設計采用verilog HDL硬件語言實現,并通過Modelsim SE 6.2b對設計進行仿真,結果與參考C代碼rm52j生成的測試向量進行對比,對比結果表明該設計符合AVS編碼器中幀內預測模塊功能要求。采用Xinlinx公司Virtex4系列FPGA進行綜合,綜合結果表明頻率達到140.1 MHz。本文通過合理的流水線設計,只需406個時鐘就能夠完成一個宏塊的預測,完全符合1 920×1 080,4∶2∶0,30 f/s(幀/秒)視頻格式編碼器工作在140.1 MHz頻率下所要求的576個最大時鐘數,并留有30%的時鐘裕度。
由于采用多路并行流水設計以及更為復雜的SATD算法作為代價值計算方式,因此該電路結構硬件資源消耗相對較大。表1給出了本設計和其他相關文獻的設計參數,通過對比可知,本設計在工作頻率和預測所需時鐘數上具有一定優勢,相對于文獻[2]在增加少量面積的基礎上將頻率提高了21%,所需時鐘數減少了25%,不失為一個可取的硬件實現方案。

表1 本文與其他文獻參數對比
本文在分析AVS編碼器中幀內預測算法的基礎上,采用并行流水結構實現多路預測數據的并行計算,同時通過移位寄存器操作,簡化了參考數據選擇機制,很大程度上減少了預測所需最小運算單元的數量,提高了資源利用率。仿真綜合結果表明,本設計完全能夠滿足1 920×1 080,4∶2∶0,30 f/s高清視頻圖像實時編碼要求。
[1]GB/T 20090.2—2006,信息技術先進音視頻編碼第2部分[S].2006.
[2]付華豐,李鳳亭.并行結構的AVS幀內預測編碼器[J].計算機工程與設計,2009,30(5):1140-1143.
[3]向紅莉,張剛.基于FPGA的AVS編碼器幀內預測實現[J].軟件,2012,33(2):105-107.
[4]ZHANG Nan,YIN Baocai,KONG Dehui,et al.Sptial prediction based intra-coding.[C]//Proc.2004 IEEE International Conference on Multimedia and Expo(ICME'2004).Taibei,China:IEEE Press,2004:97-100.
[5]尹文蕾.基于率失真優化的模式選擇快速算法研究[D].武漢:華中科技大學,2008.
[6]黃有文,陳詠恩.AVS解碼器幀內預測模塊硬件優化設計[J].小型微型計算機系統,2010,31(1):183-185.
[7]ZHANG Ke,YU Lu.An area-efficient VLSI architecture of a Reed-Solomon decoder/encoder for digital VCRs[J].IEEE Trans.Consumer Electronics,1997,43(4):1019-1027.
[8]KIBUM S,SEONGMO P,HANJIN C.An efficient hardware architecture of intra prediction and TQ/IQIT module for H.264 encoder[J].ETRI Journal,2005,27(5):511-524.