袁星范,蔡敏
(華南理工大學 電子與信息學院,廣東 廣州510640)
HEVC 中CABAC 解碼器的硬件設計與實現
袁星范,蔡敏
(華南理工大學 電子與信息學院,廣東 廣州510640)
基于上下文自適應二進制算術編碼(CABAC)是HEVC中采用的一種高效熵編碼,具有很高的壓縮比,但實現結構復雜,且很難并行化。本文設計了一個高性能的CABAC解碼器,并對單周期解碼1bit的硬件結構進行了優化,同時采用流水線結構,進一步提高了解碼性能。采用0.18 μm CMOS工藝,綜合后面積為48K個邏輯門,工作頻率為250 MHz,解碼速度達到1 bit/cycle,適用于高清視頻領域。
CABAC;HEVC;二進制算術編碼;硬件設計
隨著高清視頻應用日益增加,對視頻壓縮性能提出了更高的要求。因此,2010年4月國際電信聯盟電信標準化部門(IUT-T)的視頻編碼專家組(VCEG)和國際標準化組織(ISO)的動態圖像專家組(MPEG)組建視頻編碼聯合組(JCT-VC),聯手制定了新一代視頻編碼標準HEVC。HEVC采用CABAC的熵編碼方式,獲得了高的壓縮效率,但實現結構復雜,諸多的迭代運算,加上各級之間的相關特性使其很難并行化[1-3],在硬件實現上占用較多的面積并且速度較慢。
文中設計了一個高性能的CABAC解碼器,通過對單周期解碼1bit的結構進行改進,優化了面積和關鍵路徑等特性,提高了解碼性能。該設計采用Verilog HDL進行建模和仿真,并利用Synopsys公司的相關工具進行了面積和時序分析。
HEVC中,CABAC的解碼流程如圖1所示。主要由三部分組成:上下文模型,二進制算術編碼和反二值化。

圖1 CABAC解碼框圖
1.1上下文模型
語法元素使用的上下文概率模型都被唯一的概率模型索引號ctxIdx標識,每一個ctxIdx與兩個概率模型變量有關:最大概率符號MPS和概率狀態索引pstate。MPS表示待解碼bit最可能出現的符號,取值為0或1;反之,LPS表示待解碼bit最不可能出現的符號。CABAC中為LPS設定了64個值,pstate與LPS概率值一一對應,在獲得初始概率模型變量后,就可以對符號進行二進制算術編碼和概率模型參數的自適應更新。當MPS出現時,當前概率模型的pstate變大;當LPS出現時,當前概率模型的pstate變小;當概率模型的pstate為0時,表明MPS和LPS概率相同,若再出現LPS,則MPS和LPS必須交換[4]。
1.2二進制算術編碼
二進制算術解碼根據給定的概率模型對區間進行遞歸的劃分,由兩個變量進行描述:范圍Range(R)和偏移量Offset (O)。Range表示當前解碼區間的長度,Offset表示當前從碼流中讀取的bit串表示的實數在解碼區間中的相對位置。每解碼一個bit,R和O都要進行更新,同時,根據當前解碼出來的值更新上下文模型。經過區間劃分后R變得小于256時,就需要進行重新歸一化過程[5-7]。此外,還有兩種特殊情況下的解碼方式:旁路解碼和終止解碼。
1.3反二值化
在HEVC中,常用的二值化方法有截斷萊斯二元化(TR),K階指數哥倫布二元化(EGK),定長二元化(FL)和查表法。反二值化是將二進制算術解碼得到的二元串(bin_string),采用相應的二值化方法得到當前所解語法元素的值,其中每一個這種反二值化后的符號稱之為bin。
文中CABAC解碼器硬件設計的總圖框圖如圖2所示,主要由四大模塊構成,分別是CABAC Controller模塊、Con-Binarization Controller模塊、Context Cache模塊和 Arithmetic Decoder模塊。

圖2 CABAC硬件設計整體框圖
2.1CABAC Controller模塊
該模塊利用當前相鄰的宏塊信息 (Neighbor information)和已解碼的語法元素值(SE_value),確定下一個需要進行解碼的語法元素類型(syntax_type)。主要由狀態機(FSM),語法元素緩存器(SE_buffer)和解碼控制器(Decode_control)三部分組成,如圖3所示。其中FSM是CABAC的核心控制部分,控制整個解碼流程,該模塊主要輸出結果是需要進行解碼的syntax_type;SE_buffer用來存儲 FSM輸出的 syntax_type和Context.
Cache模塊的控制信號;Decode_control用來控制輸出,把解碼后的信息傳遞給視頻解碼器中CABAC的下一環節。

