www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁(yè) > 模擬 > 模擬
[導(dǎo)讀]在H.264解碼器中,為了能夠完成高清碼流的實(shí)時(shí)解碼任務(wù),本文提出了一種CABAC硬件加速器的設(shè)計(jì)方案。

摘  要:在H.264解碼器中,為了能夠完成高清碼流的實(shí)時(shí)解碼任務(wù),本文提出了一種CABAC硬件加速器的設(shè)計(jì)方案。通過(guò)采用高效率的狀態(tài)機(jī)和流水線結(jié)構(gòu),該方案可在每1~3個(gè)時(shí)鐘周期內(nèi)完成1bit數(shù)據(jù)的解碼。本設(shè)計(jì)在中芯國(guó)際0.18mm CMOS工藝標(biāo)準(zhǔn)單元庫(kù)的基礎(chǔ)上進(jìn)行綜合,硬件加速器面積為0.38mm2,工作時(shí)鐘頻率可達(dá)166MHz。
關(guān)鍵詞:CABAC;H.264;硬件加速器

引言
    H.264是由國(guó)際電信聯(lián)盟(ITU)和國(guó)際標(biāo)準(zhǔn)化組織(ISO)共同制定的新一代視頻編碼標(biāo)準(zhǔn),該標(biāo)準(zhǔn)采用一系列先進(jìn)的編碼技術(shù),在編碼效率、網(wǎng)絡(luò)適應(yīng)性等諸多方面都超越了以往的視頻標(biāo)準(zhǔn)。H.264有兩種熵編碼方案:一種是從可變長(zhǎng)編碼方案發(fā)展而來(lái)的基于上下文的自適應(yīng)可變長(zhǎng)編碼CAVLC;另一種是從算術(shù)編碼發(fā)展而來(lái)的基于上下文的自適應(yīng)二進(jìn)制算術(shù)編碼CABAC。與CAVLC相比,CABAC可以節(jié)省約7%的碼流,但增加了10%的計(jì)算時(shí)間。在解高清碼流時(shí),用軟件來(lái)做CABAC這樣復(fù)雜的熵解碼,無(wú)法完成實(shí)時(shí)解碼的任務(wù),因此,設(shè)計(jì)硬件加速器是非常必要的。

CABAC解碼算法
    在H.264解碼器的輸入碼流中,數(shù)據(jù)的基本單位是句法元素(Syntax Element),碼流是由一個(gè)個(gè)句法元素依次銜接而成的。每個(gè)句法元素由若干比特組成,表示某個(gè)特定的物理意義。在H.264定義的碼流中,句法元素被組織成有層次的結(jié)構(gòu),分別描述序列(Sequence)、圖像(Picture)、片(Slice)、宏塊(Macroblock)、子宏塊(Subblock)五個(gè)層次的信息,CABAC主要負(fù)責(zé)對(duì)片層以下的句法元素進(jìn)行解碼。
CABAC解碼的總體過(guò)程可以分為三個(gè)步驟:初始化、二進(jìn)制算術(shù)解碼歸一化、反二進(jìn)制。

初始化
     該過(guò)程在每一個(gè)片開(kāi)始時(shí)執(zhí)行,包括上下文模型變量(Context Variable)的初始化和解碼引擎(Decoding Engine)的初始化。

二進(jìn)制算術(shù)解碼和歸一化
    二進(jìn)制算術(shù)解碼是CABAC解碼的核心部分,該過(guò)程實(shí)現(xiàn)1bit數(shù)據(jù)的解碼,對(duì)每個(gè)句法元素進(jìn)行解碼都需要調(diào)用該過(guò)程。H.264中二進(jìn)制算術(shù)解碼有三種模式:規(guī)則解碼(Decode Decision)、旁路解碼(Decode Bypass)和結(jié)束解碼(Decode Terminate)。對(duì)不同句法元素進(jìn)行解碼時(shí),分別調(diào)用這三種模式的一種或多種。

反二進(jìn)制化
    CABAC定義了四種二進(jìn)制化方法:一元碼(Unary)、截?cái)嘁辉a(Truncated Unary)、K階指數(shù)哥倫布碼(kth order Exp-Golomb)和定長(zhǎng)碼(Fixed-Length)。一個(gè)句法元素可以對(duì)應(yīng)一種或兩種上述二進(jìn)制化方法,但特殊的是,句法元素mb_type和sub_mb_type的反二進(jìn)制化獨(dú)立于上述四種方法,它們通過(guò)查表來(lái)實(shí)現(xiàn)。
  
