袁星范,蔡敏
(華南理工大學(xué) 電子與信息學(xué)院,廣東 廣州510640)
HEVC 中CABAC 解碼器的硬件設(shè)計(jì)與實(shí)現(xiàn)
袁星范,蔡敏
(華南理工大學(xué) 電子與信息學(xué)院,廣東 廣州510640)
基于上下文自適應(yīng)二進(jìn)制算術(shù)編碼(CABAC)是HEVC中采用的一種高效熵編碼,具有很高的壓縮比,但實(shí)現(xiàn)結(jié)構(gòu)復(fù)雜,且很難并行化。本文設(shè)計(jì)了一個高性能的CABAC解碼器,并對單周期解碼1bit的硬件結(jié)構(gòu)進(jìn)行了優(yōu)化,同時采用流水線結(jié)構(gòu),進(jìn)一步提高了解碼性能。采用0.18 μm CMOS工藝,綜合后面積為48K個邏輯門,工作頻率為250 MHz,解碼速度達(dá)到1 bit/cycle,適用于高清視頻領(lǐng)域。
CABAC;HEVC;二進(jìn)制算術(shù)編碼;硬件設(shè)計(jì)
隨著高清視頻應(yīng)用日益增加,對視頻壓縮性能提出了更高的要求。因此,2010年4月國際電信聯(lián)盟電信標(biāo)準(zhǔn)化部門(IUT-T)的視頻編碼專家組(VCEG)和國際標(biāo)準(zhǔn)化組織(ISO)的動態(tài)圖像專家組(MPEG)組建視頻編碼聯(lián)合組(JCT-VC),聯(lián)手制定了新一代視頻編碼標(biāo)準(zhǔn)HEVC。HEVC采用CABAC的熵編碼方式,獲得了高的壓縮效率,但實(shí)現(xiàn)結(jié)構(gòu)復(fù)雜,諸多的迭代運(yùn)算,加上各級之間的相關(guān)特性使其很難并行化[1-3],在硬件實(shí)現(xiàn)上占用較多的面積并且速度較慢。
文中設(shè)計(jì)了一個高性能的CABAC解碼器,通過對單周期解碼1bit的結(jié)構(gòu)進(jìn)行改進(jìn),優(yōu)化了面積和關(guān)鍵路徑等特性,提高了解碼性能。該設(shè)計(jì)采用Verilog HDL進(jìn)行建模和仿真,并利用Synopsys公司的相關(guān)工具進(jìn)行了面積和時序分析。
HEVC中,CABAC的解碼流程如圖1所示。主要由三部分組成:上下文模型,二進(jìn)制算術(shù)編碼和反二值化。
圖1 CABAC解碼框圖
1.1上下文模型
語法元素使用的上下文概率模型都被唯一的概率模型索引號ctxIdx標(biāo)識,每一個ctxIdx與兩個概率模型變量有關(guān):最大概率符號MPS和概率狀態(tài)索引pstate。MPS表示待解碼bit最可能出現(xiàn)的符號,取值為0或1;反之,LPS表示待解碼bit最不可能出現(xiàn)的符號。CABAC中為LPS設(shè)定了64個值,pstate與LPS概率值一一對應(yīng),在獲得初始概率模型變量后,就可以對符號進(jìn)行二進(jìn)制算術(shù)編碼和概率模型參數(shù)的自適應(yīng)更新。當(dāng)MPS出現(xiàn)時,當(dāng)前概率模型的pstate變大;當(dāng)LPS出現(xiàn)時,當(dāng)前概率模型的pstate變??;當(dāng)概率模型的pstate為0時,表明MPS和LPS概率相同,若再出現(xiàn)LPS,則MPS和LPS必須交換[4]。
1.2二進(jìn)制算術(shù)編碼
二進(jìn)制算術(shù)解碼根據(jù)給定的概率模型對區(qū)間進(jìn)行遞歸的劃分,由兩個變量進(jìn)行描述:范圍Range(R)和偏移量Offset (O)。Range表示當(dāng)前解碼區(qū)間的長度,Offset表示當(dāng)前從碼流中讀取的bit串表示的實(shí)數(shù)在解碼區(qū)間中的相對位置。每解碼一個bit,R和O都要進(jìn)行更新,同時,根據(jù)當(dāng)前解碼出來的值更新上下文模型。經(jīng)過區(qū)間劃分后R變得小于256時,就需要進(jìn)行重新歸一化過程[5-7]。此外,還有兩種特殊情況下的解碼方式:旁路解碼和終止解碼。
1.3反二值化
在HEVC中,常用的二值化方法有截?cái)嗳R斯二元化(TR),K階指數(shù)哥倫布二元化(EGK),定長二元化(FL)和查表法。反二值化是將二進(jìn)制算術(shù)解碼得到的二元串(bin_string),采用相應(yīng)的二值化方法得到當(dāng)前所解語法元素的值,其中每一個這種反二值化后的符號稱之為bin。
文中CABAC解碼器硬件設(shè)計(jì)的總圖框圖如圖2所示,主要由四大模塊構(gòu)成,分別是CABAC Controller模塊、Con-Binarization Controller模塊、Context Cache模塊和 Arithmetic Decoder模塊。
圖2 CABAC硬件設(shè)計(jì)整體框圖
2.1CABAC Controller模塊
該模塊利用當(dāng)前相鄰的宏塊信息 (Neighbor information)和已解碼的語法元素值(SE_value),確定下一個需要進(jìn)行解碼的語法元素類型(syntax_type)。主要由狀態(tài)機(jī)(FSM),語法元素緩存器(SE_buffer)和解碼控制器(Decode_control)三部分組成,如圖3所示。其中FSM是CABAC的核心控制部分,控制整個解碼流程,該模塊主要輸出結(jié)果是需要進(jìn)行解碼的syntax_type;SE_buffer用來存儲 FSM輸出的 syntax_type和Context.
Cache模塊的控制信號;Decode_control用來控制輸出,把解碼后的信息傳遞給視頻解碼器中CABAC的下一環(huán)節(jié)。
圖3 CABAC Controller結(jié)構(gòu)圖
2.2Con-Binarization Controller模塊
Con-Binarization Controller模塊包含反二值化(Con-Binarization)和上下文模型選擇(Context Select)兩部分,如圖4所示。Context Select模塊利用輸入的syntax_type和bin_string的索引號(binIdx)確定其概率模型索引號ctxIdx,另外一個重要的輸出信號ctx_idx用來確定所選概率模型的存儲地址;Con-Binarization模塊除了選擇相應(yīng)的二值化方法進(jìn)行反二值化外,還包括對bin_string進(jìn)行串匹配以決定是否完成一個語法元素的解碼,若匹配成功則輸出一個語法元素,并根據(jù)碼流語法規(guī)定進(jìn)行ctxIdx的更新,用來選擇下一個bin的概率模型。
圖4 Con-Binarization Controller結(jié)構(gòu)圖
2.3Context Cache模塊
在CABAC的解碼過程中,每解碼完一比特,就會對它所用的上下文模型(context)進(jìn)行更新,以實(shí)現(xiàn) 對視頻流實(shí)時統(tǒng)計(jì)特性的跟蹤。Context Cache模塊的組成如圖5所示。為了減少數(shù)據(jù)在SRAM、上下文緩存器(context buffer)和乒乓緩存器(cache0,cache1)之間的交換頻率,context buffer必須要存儲所有的context,乒乓緩存器根據(jù)ctx_idx從context buffer中讀取 context和存儲更新的 context。在解碼時,cache0和cache1只有一個處于工作模式用來解碼當(dāng)前的語法元素,另外一個用來讀取下一個語法元素的context。乒乓緩存器后的選擇器(MUX)用來確定cache0和cache1哪一個處于工作模式,利用transIdxLps,transIdxMps和TabRLPSFULL3個查找表來進(jìn)行概率模型索引和概率值得更新,最終得到3個變量RLPS,shift_bitLPS,new_RLPS的值作為Arithmetic Decoder模塊的輸入?yún)?shù)。
圖5 Context Cache結(jié)構(gòu)圖
2.4Arithmetic Decoder模塊
本模塊是CABAC的主要模塊,用來實(shí)現(xiàn)自適應(yīng)的二進(jìn)制算術(shù)編碼,輸出的是解碼出來的 bin_string。主要包括Decode_decision、Decode_bypass和 Decode_terminate 3個模塊,其內(nèi)部結(jié)構(gòu)如圖6所示。對本模塊的硬件優(yōu)化主要是針對Decode_decision模塊,是Arithmetic Decoder模塊的核心部分。由于傳統(tǒng)CABAC解碼結(jié)構(gòu)各級之間的強(qiáng)相關(guān)性[8-11],使得區(qū)間劃分,bin裁決,重歸一化只能串行工作,嚴(yán)重影響了解碼速率。下面詳述本設(shè)計(jì)中采用的4種優(yōu)化方案,如圖7所示。
圖6 Arithmetic Decoder結(jié)構(gòu)圖
圖7 Decode_decision模塊的優(yōu)化
1)猜測執(zhí)行
猜測執(zhí)行是把所有可能的輸入值對應(yīng)的結(jié)構(gòu)都計(jì)算出來,在前級計(jì)算的同時后級按所有可能的輸入并行的進(jìn)行后級計(jì)算,再以前級計(jì)算結(jié)束的結(jié)果選擇后級計(jì)算結(jié)果中正確的那個,實(shí)現(xiàn)前后兩級的并行化。在此設(shè)計(jì)中,把bin裁決的結(jié)果作為最佳猜測對象,由于裁決結(jié)果位寬只占一個比特,且處于CABAC解碼器的關(guān)鍵路徑中,驅(qū)動電路只需復(fù)制兩份,即MPS和LPS同時獨(dú)立的進(jìn)行解碼,最后根據(jù)真實(shí)的bin裁決結(jié)果進(jìn)行選通。
2)局部查找表優(yōu)化
局部查找表優(yōu)化是指將LPS解碼部分的歸一化運(yùn)算并入到查找表TabRLPS中,其實(shí)質(zhì)是當(dāng)面積在可以接受的范圍內(nèi),以面積來換速度。
3)邏輯平衡
LPS對應(yīng)的區(qū)間長度RLPS是由查找表TabRLPS得到的,索引值為R的次高兩位(R[7:6])和pstate,由于R[7:6]處于bin解碼的關(guān)鍵路徑中,而pstate不是,所以先查索引值pstate,再通過R[7:6]進(jìn)行結(jié)果選擇,來緩解R端輸入時序比較緊張的局面[12-14]。
4)運(yùn)算順序優(yōu)化
采用如下公式來交換兩個減法的運(yùn)算順序使得bin裁決的輸出對各輸入端達(dá)到均衡。其中OLPS表示bin裁決結(jié)果為LPS時,更新的O值。
2.5流水線設(shè)計(jì)
CABAC解碼器采用三級流水線結(jié)構(gòu),第一級流水線FSM控制哪個語法元素要進(jìn)行解碼和產(chǎn)生相應(yīng)的上下文模型索引;第二級流水線從SE_buffer中獲取語法元素,從Context Cache中取出context并鎖存起來;第三級流水線進(jìn)行當(dāng)前比特的算術(shù)解碼,解碼后的bin_string進(jìn)行反二值化得到相應(yīng)語法元素的值。采用流水線設(shè)計(jì),使解碼時語法元素的延時減少了。提高了解碼速度,同時,對硬件實(shí)現(xiàn)的時序也有利。
根據(jù)上文CABAC解碼器的硬件結(jié)構(gòu),采用Verilog HDL進(jìn)行建模,并使用NC_verilog進(jìn)行了驗(yàn)證,采用Synopsys公司的Design Compiler進(jìn)行綜合,綜合面積為48K個邏輯門;Prime Time進(jìn)行靜態(tài)時序分析,沒有時序違規(guī);工作頻率為250 MHz,解碼速度達(dá)到1 bit/cycle,滿足高清視頻需求。
文中通過對面積、關(guān)鍵路徑等優(yōu)化,設(shè)計(jì)了一個高性能的CABAC解碼器硬件結(jié)構(gòu),并采用流水線設(shè)計(jì),顯著提高了CABAC的解碼速度,充分利用了存儲空間,在高清視頻解碼器中具有很大的應(yīng)用價值[15]。
[1]陳杰,丁丹丹,虞露.高清CABAC解碼器的優(yōu)化設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(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視頻解碼器的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程,2008,34(19):236-228.
[4]萬帥,楊付正.新一代高效視頻編碼H.265/HEVC:原理、標(biāo)準(zhǔn)與實(shí)現(xiàn)[M].北京:電子工業(yè)出版社,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]胡海明,李金良.基于上下文的自適應(yīng)二階二進(jìn)制算術(shù)編碼算法[J].計(jì)算機(jī)工程與設(shè)計(jì),2006,27(17):3267-3269.
[11]Zhang P.Fast CABAC decoding architecture[J].Electronics Letters,2008,44(24):1394-1395.
[12]朱敏,劉雷波,王星,等.一種CABAC解碼引擎的芯片實(shí)現(xiàn)[J].電路與系統(tǒng)學(xué)報(bào),2013,18(2):6-11.
[13]張秀麗,萬忠,鮑程紅.基于碼頭分組的CAVLC解碼算法優(yōu)化[J].電路與系統(tǒng)學(xué)報(bào),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解碼器的優(yōu)化設(shè)計(jì)[J].有限電視技術(shù),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—),男,湖南益陽人,碩士研究生。研究方向:數(shù)字芯片設(shè)計(jì)。