圖3 CABAC Controller結構圖
2.2Con-Binarization Controller模塊
Con-Binarization Controller模塊包含反二值化(Con-Binarization)和上下文模型選擇(Context Select)兩部分,如圖4所示。Context Select模塊利用輸入的syntax_type和bin_string的索引號(binIdx)確定其概率模型索引號ctxIdx,另外一個重要的輸出信號ctx_idx用來確定所選概率模型的存儲地址;Con-Binarization模塊除了選擇相應的二值化方法進行反二值化外,還包括對bin_string進行串匹配以決定是否完成一個語法元素的解碼,若匹配成功則輸出一個語法元素,并根據碼流語法規定進行ctxIdx的更新,用來選擇下一個bin的概率模型。

圖4 Con-Binarization Controller結構圖
2.3Context Cache模塊
在CABAC的解碼過程中,每解碼完一比特,就會對它所用的上下文模型(context)進行更新,以實現 對視頻流實時統計特性的跟蹤。Context Cache模塊的組成如圖5所示。為了減少數據在SRAM、上下文緩存器(context buffer)和乒乓緩存器(cache0,cache1)之間的交換頻率,context buffer必須要存儲所有的context,乒乓緩存器根據ctx_idx從context buffer中讀取 context和存儲更新的 context。在解碼時,cache0和cache1只有一個處于工作模式用來解碼當前的語法元素,另外一個用來讀取下一個語法元素的context。乒乓緩存器后的選擇器(MUX)用來確定cache0和cache1哪一個處于工作模式,利用transIdxLps,transIdxMps和TabRLPSFULL3個查找表來進行概率模型索引和概率值得更新,最終得到3個變量RLPS,shift_bitLPS,new_RLPS的值作為Arithmetic Decoder模塊的輸入參數。

圖5 Context Cache結構圖
2.4Arithmetic Decoder模塊
本模塊是CABAC的主要模塊,用來實現自適應的二進制算術編碼,輸出的是解碼出來的 bin_string。主要包括Decode_decision、Decode_bypass和 Decode_terminate 3個模塊,其內部結構如圖6所示。對本模塊的硬件優化主要是針對Decode_decision模塊,是Arithmetic Decoder模塊的核心部分。由于傳統CABAC解碼結構各級之間的強相關性[8-11],使得區間劃分,bin裁決,重歸一化只能串行工作,嚴重影響了解碼速率。下面詳述本設計中采用的4種優化方案,如圖7所示。

圖6 Arithmetic Decoder結構圖

圖7 Decode_decision模塊的優化
1)猜測執行
猜測執行是把所有可能的輸入值對應的結構都計算出來,在前級計算的同時后級按所有可能的輸入并行的進行后級計算,再以前級計算結束的結果選擇后級計算結果中正確的那個,實現前后兩級的并行化。在此設計中,把bin裁決的結果作為最佳猜測對象,由于裁決結果位寬只占一個比特,且處于CABAC解碼器的關鍵路徑中,驅動電路只需復制兩份,即MPS和LPS同時獨立的進行解碼,最后根據真實的bin裁決結果進行選通。
2)局部查找表優化
局部查找表優化是指將LPS解碼部分的歸一化運算并入到查找表TabRLPS中,其實質是當面積在可以接受的范圍內,以面積來換速度。
3)邏輯平衡
LPS對應的區間長度RLPS是由查找表TabRLPS得到的,索引值為R的次高兩位(R[7:6])和pstate,由于R[7:6]處于bin解碼的關鍵路徑中,而pstate不是,所以先查索引值pstate,再通過R[7:6]進行結果選擇,來緩解R端輸入時序比較緊張的局面[12-14]。
4)運算順序優化
采用如下公式來交換兩個減法的運算順序使得bin裁決的輸出對各輸入端達到均衡。其中OLPS表示bin裁決結果為LPS時,更新的O值。