CABAC硬件加速器的架構(gòu)設(shè)計(jì)
H.264解碼器的軟/硬件劃分
    H.264解碼過(guò)程采用軟/硬件聯(lián)合的解碼方案,整個(gè)解碼器由32位CPU、DSP結(jié)構(gòu)的運(yùn)算單元和硬件加速器組成。CABAC熵解碼部分,主要是一些判斷和分支操作,數(shù)據(jù)接口、吞吐量不大,這些任務(wù)由軟件和硬件加速器共同完成。本文設(shè)計(jì)的CABAC解碼模塊就是一個(gè)CABAC硬件加速器。

CABAC硬件加速器的總體構(gòu)架
    CABAC硬件加速器的總體架構(gòu)如圖1所示。其總體架構(gòu)分為兩層:頂層是CABAC_TOP;底層有7個(gè)模塊,包括CABAC_Center_ Control_Unit、Context、 Neighbor_MB_Information, Context_Init、AC_next_ state_LPS、 AC_next_state_MPS和RangeLPS。

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

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

    為了達(dá)到該目標(biāo),CABAC硬件加速器的設(shè)計(jì)必須對(duì)核心的二進(jìn)制算術(shù)解碼進(jìn)行優(yōu)化。根據(jù)歸一化算法的特點(diǎn),即循環(huán)的次數(shù)可由輸入的codIRange、codIOffset和查表得到的codIRangeLPS事先判斷出來(lái),因此可以合并二進(jìn)制化和歸一化這兩個(gè)步驟,使其在1個(gè)時(shí)鐘周期內(nèi)完成。由于篇幅有限,下面僅以三種模式中的規(guī)則解碼為例,說(shuō)明二進(jìn)制算術(shù)解碼和歸一化的硬件化,旁路解碼和結(jié)束解碼可參考H.264協(xié)議。

    規(guī)則解碼的二進(jìn)制算術(shù)解碼和歸一化過(guò)程主要包括比較、減法、查表、移位操作。在H.264中,為了減少計(jì)算的復(fù)雜度,CABAC首先建立一個(gè)64×4的二維表格rangeTabLPS[64][4],存放預(yù)先計(jì)算好的乘法結(jié)果。表格的入口參數(shù)是pStateIdx和qCodIRangeIdx,其中qCodIRangeIdx由變量codIRange量化而來(lái),量化方法是(codIRange>>6)&3。其Verilog HDL實(shí)現(xiàn)如下:
assign qCodIRangeIdx= (codIRange>>6)&2'b11;
always@(pStateIdx or qCodIRangeIdx)
begin 
case{pStateIdx, qCodIRangeIdx}
           0:  codIRangeLPS=0;   
             …  …     
           255:codIRangeLPS=63;
       endcase
end

    建立了概率模型和乘法模型后,在遞進(jìn)計(jì)算過(guò)程中CABAC必須保存一下變量:當(dāng)前區(qū)間的下限codIOffset、當(dāng)前區(qū)間的大小codIRange、當(dāng)前MPS(大概率符號(hào))字符valMPS、LPS(小概率符號(hào))的概率編號(hào)pStateIdx。transIdxLPS[pStateIdx]和transIdxMPS[pStateIdx]是兩個(gè)深度為64項(xiàng)的表格,其中pStateIdx的取值為0~63。接下來(lái)是歸一化判斷,當(dāng)codIRange小于0x0100時(shí),需進(jìn)行歸一化。這樣就能在1個(gè)時(shí)鐘周期內(nèi)完成二進(jìn)制化和歸一化兩個(gè)步驟,其Verilog HDL實(shí)現(xiàn)如下:
always@(posedge clk or negedge rst)
if( !rst)
     ... ...
  else
    begin 
        if(codIOffset>= codIRange-codIRangeLPS)
            begin
            binVal<=~valMPS;
        codIOffset<=codIOffset-(codIRange-codIRangeLPS);
        codIRange<=codIRangeLPS;
 if(pStateIdx==0) 
  valMPS<=1-valMPS;            pStateIdx<=transIdxLPS[pStateIdx];          
             end      
         else
             begin
               binVal<=valMPS;
 pStateIdx<=transIdxMPS[pStateIdx];         
             end 
         while(codIRange<0x100)   //注:此語(yǔ)句不可綜合
           begin
              codIRange<= (codIRange-codIRangeLPS)<<1;
  codIOffset<=(codIOffset<<1) |read_bits(1);                    
           end    
    end 

