H.264解碼器中CABAC硬件加速器的實(shí)現(xiàn)_第1頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余1頁(yè)可下載查看

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、h.264解碼器中cabac硬件加速器的實(shí)現(xiàn)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有兩種熵編碼計(jì)劃:一種是從可變長(zhǎng)編碼計(jì)劃進(jìn)展而來(lái)的基于上下文的自適應(yīng)可變長(zhǎng)編碼cavlc;另一種是從算術(shù)編碼進(jìn)展而來(lái)的基于上下文的自適應(yīng)二進(jìn)制算術(shù)編碼cabac。與cavlc相比,cabac可以節(jié)約約7的碼流,但增強(qiáng)了10的計(jì)算時(shí)光。在解高清碼流時(shí),用軟件來(lái)做cabac這樣復(fù)雜的熵解碼,無(wú)法完成實(shí)時(shí)解碼的任務(wù),因此,設(shè)計(jì)硬件加速器是十分須要的。cabac解碼算法在

2、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ì)片層以下的句法元素舉行解碼。cabac解碼的總體過(guò)程可以分為三個(gè)步驟:初始化、二進(jìn)制算術(shù)解碼歸一化、反二進(jìn)制。初始化該過(guò)程在每一個(gè)片開頭時(shí)執(zhí)行,包括上下文模型變量(context variable)的初始

3、化和解碼引擎(decoding engine)的初始化。二進(jìn)制算術(shù)解碼和歸一化二進(jìn)制算術(shù)解碼是cabac解碼的核心部分,該過(guò)程實(shí)現(xiàn)1bit數(shù)據(jù)的解碼,對(duì)每個(gè)句法元素舉行解碼都需要調(diào)用該過(guò)程。h.264中二進(jìn)制算術(shù)解碼有三種模式:規(guī)章解碼(decode decision)、旁路解碼(decode bypass)和結(jié)束解碼(decode terminate)。對(duì)不同句法元素舉行解碼時(shí),分離調(diào)用這三種模式的一種或多種。反二進(jìn)制化cabac定義了四種二進(jìn)制化辦法:一元碼(unary)、截?cái)嘁辉a(truncated unary)、k階指數(shù)哥倫布碼(kth order exp-golomb)和定長(zhǎng)碼(f

4、ixed-length)。一個(gè)句法元素可以對(duì)應(yīng)一種或兩種上述二進(jìn)制化辦法,但特別的是,句法元素mb_type和sub_mb_type的反二進(jìn)制化自立于上述四種辦法,它們通過(guò)查表來(lái)實(shí)現(xiàn)。cabac硬件加速器的架構(gòu)設(shè)計(jì)h.264解碼器的軟/硬件劃分h.264解碼過(guò)程采納軟/硬件聯(lián)合的解碼計(jì)劃,囫圇解碼器由32位cpu、結(jié)構(gòu)的運(yùn)算單元和硬件加速器組成。cabac熵解碼部分,主要是一些推斷和分支操作,數(shù)據(jù)接口、吞吐量不大,這些任務(wù)由軟件和硬件加速器共同完成。本文設(shè)計(jì)的cabac解碼模塊就是一個(gè)cabac硬件加速器。cabac硬件加速器的總體構(gòu)架cabac硬件加速器的總體架構(gòu)1所示。其總體架構(gòu)分為兩層:

5、頂層是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è)地址的上下文模型變量舉行讀操作并對(duì)另外一個(gè)地址的上下文模型變量舉行寫操作;n

6、eighbor_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由組合規(guī)律實(shí)現(xiàn),用于二進(jìn)制算術(shù)解碼過(guò)程中的查表運(yùn)算。cabac的硬件化分析本設(shè)計(jì)的目標(biāo)是使囫圇h.264解碼器的芯片能夠?qū)Ω咔鍒D像(1920×1088)舉行實(shí)時(shí)解碼。假

