ITU-T(國際電信聯(lián)盟)和MPEG(運動圖像專家組)聯(lián)合推出了新一代視頻壓縮標準H.264/MPEG一4-10 AVC。
它在DCT變換、熵編碼、去塊濾波等方面采用了一系列新技術,在相同的重建圖像質量下比H.263和MPEG-4節(jié)約了50%的碼率,在高碼率應用中表現(xiàn)更加優(yōu)越。同時,它具有良好的網(wǎng)絡親和性,對網(wǎng)絡傳輸具有更好的支持。
但是,在獲得優(yōu)越性能的同時,H.264編碼和解碼的計算量和復雜度均有大幅度提升。H.264算法在編碼端比H.263復雜3倍以上,在解碼端復雜2倍左右。對于較高分辨率的視頻源,單純依靠軟件方式實現(xiàn)H.264視頻壓縮算法,往往不能勝任,尤其難以進行實時解碼。因此,采用硬件方式實現(xiàn)H.264視頻壓縮算法具有重要的意義。
本文的研究目標是設計H.264標準中的Exp-Golomb解碼器,在對其算法進行深入探討的基礎上,提出了一種高效且低成本的ASIC實現(xiàn)方案。
Exp-Golomb編碼原理及解碼算法分析
在H.264基本規(guī)范中,除了殘差變換系數(shù)采用CAVLC編碼方式外,其它句法元素均使用Exp-Golomb編碼。Exp-Golomb編碼是一種有規(guī)則的變長編碼方式,在各類視頻編碼標準中被廣泛應用。Exp-Golomb編碼基于符號的概率統(tǒng)計進行編碼,用短碼字來表示出現(xiàn)概率高的信息,用長碼字來表示出現(xiàn)概率低的信息,碼長與被編碼數(shù)成指數(shù)對應關系,從而使總體平均碼字最短。與定長編碼方式相比,節(jié)省了大量存儲空間。
在H.264中采用的是0階Exp-Golomb編碼,編碼規(guī)則如圖1所示。
Exp-Golomb碼字的邏輯結構為:[M zeros][1][INFO]。其中M個0和中間的1稱為前綴,INFO是M位的信息值,因此,每個Exp-Golomb碼字的長度都為2M+ 1。每個索引字codenum經(jīng)過編碼都可以對應一個如上結構的碼字,它們之間的關系是:
codenum=2M+INFO-1 (1)
由式1可知,進行Exp-Golomb解碼可先探測出碼字前連續(xù)O的個數(shù),再取出后綴,經(jīng)該公式計算即可得到codenum值。在H.264中存在四種Exp-Golomb碼:無符號型ue(v)、有符號型se(v)、映射型me(v)和截斷型te(v)。因此,對于解出的codenum值,根據(jù)句法元素類型的不同有四種映射方式,如表2所示。根據(jù)相應描述完成映射后,輸出syntax即為解碼值。
Exp-Golomb解碼器硬件結構設計
基于以上解碼算法設計的Exp-Golomb解碼器硬件結構如圖1所示。整個系統(tǒng)主要由以下模塊組成:輸入碼流緩沖移位模塊、碼長檢測模塊、 codenum生成模塊以及句法元素映射模塊。系統(tǒng)上電復位后,首先由碼流緩沖移位模塊提供待解碼字,然后由碼長檢測模塊中的首一檢測器探測出連續(xù)0 的個數(shù),即時計算得出當前碼長送至累加器。同時,首一檢測的結果和待解碼字一起送至codenum計算模塊,經(jīng)移位、相減得到codenum值。最后將 codenum送至四個映射單元處理,最終解碼句法元素由選擇器輸出至寄存器。整個解碼流程用一個時鐘周期完成。下文將詳細敘述各功能子模塊的硬件結構。
輸入碼流緩沖移位模塊
輸入碼流緩沖移位模塊是實現(xiàn)H.264實時解碼的關鍵模塊。由于在每個變長解碼流程中,碼長不可能事先確定,所以在解出碼值的同時必須定位下一個碼字。這就要求該模塊具有快速響應和并行輸出的特點。由于H.264中定義Exp-Golomb碼最大碼長不超過32,設計中采用兩個32位寄存器,一個32位桶形移位器及一個累加器的組合來實現(xiàn)該功能,如圖1左端所示。其中,寄存器Rn負責從外部模塊讀取數(shù)據(jù),并和寄存器R1一起作為桶形移位器的輸入; 在每個解碼周期,桶形移位器移出已解碼流的同時還要裝載新的待解碼流;而累加器則計數(shù)已處理碼長,傳送桶形移位器移位長度,判斷并控制R0的讀取和R1的更新。這樣就為后續(xù)處理單元提供了連續(xù)不間斷的碼流。
碼長檢測模塊
該模塊的主要組成部件是一個16位的首一檢測器,其功能是檢測出輸入序列中第一個1之前連續(xù)0的個數(shù)。碼長(2M+1)的獲取只需將首一檢測的結果與一個1位進行位拼接即可實現(xiàn),無需額外電路。另外,考慮到響應速度和路徑延時,首一檢測器的設計采用分組并行探測方式,其硬件結構如圖2所示。輸入的16位碼流分成4組,每組4位均通過一個4輸入與門,得到4位輸出信號后送至優(yōu)先編碼器1,從而判斷出首1所在區(qū)間。同時與門的四個輸出還作為選擇器MUX的控制信號,片選出存在首1的4位數(shù)據(jù),并將其送至優(yōu)先編碼器2,判斷出首1的具體位置。最后將兩個編碼器的輸出進行位拼接即可得到首 1前連續(xù)O的個數(shù)M。
codenum計算模塊和句法元素映射模塊
codenum計算模塊用于實現(xiàn)公式1的功能,設計中采用一個16位的桶形移位器結合一個16位減法器實現(xiàn)。桶形移位器根據(jù)首一檢測結果,重新定位碼流指針,正確輸出碼字中[1][INFO]部分,最后將[1][INFO]減去1即可得到codenum值。
關于句法元素映射模塊,由于H.264中定義了四種:Exp-Golomb碼,如前文表2所描述,存在四種不同的映射方式,本設計中采用四塊組合映射邏輯加一個多選器實現(xiàn),具體結構如圖1右端所示。其中ue直接等于codenum,se與te的映射則分別采用包含二選一電路的簡單組合邏輯實現(xiàn),而me的實現(xiàn)較復雜,需查找H.264標準中定義的運動矢量、量化參數(shù)的映射表格,設計中采用ROM結構實現(xiàn)查表。
綜合、仿真結果與性能分析
在上述硬件架構下,使用Verilog HDL進行Exp-Golomb解碼器電路設計,并在Xilinx公司的ISE 8.2開發(fā)環(huán)境下進行了功能驗證,選擇Virtex 2系列的XC2V250器件。使用Synplify 7.7軟件進行邏輯優(yōu)化與綜合,系統(tǒng)時鐘頻率可達104MHz。ISE完成布局布線后,通過ModelSim 5.8調(diào)用JM86生成的測試向量進行后仿真,最后與軟件的計算結果相比較,驗證了設計的正確性。
使用Synopsys公司的Design Compiler工具在0.18μm的SIMC CMOS工藝條件下,對RTL代碼進行綜合優(yōu)化,時鐘頻率最高可以達到200MHz。通過設置不同的面積、時序及功耗約束條件,縮短關鍵路徑的延時,綜合出等效門數(shù)2276門、時鐘頻率為162MHz的最優(yōu)設計。在此工作頻率下,該Exp-Golomb硬件解碼器電路解出一個句法元素只需耗用單個時鐘周期,因此本設計可滿足H.264高清晰度視頻實時解碼的要求。
結語
本文在分析H.264標準中Exp-Golomb解碼算法的基礎上,提出了一種高效、省面積的Exp-Golomb解碼器架構。在Xilinx公司的 ISE 8.2開發(fā)環(huán)境下使用Virtex 2平臺對設計進行了驗證,使用Synopsys公司的DC工具在SMIC 0.18μm CMOS工藝條件下,對設計進行了面積和時間的優(yōu)化,在162MHz時鐘頻率下工作時,電路等效門數(shù)為2276門,達到了預期目標,為下一步工作打下了良好的基礎。