CABAC的加速策略
狀態(tài)機(jī)的設(shè)計(jì)
    二進(jìn)制算術(shù)解碼的狀態(tài)機(jī)是本設(shè)計(jì)的核心,該部分效率的高低將直接影響到CABAC硬件加速器的解碼速度。在CABAC模塊沒(méi)有被啟動(dòng)時(shí),狀態(tài)機(jī)將一直停留在初始狀態(tài),當(dāng)一個(gè)新片開(kāi)始時(shí),初始化解碼引擎;當(dāng)收到CPU發(fā)出的解碼請(qǐng)求時(shí),首先進(jìn)入預(yù)解碼狀態(tài),讀取上下文模型變量,然后在下一個(gè)時(shí)鐘進(jìn)入二進(jìn)制算術(shù)解碼狀態(tài),完成1bit數(shù)據(jù)的解碼。在CABAC解碼過(guò)程中,系統(tǒng)會(huì)根據(jù)句法元素的種類(lèi)和當(dāng)前數(shù)據(jù)的位置選擇解碼模式。

流水線的設(shè)計(jì)
    CABAC對(duì)1bit數(shù)據(jù)進(jìn)行解碼的過(guò)程可分為兩個(gè)步驟:讀取上下文模型變量、解碼并更新上下文模型變量。本設(shè)計(jì)采用兩級(jí)流水線結(jié)構(gòu),在對(duì)當(dāng)前數(shù)據(jù)進(jìn)行解碼的同時(shí),可讀取下個(gè)數(shù)據(jù)的上下文模型變量,因此加快了解碼速度。

碼流讀取的雙緩沖設(shè)計(jì)
    在進(jìn)行解碼的時(shí)候,為了提高傳輸效率,采用雙緩沖的形式。在總線給其中一個(gè)緩沖傳輸數(shù)據(jù)的時(shí)候,解碼器可從另外一個(gè)緩沖里讀取數(shù)據(jù)進(jìn)行解碼,從而使傳輸和解碼同時(shí)進(jìn)行,有效提高了傳輸效率。

設(shè)計(jì)結(jié)果與性能仿真
    在設(shè)計(jì)完成后,利用JVT提供的標(biāo)準(zhǔn)測(cè)試碼流進(jìn)行測(cè)試,通過(guò)了仿真驗(yàn)證。結(jié)果顯示,本設(shè)計(jì)平均每2個(gè)時(shí)鐘周期可完成1bit數(shù)據(jù)的解碼。

    在SMIC 0.18mm CMOS工藝標(biāo)準(zhǔn)單元庫(kù)的基礎(chǔ)上進(jìn)行DC(Design Compile)綜合,硬件加速器的面積為0.38mm2(不包括片外SRAM所占用的面積),工作頻率可達(dá)166MHz,達(dá)到了預(yù)期要求。

    為了顯示硬件加速器的優(yōu)勢(shì),選擇參考軟件JM7.4的函數(shù)biari_decode_symbol完成二進(jìn)制算術(shù)解碼和歸一化。Visual C++6.0編譯器的編譯結(jié)果顯示該函數(shù)使用了109個(gè)匯編指令,因此用軟件完成1bit數(shù)據(jù)的解碼至少需要100個(gè)時(shí)鐘周期。而利用本設(shè)計(jì)完成同樣的步驟時(shí),最多只需3個(gè)時(shí)鐘周期,很好地達(dá)到了加速器的作用。
  
結(jié)語(yǔ)
    由于采用了一系列的優(yōu)化方案,同時(shí),在設(shè)計(jì)時(shí)考慮了解碼速度及解碼系統(tǒng)中各個(gè)模塊之間的協(xié)調(diào),本文實(shí)現(xiàn)了熵解碼CABAC的快速解碼,能完成高清碼流的實(shí)時(shí)解碼任務(wù),在視頻解碼芯片中有很好的應(yīng)用價(jià)值。

參考文獻(xiàn)
1  Detlev Marpe,Heiko Schwarz,Thomas Wiegand. Context-Based Adaptive Binary Arithmetic Coding in the H.264/AVC Video Compression Standard[J]. IEEE Transactions on Circuit and Systems for Video Technology,2003,13(7):620-636
2  畢厚杰. 新一代視頻壓縮編碼標(biāo)準(zhǔn)-H.264/AVC[M]. 北京:人民郵電出版社,2005
3  JVT-G050, Draft ITU-T Recommendation H.264 and Draft ISO/IEC 14496-10 AVC,2005[S]

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專(zhuān)欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

成都2022年10月19日 /美通社/ -- 近期,平安養(yǎng)老險(xiǎn)積極籌備個(gè)人養(yǎng)老金的產(chǎn)品設(shè)計(jì)和系統(tǒng)開(kāi)發(fā)工作,發(fā)展多樣化的養(yǎng)老金融產(chǎn)品,推動(dòng)商業(yè)養(yǎng)老保險(xiǎn)、個(gè)人養(yǎng)老金、專(zhuān)屬商業(yè)養(yǎng)老保險(xiǎn)等產(chǎn)品供給。 搭養(yǎng)老政策東風(fēng) ...