2.5流水線設計
CABAC解碼器采用三級流水線結構,第一級流水線FSM控制哪個語法元素要進行解碼和產生相應的上下文模型索引;第二級流水線從SE_buffer中獲取語法元素,從Context Cache中取出context并鎖存起來;第三級流水線進行當前比特的算術解碼,解碼后的bin_string進行反二值化得到相應語法元素的值。采用流水線設計,使解碼時語法元素的延時減少了。提高了解碼速度,同時,對硬件實現的時序也有利。
根據上文CABAC解碼器的硬件結構,采用Verilog HDL進行建模,并使用NC_verilog進行了驗證,采用Synopsys公司的Design Compiler進行綜合,綜合面積為48K個邏輯門;Prime Time進行靜態時序分析,沒有時序違規;工作頻率為250 MHz,解碼速度達到1 bit/cycle,滿足高清視頻需求。
文中通過對面積、關鍵路徑等優化,設計了一個高性能的CABAC解碼器硬件結構,并采用流水線設計,顯著提高了CABAC的解碼速度,充分利用了存儲空間,在高清視頻解碼器中具有很大的應用價值[15]。
[1]陳杰,丁丹丹,虞露.高清CABAC解碼器的優化設計與實現[J].計算機工程,2012,38(23):273-276.
[2]Chen Jianwen,Chang Chengru,Lin Youlong.A hardware accelerator for context-based adaptive binary arithmetic Decoding in H.264/AVC[J].IEEE Transactions on Circuits and Systems for Video Technology,2005,15(5):4525-4528.
[3]盛懷亮,林濤.全高清CABAC視頻解碼器的設計與實現[J].計算機工程,2008,34(19):236-228.
[4]萬帥,楊付正.新一代高效視頻編碼H.265/HEVC:原理、標準與實現[M].北京:電子工業出版社,2014.
[5]VIVIENNE S,MADHUKAR B.High throughput CABAC entropy coding in HEVC[J].IEEE TCSVT,2012,22(12):1778-1791.
[6]TSAI C H,TANG C S,CHEN L G.A flexible fully hardware CABAC encoder for UHDTV H.264/avc high profile video[J]. IEEE Trans Consumer Electronics,2012,58(4):1329-1337.
[7]Marpe D,Wiegand T.H.264/MPEG4-AVC Fidelity Range Extensions:Tools,Profile,Performance,and Application Areas[C]// Proc.of IEEE International Conference on Image Processing. San Diego,USA:IEEE Press,2005.
[8]Yu W,He Y.A high performance CABAC decoding architecture[J].IEEE Trans.Consum.Electron.,2005,51(4):1352-1359.
[9]Zhang P.Fast CABAC decoding architecture[J].Electronics Letters,2008,44(24):1394-1395.
[10]胡海明,李金良.基于上下文的自適應二階二進制算術編碼算法[J].計算機工程與設計,2006,27(17):3267-3269.
[11]Zhang P.Fast CABAC decoding architecture[J].Electronics Letters,2008,44(24):1394-1395.
[12]朱敏,劉雷波,王星,等.一種CABAC解碼引擎的芯片實現[J].電路與系統學報,2013,18(2):6-11.
[13]張秀麗,萬忠,鮑程紅.基于碼頭分組的CAVLC解碼算法優化[J].電路與系統學報,2009,14(3):126-130.
[14]Yi Y,Park I C.High-speed H.264/AVC CABAC decoding [J].IEEE Trans.Circuits Syst.Video Technol.,2007,17(4): 490-494.
[15]陳潛,楊秀芝.高清H.264 CABAC解碼器的優化設計[J].有限電視技術,2014(9):46-49.
Hardware design and implementation of CABAC decoder in HEVC
YUAN Xing-fan,CAI Min
(School of Electronics and Information,South China University of Technology,Guangzhou 510640,China)
context based adaptive binary arithmetic encoding(CABAC)is a kind of high efficient entropy encoding used in HEVC,which has a high compression ratio,but it is complex and difficult to be parallel.In this paper,a high performance CABAC decoder is designed,and the hardware structure of the single cycle decoding 1bit is optimized,and the pipeline structure is used to improve the decoding performance.With the 0.18 μm CMOS process,the integrated area is 97K logic gates,the working frequency is 250MHz,the decoding speed reaches 1bit/cycle,which is suitable for the field of HD video.
CABAC;HEVC;binary arithmetic encoding;hardware design
TN4
A
1674-6236(2016)21-0057-03
2015-11-18稿件編號:201511174
袁星范(1991—),男,湖南益陽人,碩士研究生。研究方向:數字芯片設計。