一種基于SoC的MPEG-4視頻解碼加速器-設(shè)計應(yīng)用_第1頁
一種基于SoC的MPEG-4視頻解碼加速器-設(shè)計應(yīng)用_第2頁
一種基于SoC的MPEG-4視頻解碼加速器-設(shè)計應(yīng)用_第3頁
一種基于SoC的MPEG-4視頻解碼加速器-設(shè)計應(yīng)用_第4頁
一種基于SoC的MPEG-4視頻解碼加速器-設(shè)計應(yīng)用_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

精品文檔-下載后可編輯一種基于SoC的MPEG-4視頻解碼加速器-設(shè)計應(yīng)用摘要:本設(shè)計實(shí)現(xiàn)了一種應(yīng)用于系統(tǒng)芯片(SoC)的MPEG-4視頻解碼加速器。該解碼器可完成MPEG-4解碼中計算量的離散余弦變換(IDCT)、反量化(inversequantization)和運(yùn)動補(bǔ)償疊加(reconstruction)。本文通過算法、總線接口、存儲器結(jié)構(gòu)以及硬件開銷方面的優(yōu)化,使得在滿足MPEG-4實(shí)時解碼的基礎(chǔ)上,加速器占用SoC系統(tǒng)芯片的總線帶寬和硬件面積盡量的小,并有利于存儲器的復(fù)用。經(jīng)實(shí)驗驗證,本設(shè)計可以對MPEG-4簡單層(simpleprofile)實(shí)時解碼。關(guān)鍵詞:MEPG-4;DCT/IDCT;視頻解碼引言隨著MPEG-4應(yīng)用的普及,符合MPEG-4標(biāo)準(zhǔn)的視頻在手持設(shè)備上的應(yīng)用越來越廣泛,SoC技術(shù)可以在完成其它功能的同時,在手持設(shè)備上低成本低功耗的實(shí)現(xiàn)MPEG-4視頻解碼。而基于SoC的解碼方案可以有多種,例如采用CPU內(nèi)核軟件解碼,也可引入DSP核,或者設(shè)計專用的硬件加速電路。但是,軟件解碼在系統(tǒng)繁忙時難以滿足實(shí)時性要求,引入DSP核會使SoC的芯片成本大為增加,所以本文將MPEG-4的解碼電路作為SoC芯片中的一個硬件加速模塊來實(shí)現(xiàn)。在手持設(shè)備應(yīng)用中,MPEG-4視頻簡單層(SimpleProfile)為常用,而其中計算量的部分是反離散余弦變換(InverseDiscreteCosineTransform),所以反離散余弦變換的實(shí)現(xiàn)是加速M(fèi)PEG-4解碼的關(guān)鍵。有很多的設(shè)計專門以處理IDCT為目標(biāo).本文描述的MPEG-4解碼加速器基于AMBA總線,作為高速總線(AHB)上的一個主設(shè)備,對四個亮度塊(block)和兩個色差塊組成的宏塊(macroblock)一起做IDCT運(yùn)算,并根據(jù)配置完成IDCT前的反量化和IDCT后運(yùn)動補(bǔ)償?shù)膱D像疊加,終將結(jié)果寫回顯存。整個過程高度并行處理。本文第1部分主要介紹IDCT快速算法的選擇和優(yōu)化,第2部分討論硬件結(jié)構(gòu)和設(shè)計技巧,第3部分介紹仿真驗證和綜合結(jié)果。1二維DCT?IDCT算法描述及快速算法的選擇和優(yōu)化1.1算法描述對于輸入矩陣f(x,y){0≤i,jN},它的離散余弦變換式如下:反變換式如下:直接計算IDCT,每個象素點(diǎn)f(i,j)都需要計算N2次乘法,一個塊有N2個象素點(diǎn),總共需要N4次乘法計算,因此計算量相當(dāng)大。1.2快速算法的選擇二維IDCT可以寫成:上式括號內(nèi)是對F(u,v)的一行作一維IDCT變換,括號外是對行IDCT的結(jié)果做一維列IDCT變換。如不考慮系數(shù)2/N,二維的IDCT就分解為對矩陣F(u,v)先做行IDCT再做列IDCT的2N次一維IDCT變換。(本文中取N=8)。對于一維IDCT有許多的快速算法。其中一種是將IDCT原始的變換矩陣分解成幾個利于計算的變換矩陣,然后逐步計算。還有一種是利用了IDCT的奇偶對稱性以及余弦函數(shù)的和差化積性質(zhì)的共用乘法器。雖然后一種的乘法次數(shù)為12次,少于前一種的16次,但由于前一種的乘法集中在輸入附近,也就是說絕大部分乘法的其中一個乘數(shù)是輸入F(k),因而可以通過提前判斷輸入F(k)中是否有較多的0元素從而直接跳過一部分的乘加運(yùn)算,達(dá)到加速的目的。MPEG-4解碼的IDCT輸入中,有大量的0,所以前一種的算法更有利于MPEG-4解碼。其算法流程如圖1。圖1chen算法流程Ci=cos(iπ/16)1.3算法的優(yōu)化1.3.1長乘法的處理在圖1的虛線中,前乘加運(yùn)算的結(jié)果要與C4相乘,如果輸入數(shù)據(jù)F(k)和系數(shù)Ci都是16位數(shù)據(jù),為了保證精度就要使用32位乘16位的乘法器,這必然成為整個電路中的關(guān)鍵路徑,影響其性能。若用下面的式(4)對虛線內(nèi)的條路徑做變換,雖然增加了乘法數(shù)目,但是不僅去除掉32位乘16位的乘法器,而且有利于下文將要提及的OnlyDC和Halfzero情況的加速。變換后的虛線內(nèi)的算法流程如圖2所示。圖2chen算法變換Ci=cos(iπ/16)1.31.OnlyDC和Halfzero本文將F(k)分為三種情況:(1)F(k)只有F(0)為非零數(shù)據(jù),我們稱這種情況為OnlyDC;(2)F(k)中F(0),F(1),F(2)和F(3)為非零數(shù)據(jù),其他四個數(shù)據(jù)都為零,這種情況稱為Halfzero;(3)其它情況都?xì)w入普通情況。我們用軟件直接解碼的方法對典型素材作了統(tǒng)計(見表1),發(fā)現(xiàn)OnlyDC和Halfzero的情況占了很大比例,加速這兩種情況的計算對加速整個視頻解碼的IDCT運(yùn)算有重要意義。由一維IDCT式(5)可以看出,對于OnlyDC情況,f(i)就是F(0)/1.414。其中c(0)=1/1.414,c(i)=1,i=1,2N-1。如果我們把每次行和列的一維IDCT結(jié)果放大2倍得到f′(i),對于OnlyDC,F(0)就是f′(i),不需任何計算。這樣兩次一維IDCT運(yùn)算后得到的結(jié)果f′(x,y)將為f(x,y)的2倍,故只要將f′(x,y)右移一位就可以得到正確的f(x,y)。由圖1和圖2可以看出,在所有的F(k)到f(i)的計算路徑上,都出現(xiàn)了且僅出現(xiàn)F(k)乘Ci,這樣我們對常數(shù)Ci取值時直接取2cos(iπ/16),就達(dá)到了將一維IDCT結(jié)果放大1.414倍的目的。對于Halfzero的情況,可簡化圖1和圖2中的F(4)、F(5)、F(6)、F(7)的相關(guān)路徑,得到Halfzero的算法流程(如圖3)。此時時乘法總數(shù)為10次。圖3Halfzero的算法流程其中Ci=2cos(iπ/16)對于一般的情況,根據(jù)圖1和圖2的流程計算,取Ci=2cos(iπ/16)。乘法總數(shù)22次。2硬件結(jié)構(gòu)和設(shè)計技巧2.1整體結(jié)構(gòu)的選擇MPEG-4加速器的的整體框圖如圖4所示。其中slave模塊負(fù)責(zé)模式配置,接收數(shù)據(jù),反量化并判斷OnlyDC和Halfzero。寫向slave的數(shù)據(jù)經(jīng)過反量化操作后進(jìn)入Xmem。MPEG-4加速器的Control模塊控制整個解碼流程。Idct8x1從Xmem中讀出原數(shù)據(jù)做一維IDCT并寫回Xmem。由于Xmem的帶寬限制IDCT8x1只使用兩個乘法器,把乘法排列緊湊后,普通情況一維IDCT需要20個周期,Halfzero需要14個周期。Master負(fù)責(zé)取運(yùn)動補(bǔ)償圖像數(shù)據(jù),并在完成IDCT變換和疊加后將結(jié)果放回顯存。每次數(shù)據(jù)寫回顯存后,Control模塊會將Xmem清零,這樣下次解碼操作只需將非零數(shù)據(jù)寫入Xmem,減少了數(shù)據(jù)的寫入時間。雙端口片上存儲器Xmem負(fù)責(zé)存放IDCT的中間數(shù)據(jù)和計算結(jié)果,其中數(shù)據(jù)通過A端口進(jìn)行IDCT變換,IDCT結(jié)果通過B端口進(jìn)行疊加,IDCT計算和運(yùn)動補(bǔ)償疊加可以通過A、B兩個端口并行處理。單端口Ymem負(fù)責(zé)存放MASTER取回的運(yùn)動補(bǔ)償數(shù)據(jù)。Xmem和Ymem是零等待的片上存儲器,而且在外部總線上是可見的,所以在MPEG-4加速器不使用時,它們還可以作為整個芯片高速的緩沖區(qū)使用。圖4MPEG-4加速器的整體框圖2.2OnlyDC情況的處理在進(jìn)行二維IDCT的行變換時,一般情況和Halfzero情況都會向Xmem寫回8個計算結(jié)果;如果是OnlyDC則不對Xmem做任何讀寫,所以在做列IDCT時必須對idct8x1發(fā)出的地址進(jìn)行重新映射,使其指向這一行的個數(shù)據(jù)。如圖5所示,IDCT發(fā)出的地址指向當(dāng)前要進(jìn)行IDCT變換的列中的數(shù)據(jù),Control模塊中的AddressRemap邏輯會根據(jù)OnlyDC狀態(tài)將地址轉(zhuǎn)換為指向列的有效數(shù)據(jù)。對于列IDCT我們直接按照一般情況計算。圖5地址重映射3仿真驗證和性能分析本文的設(shè)計流程是首先確定IDCT算法,并用其C語言描述作為設(shè)計規(guī)范。然后根據(jù)設(shè)計規(guī)范用verilogRTL描述硬件,用verisity公司(已被Cadence公司收購)的E語言搭建驗證環(huán)境,并將C語言的設(shè)計規(guī)范嵌入E驗證環(huán)境中,通過E語言產(chǎn)生隨機(jī)激勵,同時發(fā)給verilogRTL和C設(shè)計規(guī)范,并將兩者的結(jié)果作比較。這樣既保證了硬件實(shí)現(xiàn)和C設(shè)計規(guī)范完全一致,又通過C設(shè)范的重用縮短了驗證周期。我們使用SYNOPSYS的DesignCompiler對本設(shè)計進(jìn)行了綜合,綜合采用SMIC的0.8um的標(biāo)準(zhǔn)單元庫。結(jié)果顯示本設(shè)計的關(guān)鍵路徑在反量化處,因為此處直接使用了乘加操作。表3給出了本設(shè)計的特性。本設(shè)計完成更多解碼功能,主頻更高,乘法器更少,而且引入了可與系統(tǒng)復(fù)用的片上內(nèi)存。我們分I幀和非I幀兩種情況分析本設(shè)計的處理時間。在處理I幀時要進(jìn)行反量化,不需要運(yùn)動補(bǔ)償疊加。由于反量化是在數(shù)據(jù)輸入的同時進(jìn)行的,所以處理時間由非零值的寫入時間Tinput,IDCT計算間Tidct和寫回顯存的時間Toutput三部分組成。這三部分如圖6(a)所示的并行處理。在處理非I幀時,IDCT的結(jié)果需要與運(yùn)動補(bǔ)償?shù)慕Y(jié)果疊加,所以處理時間時由非零值的寫入時間Tinput,IDCT計算時間Tidct,取運(yùn)動補(bǔ)償數(shù)據(jù)時間Tfetch,疊加并寫回顯存的時間Toutput四部分組成。如圖6(b)所示的并行處理。(a)I幀處理時間(b)非I幀處理時間圖6處理時間其中取運(yùn)動補(bǔ)償?shù)慕Y(jié)果和寫回現(xiàn)存都要占用總線接口,所以要依次進(jìn)行。從這兩幅圖可以看出,并行處理使得這兩種情況總的處理時間是相同的。以行IDCT一般情況15%,OnlyDC情況70%,Halfzero情況10%計算,一個block的IDCT所需的周期Tidct為:Tidct=(0×70%+14×10%+20×20%)×8+20×8=203.2(個周期)如不考慮回寫時由顯存造成的延時,MPEG24加速器處理的處理時間T為:T=Tinput+6×Tidct+Toutput=6×64×15%+6×203+64=1340.8(周期/宏塊)4結(jié)論本文給出了一種應(yīng)用于嵌入式系統(tǒng)芯片的MPEG-4

溫馨提示

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

評論

0/150

提交評論