關(guān)鍵字: 溫度 BSP 東風(fēng) 大眾

廣東佛山2022年10月19日 /美通社/ -- 空間是人居生活的基礎(chǔ)單元,承載著生存與活動(dòng)的最基本功能。而對(duì)于理想空間的解構(gòu)意義卻在物理性容器之外,體現(xiàn)出人們對(duì)于空間和生活深層關(guān)系的思考,同時(shí)也塑造著人與空間的新型連接...

關(guān)鍵字: 溫度 BSP 智能化 進(jìn)程

上海2022年10月19日 /美通社/ -- 10月17日晚間,安集科技披露業(yè)績(jī)預(yù)告。今年前三季度,公司預(yù)計(jì)實(shí)現(xiàn)營(yíng)業(yè)收入7.54億元至8.33億元,同比增長(zhǎng)60.24%至77.03%;歸母凈利潤(rùn)預(yù)計(jì)為1.73億...

關(guān)鍵字: 電子 安集科技 BSP EPS

北京2022年10月19日 /美通社/ -- 10月18日,北京市經(jīng)濟(jì)和信息化局發(fā)布2022年度第一批北京市市級(jí)企業(yè)技術(shù)中心創(chuàng)建名單的通知,諾誠(chéng)健華正式獲得"北京市企業(yè)技術(shù)中心"認(rèn)定。 北京市企業(yè)技...

關(guān)鍵字: BSP ARMA COM 代碼

北京2022年10月18日 /美通社/ -- 10月14日,國(guó)際數(shù)據(jù)公司(IDC)發(fā)布《2022Q2中國(guó)軟件定義存儲(chǔ)及超融合市場(chǎng)研究報(bào)告》,報(bào)告顯示:2022年上半年浪潮超融合銷(xiāo)售額同比增長(zhǎng)59.4%,近5倍于...

關(guān)鍵字: IDC BSP 數(shù)字化 數(shù)據(jù)中心

上海2022年10月18日 /美通社/ -- 2022年9月5日,是首都銀行集團(tuán)成立60周年的紀(jì)念日。趁著首都銀行集團(tuán)成立60周年與首都銀行(中國(guó))在華深耕經(jīng)營(yíng)12年的“大日子”,圍繞作為外資金融機(jī)構(gòu)對(duì)在華戰(zhàn)略的構(gòu)想和業(yè)...

關(guān)鍵字: 數(shù)字化 BSP 供應(yīng)鏈 控制

東京2022年10月18日  /美通社/ -- NIPPON EXPRESS HOLDINGS株式會(huì)社(NIPPON EXPRESS HOLDINGS, INC.)旗下集團(tuán)公司上海通運(yùn)國(guó)際物流有限公司(Nipp...

關(guān)鍵字: 溫控 精密儀器 半導(dǎo)體制造 BSP

廣州2022年10月18日 /美通社/ -- 10月15日,第 132 屆中國(guó)進(jìn)出口商品交易會(huì)("廣交會(huì)")于"云端"開(kāi)幕。本屆廣交會(huì)上高新技術(shù)企業(yè)云集,展出的智能產(chǎn)品超過(guò)140,...

關(guān)鍵字: 中國(guó)智造 BSP 手機(jī) CAN

要問(wèn)機(jī)器人公司哪家強(qiáng),波士頓動(dòng)力絕對(duì)是其中的佼佼者。近來(lái)年該公司在機(jī)器人研發(fā)方面獲得的一些成果令人印象深刻,比如其開(kāi)發(fā)的機(jī)器人會(huì)后空翻,自主爬樓梯等。這不,波士頓動(dòng)力又發(fā)布了其機(jī)器人組團(tuán)跳男團(tuán)舞的新視頻,表演的機(jī)器人包括...

關(guān)鍵字: 機(jī)器人 BSP 工業(yè)機(jī)器人 現(xiàn)代汽車(chē)

南京2022年10月17日 /美通社/ -- 日前《2022第三屆中國(guó)高端家電品牌G50峰會(huì)》于浙江寧波落幕,來(lái)自兩百余名行業(yè)大咖、專(zhuān)家學(xué)者共同探討了在形勢(shì)依然嚴(yán)峻的當(dāng)下,如何以科技創(chuàng)新、高端化轉(zhuǎn)型等手段,幫助...

關(guān)鍵字: LINK AI BSP 智能家電

模擬

31144 篇文章

關(guān)注

發(fā)布文章

編輯精選

技術(shù)子站

關(guān)閉