7、設(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取樣,由于取樣值是8bit,則每個(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.3mbp

8、s,本設(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ù)解碼舉行優(yōu)化。按照歸一化算法的特點(diǎn),即循環(huán)的次數(shù)可由輸入的codirange、codioffset和查表得到的codirangelps事先推斷出來(lái),因此可以合并二進(jìn)制化和歸一化這兩個(gè)步驟,使其在1個(gè)時(shí)鐘周期內(nèi)完成。因?yàn)槠邢蓿旅鎯H以三種模式中的規(guī)章解碼為例,解釋二進(jìn)制算術(shù)解碼和歸一化的硬件化,旁路解碼和結(jié)束解碼可參考h.264協(xié)

9、議。規(guī)章解碼的二進(jìn)制算術(shù)解碼和歸一化過(guò)程主要包括比較、減法、查表、移位操作。在h.264中,為了削減計(jì)算的復(fù)雜度,cabac首先建立一個(gè)64×4的二維表格rangetablps64,存放預(yù)先計(jì)算好的乘法結(jié)果。表格的入口參數(shù)是pstateidx和qcodirangeidx,其中qcodirangeidx由變量codirange量化而來(lái),量化辦法是(codirange6)&3。其 hdl實(shí)現(xiàn)如下:assign qcodirangeidx= (codirange6)always(pstateidx or qcodirangeidx)begincasepstateidx, qcodi

10、rangeidx0: codirangelps="0" 255:codirangelps=63;endcaseend建立了概率模型和乘法模型后,在遞進(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。transidxlpspstateidx和transidxmpspstateidx是兩個(gè)深度為64項(xiàng)的表格,其中pstateidx的取值為0"63。接下來(lái)是歸一化推斷,當(dāng)codirange小于0x0100時(shí),需舉行歸一化

11、。這樣就能在1個(gè)時(shí)鐘周期內(nèi)完成二進(jìn)制化和歸一化兩個(gè)步驟,其verilog hdl實(shí)現(xiàn)如下:always(posedge clk or negedge rst)if( !rst). .elsebeginif(codioffset= codirange-codirangelps)beginbinval="valmps;codioffset=codioffset-(codirange-codirangelps);codirange=codirangelps;if(pstateidx=0)valmps=1-valmps;pstateidx=transidxlpspstateidx;endel

12、sebeginbinval=valmps;pstateidx=transidxmpspstateidx; endwhile(codirange0x100) /注:此語(yǔ)句不行綜合begincodirange= (codirange-codirangelps)1;codioffset=(codioffset1) |read_bits(1);endendcabac的加速策略狀態(tài)機(jī)的設(shè)計(jì)二進(jìn)制算術(shù)解碼的狀態(tài)機(jī)是本設(shè)計(jì)的核心,該部分效率的凹凸將挺直影響到cabac硬件加速器的解碼速度。在cabac模塊沒(méi)有被啟動(dòng)時(shí),狀態(tài)機(jī)將向來(lái)停歇在初始狀態(tài),當(dāng)一個(gè)新片開頭時(shí),初始化解碼引擎;當(dāng)收到cp

13、u發(fā)出的解碼哀求時(shí),首先進(jìn)入預(yù)解碼狀態(tài),讀取上下文模型變量,然后在下一個(gè)時(shí)鐘進(jìn)入二進(jìn)制算術(shù)解碼狀態(tài),完成1bit數(shù)據(jù)的解碼。在cabac解碼過(guò)程中,系統(tǒng)會(huì)按照句法元素的種類和當(dāng)前數(shù)據(jù)的位置挑選解碼模式。流水線的設(shè)計(jì)cabac對(duì)1bit數(shù)據(jù)舉行解碼的過(guò)程可分為兩個(gè)步驟:讀取上下文模型變量、解碼并更新上下文模型變量。本設(shè)計(jì)采納兩級(jí)流水線結(jié)構(gòu),在對(duì)當(dāng)前數(shù)據(jù)舉行解碼的同時(shí),可讀取下個(gè)數(shù)據(jù)的上下文模型變量,因此加快了解碼速度。碼流讀取的雙緩沖設(shè)計(jì)在舉行解碼的時(shí)候,為了提高傳輸效率,采納雙緩沖的形式。在給其中一個(gè)緩沖傳輸數(shù)據(jù)的時(shí)候,解碼器可從另外一個(gè)緩沖里讀取數(shù)據(jù)舉行解碼,從而使傳輸和解碼同時(shí)舉行,有效提高了傳輸效率。設(shè)計(jì)結(jié)果與性能在設(shè)計(jì)完成后,利用jvt提供的標(biāo)準(zhǔn)測(cè)試碼流舉行測(cè)試,通過(guò)了仿真驗(yàn)證。結(jié)果顯示,本設(shè)計(jì)平均每2個(gè)時(shí)鐘周期可完成1bit數(shù)據(jù)的解碼。在smic 0.18mm 工藝標(biāo)準(zhǔn)單元庫(kù)的基礎(chǔ)上舉行dc(design compile)綜合,硬件加速器的面積為0.38mm2(不包括片外sram所占用的面積),工作頻率可達(dá)166mhz,達(dá)到了預(yù)期要求。為了顯示硬件加速器的優(yōu)勢(shì),挑選參考軟件jm7.4的函數(shù)biari_decode_symbol完成二進(jìn)制算術(shù)解碼和

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論