国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

H.264解碼器中CABAC硬件加速器的實現

發布時間:2010-12-14 12:01    發布者:designer
H.264是由國際電信聯盟(ITU)和國際標準化組織(ISO)共同制定的新一代視頻編碼標準,該標準采用一系列先進的編碼技術,在編碼效率、網絡適應性等諸多方面都超越了以往的視頻標準。H.264有兩種熵編碼方案:一種是從可變長編碼方案發展而來的基于上下文的自適應可變長編碼CAVLC;另一種是從算術編碼發展而來的基于上下文的自適應二進制算術編碼CABAC。與CAVLC相比,CABAC可以節省約7%的碼流,但增加了10%的計算時間。在解高清碼流時,用軟件來做CABAC這樣復雜的熵解碼,無法完成實時解碼的任務,因此,設計硬件加速器是非常必要的。

CABAC解碼算法 在H.264解碼器的輸入碼流中,數據的基本單位是句法元素(Syntax Element),碼流是由一個個句法元素依次銜接而成的。每個句法元素由若干比特組成,表示某個特定的物理意義。在H.264定義的碼流中,句法元素被組織成有層次的結構,分別描述序列(Sequence)、圖像(Picture)、片(Slice)、宏塊(Macroblock)、子宏塊(subblock)五個層次的信息,CABAC主要負責對片層以下的句法元素進行解碼。

CABAC解碼的總體過程可以分為三個步驟:初始化、二進制算術解碼歸一化、反二進制。

初始化

該過程在每一個片開始時執行,包括上下文模型變量(ContextVariable)的初始化和解碼引擎(Decoding Engine)的初始化。

二進制算術解碼和歸一化

二進制算術解碼是CABAC解碼的核心部分,該過程實現1bit數據的解碼,對每個句法元素進行解碼都需要調用該過程。H.264中二進制算術解碼有三種模式:規則解碼(Decode Decision)、旁路解碼(Decode Bypass)和結束解碼(Decode Terminate)。對不同句法元素進行解碼時,分別調用這三種模式的一種或多種。

反二進制化

CABAC定義了四種二進制化方法:一元碼(Unary)、截斷一元碼(Truncated Unary)、K階指數哥倫布碼(kth order Exp-Golomb)和定長碼(Fixed-Length)。一個句法元素可以對應一種或兩種上述二進制化方法,但特殊的是,句法元素mb_type和sub_mb_type的反二進制化獨立于上述四種方法,它們通過查表來實現。

CABAC硬件加速器的架構設計

H.264解碼器的軟/硬件劃分

H.264解碼過程采用軟/硬件聯合的解碼方案,整個解碼器由32位CPU、DSP結構的運算單元和硬件加速器組成。CABAC熵解碼部分,主要是一些判斷和分支操作,數據接口、吞吐量不大,這些任務由軟件和硬件加速器共同完成。本文設計的CABAC解碼模塊就是一個CABAC硬件加速器。

CABAC硬件加速器的總體構架

CABAC硬件加速器的總體架構如圖1所示。其總體架構分為兩層:頂層是CABAC_TOP;底層有7個模塊,包括CABAC_Center_Control_Unit、Context、Neighbor_MB_Information,Context_Init、AC_next_state_LPS、AC_next_state_MPS和RangeLPS。





CABAC_Center_Control_Unit模塊負責上下文模型變量的初始化,解句法元素,更新Context,并將解出的殘差數據傳給IQ&IDCT模塊;Context模塊是雙口RAM,存放459個上下文模型變量,可同時對一個地址的上下文模型變量進行讀操作并對另外一個地址的上下文模型變量進行寫操作;Neighbor_MB_Information模塊是SRAM,存放宏塊信息,CABAC解碼器在解析當前宏塊中的句法元素時,需要參考上面和左面宏塊的信息,因此,需要在該SRAM內保存圖像中當前宏塊的上一行宏塊和該行之前宏塊的信息,每解完一個宏塊更新該SRAM;Context_Init模塊是一塊片內ROM,用于初始化變量; 3 個查找表模塊AC_next_state_LPS、AC_next_state_MPS和RangeLPS由組合邏輯實現,用于二進制算術解碼過程中的查表運算。

CABAC的硬件化分析

本設計的目標是使整個H.264解碼器的芯片能夠對高清圖像(1920×1088)進行實時解碼。假設芯片工作在166MHz的頻率下,圖像播放速率是25fps,則平均解一個宏塊的時間是823個時鐘周期。考慮到H.264熵解碼部分的運算總體上是串行解碼,并行性較差,因此CABAC硬件加速器需要在3個時鐘周期內完成1bit數據的解碼。假設視頻圖像的壓縮比為20:1,YUV為4:2:0取樣,因為取樣值是8bit,則每個像素為8bit×1.5=12bit。CABAC的解碼率約為1:1.2,所以CABAC要解的碼流是(1920×1088×12bit/20)×1.2,約1.43Mb。芯片工作頻率是166MHz,每3個時鐘解出1 bit,則解碼數據率約為55.3Mbps,本設計在解碼時CABAC占用了90%,約為49.8Mbps。因此解碼速度為49.8/1.43,約34.7fps,即ls可以解34.7幀,則解1幀(1920×1088)大約需要28.8ms。

為了達到該目標,CABAC硬件加速器的設計必須對核心的二進制算術解碼進行優化。根據歸一化算法的特點,即循環的次數可由輸入的codIRange、codIOffset和查表得到的codIRangeLPS事先判斷出來,因此可以合并二進制化和歸一化這兩個步驟,使其在1個時鐘周期內完成。由于篇幅有限,下面僅以三種模式中的規則解碼為例,說明二進制算術解碼和歸一化的硬件化,旁路解碼和結束解碼可參考H.264協議。

規則解碼的二進制算術解碼和歸一化過程主要包括比較、減法、查表、移位操作。在H.264中,為了減少計算的復雜度,CABAC首先建立一個64×4的二維表格rangeTabLPS[64],存放預先計算好的乘法結果。表格的入口參數是pStateIdx和qCodRangeIdx,其中qCodIRangeIdx由變量codIRange量化而來, 量化方法是(codIRange>>6)&3。其Verilog HDL實現如下:




建立了概率模型和乘法模型后,在遞進計算過程中CABAC必須保存一下變量:當前區間的下限codIOffSet、當前區間的大小codIRange、當前MPS(大概率符號)字符valMPS、LPS(小概率符號)的概率編號p S t a t e I d X。transIdxLPS[pStateIdX]和transIdxMPS[pStateIdx]是兩個深度為64項的表格,其中pStateIdx的取值為0~63。接下來是歸一化判斷,當codIRange小于0x0l00時,需進行歸一化。這樣就能在1個時鐘周期內完成二進制化和歸一化兩個步驟,其Verilog HDL實現如下:









CABAC的加速策略

狀態機的設計

二進制算術解碼的狀態機是本設計的核心,該部分效率的高低將直接影響到CABAC硬件加速器的解碼速度。在CABAC模塊沒有被啟動時,狀態機將一直停留在初始狀態,當一個新片開始時,初始化解碼引擎;當收到CPU發出的解碼請求時,首先進入預解碼狀態,讀取上下文模型變量,然后在下一個時鐘進入二進制算術解碼狀態,完成1bit數據的解碼。在CABAC解碼過程中,系統會根據句法元素的種類和當前數據的位置選擇解碼模式。

流水線的設計

CABAC對1bit數據進行解碼的過程可分為兩個步驟:讀取上下文模型變量、解碼并更新上下文模型變量。本設計采用兩級流水線結構,在對當前數據進行解碼的同時,可讀取下個數據的上下文模型變量,因此加快了解碼速度。

碼流讀取的雙緩沖設計

在進行解碼的時候,為了提高傳輸效率,采用雙緩沖的形式。在總線給其中一個緩沖傳輸數據的時候,解碼器可從另外一個緩沖里讀取數據進行解碼,從而使傳輸和解碼同時進行,有效提高了傳輸效率。

設計結果與性能仿真

在設計完成后,利用JVT提供的標準測試碼流進行測試,通過了仿真驗證。結果顯示,本設計平均每2個時鐘周期可完成1bit數據的解碼。

在SMIC O.18μm CMOS工藝標準單元庫的基礎上進行DC(DesignCompile)綜合,硬件加速器的面積為0.38mm2(不包括片外SRAM所占用的面積),工作頻率可達166MHz,達到了預期要求。

為了顯示硬件加速器的優勢,選擇參考軟件JM7.4的函數biari_decode_symbol完成二進制算術解碼和歸一化。Visual C++6.0編譯器的編譯結果顯示該函數使用了109個匯編指令,因此用軟件完成1bit數據的解碼至少需要100個時鐘周期。而利用本設計完成同樣的步驟時,最多只需3個時鐘周期,很好地達到了加速器的作用。

結語

由于采用了一系列的優化方案,同時,在設計時考慮了解碼速度及解碼系統中各個模塊之間的協調,本文實現了熵解碼CABAC的快速解碼,能完成高清碼流的實時解碼任務,在視頻解碼芯片中有很好的應用價值。
本文地址:http://m.qingdxww.cn/thread-46539-1-1.html     【打印本頁】

本站部分文章為轉載或網友發布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
您需要登錄后才可以發表評論 登錄 | 立即注冊

廠商推薦

  • Microchip視頻專區
  • 使用SAM-IoT Wx v2開發板演示AWS IoT Core應用程序
  • 使用Harmony3加速TCP/IP應用的開發培訓教程
  • 集成高級模擬外設的PIC18F-Q71家族介紹培訓教程
  • 探索PIC16F13145 MCU系列——快速概覽
  • 貿澤電子(Mouser)專區

相關視頻

關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表
主站蜘蛛池模板: 婷婷综合缴情亚洲狠狠图片| 日本视频一区二区免费观看| 亚洲一卡久久4卡5卡6卡7卡| 视频在线观看一区二区三区| 日本道久久| 婷婷中文在线| 亚洲精品亚洲九十七页| 国产AV国片精品无套内谢无码| 美国69xxxx59| 窝窝女人体国产午夜视频| 香蕉久草视频| 婷婷在线免费视频| 亚洲图区综合| 超碰人人澡人人胔| 美女脱精光让男生桶下面| 亚洲欧美高清在线精品一区| 亚洲国产青草| 日本三级网站在线线观看| 色呦呦网站入口| 有色影院| 伦理电影2499伦理片| 亚洲一区成人| 欧美一级视频免费看| 午夜免费在线观看| 亚洲一区色图| 久久99精品久久久久久园产越南| 综合激情区视频一区视频二区| 亚洲综合91| 天天干成人网| 日本片网址| 乌克兰一级片| 99视频免费播放| 我年轻漂亮的继坶2中字在线播放| 四虎国产精品免费观看| 日韩中文字幕精品免费一区| 丝瓜色版| 76人遣返航班上71人呈阳性| 日韩精品在线观看免费| 亚洲精品欧洲精品| 亚洲国产高清精品线久久| 亚洲欧美综合在线观看|