新聞中心

EEPW首頁 > 電源與新能源 > 設(shè)計(jì)應(yīng)用 > AVS 運(yùn)動(dòng)補(bǔ)償電路的VLSI 設(shè)計(jì)與實(shí)現(xiàn)

AVS 運(yùn)動(dòng)補(bǔ)償電路的VLSI 設(shè)計(jì)與實(shí)現(xiàn)

作者: 時(shí)間:2007-11-09 來源:網(wǎng)絡(luò) 收藏


摘要:

本文引用地址:http://m.butianyuan.cn/article/258727.htm

提出了一種基于 標(biāo)準(zhǔn)的高效的運(yùn)動(dòng)補(bǔ)償電路硬件結(jié)構(gòu), 該設(shè)計(jì)采用了8 ×8 塊級(jí)流水線操作, 運(yùn)動(dòng)矢量歸一化處理和插值濾波器組保證了流水線的高效運(yùn)行以及硬件資源的最優(yōu)利用。采用Verilog 語言完成了 設(shè)計(jì), 并通過EDA 軟件給出仿真和綜合結(jié)果。

關(guān)鍵詞:

運(yùn)動(dòng)補(bǔ)償; 流水線;

0  引言

標(biāo)準(zhǔn)是數(shù)字音視頻編解碼技術(shù)標(biāo)準(zhǔn)工作組(AVS 工作組) 制定的數(shù)字音視頻編碼標(biāo)準(zhǔn),其視頻部分已于2006 年2 月份被信產(chǎn)部頒布為國(guó)家標(biāo)準(zhǔn),于2006 年3 月1 日起實(shí)施。該標(biāo)準(zhǔn)主要面向高清晰度和高質(zhì)量數(shù)字電視廣播、數(shù)字存儲(chǔ)媒體和其他相關(guān)應(yīng)用。

運(yùn)動(dòng)估計(jì)和運(yùn)動(dòng)補(bǔ)償是AVS 中去除時(shí)間冗余的主要方法,它采用多種宏塊劃分方式,1P4 像素插值、雙向估計(jì)和多參考幀等技術(shù)大大提高了編碼效率,但同時(shí)也給編解碼器增加了一定的復(fù)雜度。本文針對(duì)AVS 所特有的運(yùn)動(dòng)補(bǔ)償解碼過程進(jìn)行深入分析,并提出了與其算法相適應(yīng)的運(yùn)動(dòng)補(bǔ)償電路的設(shè)計(jì)方案,電路采用Verilog 語言描述,并給出了綜合和仿真的結(jié)果。

1  AVS 運(yùn)動(dòng)補(bǔ)償關(guān)鍵技術(shù)分析研究

與其他視頻編解碼算法相類似,AVS 的運(yùn)動(dòng)補(bǔ)償技術(shù)主要涉及三個(gè)步驟:通過比特流中的相關(guān)信息計(jì)算運(yùn)動(dòng)矢量、按照運(yùn)動(dòng)矢量的指示進(jìn)行地址轉(zhuǎn)換從MIU 中讀取參考像素值、通過參考像素值對(duì)當(dāng)前解碼塊進(jìn)行預(yù)測(cè)。同時(shí),作為一種高效率的視頻壓縮算法,AVS 也有其獨(dú)特的技術(shù)特征。

AVS 共有4 種宏塊劃分類型:16 ×16 ,16 ×8 ,8 ×16和8 ×8 ,比MPEG- 2 增加了8 ×8 大小塊的運(yùn)動(dòng)估計(jì),但并未像H. 264 一樣進(jìn)行更細(xì)一級(jí)到4x4 塊的劃分;同時(shí)AVS 支持的最大參考幀數(shù)為2 幀,而不是MPEG- 4PH. 264 的16 幀,這些都使得AVS 既保證了一定的數(shù)據(jù)壓縮率,又控制了運(yùn)算復(fù)雜度。

AVS 充分利用了圖像的運(yùn)動(dòng)連續(xù)性,對(duì)雙向預(yù)測(cè)分兩種模式進(jìn)行處理:對(duì)稱模式和直接模式。在對(duì)稱模式中,前向矢量由當(dāng)前圖像中空間相鄰塊的運(yùn)動(dòng)矢量獲得,而后向運(yùn)動(dòng)矢量由前向運(yùn)動(dòng)矢量通過一定的對(duì)稱規(guī)則獲得,從而節(jié)省了后向運(yùn)動(dòng)矢量的編碼開銷;在直接模式中,前向和后向運(yùn)動(dòng)矢量都是由后向參考圖像中相應(yīng)位置的時(shí)間相鄰塊的運(yùn)動(dòng)矢量獲得,不需要傳送運(yùn)動(dòng)矢量差值,從而也提高了編碼效率。

AVS 對(duì)亮度和色度的運(yùn)動(dòng)矢量分別達(dá)到1P4 和1P8 的精度,在運(yùn)動(dòng)補(bǔ)償過程中需要進(jìn)行相應(yīng)的插值計(jì)算。對(duì)于像素的亮度值,圖1 給出了參考圖像整數(shù)樣本、二分之一樣本和四分之一樣本的位置,其中用大寫字母標(biāo)記的為整數(shù)樣本的位置,用小寫字母標(biāo)記的為二分之一樣本和四分之一樣本的位置。二分之一樣本位置的預(yù)測(cè)值通過4 抽頭濾波器[ - 1 ,5 ,5 , - 1 ]計(jì)算得到,四分之一樣本位置的預(yù)測(cè)值通過4 抽頭濾波器[1 ,7 ,7 ,1 ]計(jì)算得到。

2  AVS 運(yùn)動(dòng)補(bǔ)償處理器的 結(jié)構(gòu)設(shè)計(jì)

2. 1  運(yùn)動(dòng)補(bǔ)償處理器整體結(jié)構(gòu)


分析AVS 的解碼算法,其運(yùn)動(dòng)矢量的計(jì)算,參考像素的讀取以及插值的計(jì)算三個(gè)部分計(jì)算量相當(dāng),于是該運(yùn)動(dòng)補(bǔ)償結(jié)構(gòu)相應(yīng)的包括三個(gè)主要功能模塊:MV Generation ,MC Controller 和Interpolation ,整個(gè)解碼器通過三個(gè)模塊的并行流水操作完成,從而實(shí)現(xiàn)了高清圖像的實(shí)時(shí)解碼。其中,MV Generation 根據(jù)Parser 解出的宏塊信息來產(chǎn)生運(yùn)動(dòng)補(bǔ)償過程所需要的運(yùn)動(dòng)矢量;MC Controller 根據(jù)得到的運(yùn)動(dòng)矢量從參考幀讀取相應(yīng)的參考像素并總體控制運(yùn)動(dòng)補(bǔ)償?shù)倪M(jìn)行; Interpolation 完成非整數(shù)像素點(diǎn)的插值以及加權(quán)平均等一系列后處理操作,并將結(jié)果輸出給Reconstruct 模塊。
本運(yùn)動(dòng)補(bǔ)償模塊中,RAM 用來存放當(dāng)前圖像中空間相鄰塊的運(yùn)動(dòng)矢量參考值,Cache1 和Cache2 中存放從MIU 中讀入的參考像素點(diǎn),而相鄰圖像的運(yùn)動(dòng)矢量和像素信息都存放在片外DDR 中,通過MIU Stub for MV 和MIU Stub for Controller 對(duì)其進(jìn)行訪問。

2. 2  MC Controller 的流水控制

在運(yùn)動(dòng)補(bǔ)償過程中,運(yùn)動(dòng)矢量的計(jì)算,MIU 訪問地址的轉(zhuǎn)換以及像素的插值之間具有嚴(yán)格的數(shù)據(jù)依賴特性,并且,運(yùn)動(dòng)矢量的生成時(shí)間以及向MIU 響應(yīng)時(shí)間均無法確定,導(dǎo)致運(yùn)動(dòng)補(bǔ)償存在嚴(yán)重的等待問題。如果對(duì)每個(gè)宏塊都依次采用生成運(yùn)動(dòng)矢量、讀取參考像素、插值計(jì)算三個(gè)步驟,將會(huì)形成非常嚴(yán)重的時(shí)鐘浪費(fèi)。

對(duì)此本文采用8 ×8 子塊級(jí)的流水線結(jié)構(gòu),通過握手機(jī)制對(duì)運(yùn)動(dòng)矢量的生成,參考像素的讀取,插值計(jì)算和加權(quán)進(jìn)行調(diào)度,有效的降低了各模塊間因等待造成的時(shí)鐘浪費(fèi)。
如圖3 所示, 每次收到MC 的開始信號(hào),MV Generation 依次給出四個(gè)8 ×8 子塊的運(yùn)動(dòng)矢量,MC Controller 等待MV Generation 給出的運(yùn)動(dòng)矢量有效后開始對(duì)MIU 進(jìn)行訪問,讀取預(yù)測(cè)當(dāng)前8 ×8 子塊所需要的參考像素,參考像素讀取完畢后再開始進(jìn)行當(dāng)前8 ×8 子塊的插值計(jì)算以及加權(quán)。為了提高數(shù)據(jù)的讀取效率,本文調(diào)用兩個(gè)Cache 采取乒乓的算法存儲(chǔ)參考像素,所以圖3 中,3 號(hào)子塊數(shù)據(jù)的讀取要等待1 號(hào)塊的參考數(shù)據(jù)全部用完再進(jìn)行。

2. 3  MV Generation 的歸一化設(shè)計(jì)

AVS 支持16 ×16 ,16 ×8 ,8 ×16 和8 ×8 共四種宏塊劃分,靈活的宏塊劃分方式大大提高了AVS 的壓縮率。但由于當(dāng)前宏塊及其相鄰宏塊的劃分均沒有一定的規(guī)律可循,如果依據(jù)常規(guī)宏塊的劃分規(guī)則進(jìn)行運(yùn)動(dòng)矢量的存儲(chǔ),則不僅要記錄當(dāng)前宏塊的宏塊劃分,還要記錄其相鄰宏塊的宏塊劃分,增加了硬件的實(shí)現(xiàn)復(fù)雜度。

于是,將各種宏塊劃分的運(yùn)動(dòng)矢量均統(tǒng)一到8 ×8的塊上,對(duì)于運(yùn)動(dòng)矢量的生成和存儲(chǔ)均采用8 ×8 的塊為一個(gè)最小單位。對(duì)于16 ×16 ,16 ×8 ,8 ×16 的宏塊,令劃分在同一塊內(nèi)的8 ×8 子塊共用一個(gè)計(jì)算結(jié)果,從而讀取參考?jí)K的運(yùn)動(dòng)矢量時(shí),可不必考慮相鄰宏塊的劃分類型,只需一套運(yùn)動(dòng)矢量生成電路就可以實(shí)現(xiàn)各種劃分方式的宏塊的運(yùn)動(dòng)矢量的計(jì)算和存儲(chǔ),簡(jiǎn)化了運(yùn)動(dòng)矢量生成電路的設(shè)計(jì)和控制,其總體結(jié)構(gòu)如圖4 所示。

為了實(shí)現(xiàn)流水作業(yè),這里對(duì)所有類型的宏塊中的四個(gè)8 ×8 塊按照左上、右上、左下和右下的順序從0 進(jìn)行編號(hào)。首先,預(yù)處理模塊根據(jù)當(dāng)前宏塊的宏塊類型和幀類型對(duì)宏塊的劃分類型進(jìn)行判斷,頂層計(jì)數(shù)模塊給出當(dāng)前解碼8 ×8 子塊的子塊號(hào)。
為了減少計(jì)算量提高解碼速度,對(duì)不同劃分方式的宏塊進(jìn)行選擇式解碼,對(duì)于16 ×16 宏塊,只解碼0 號(hào)子塊,對(duì)于16 ×8 宏塊解碼0 ,2 號(hào)子塊,對(duì)于8 ×16 宏塊解碼0 ,1 號(hào)子塊,對(duì)于8 ×8 宏塊則進(jìn)行0~3 號(hào)子塊的全解碼。然后計(jì)算結(jié)果存儲(chǔ)模塊再根據(jù)當(dāng)前的宏塊劃分以及當(dāng)前的8 ×8 解碼子塊號(hào)把計(jì)算結(jié)果分給其他與其具有相同運(yùn)動(dòng)矢量的8 ×8 子塊。從而實(shí)現(xiàn)了運(yùn)動(dòng)矢量的高效計(jì)算。

2. 4  1P4 像素亮度差值器

為了更加逼近實(shí)際圖像的運(yùn)動(dòng)效果,AVS 采用了特有的1P4 精度的亮度預(yù)測(cè)。但分?jǐn)?shù)像素插值在提高圖像質(zhì)量的同時(shí),也大大增加了計(jì)算的復(fù)雜度,這在 實(shí)現(xiàn)時(shí)直接表現(xiàn)為成本的上升和功耗的增加。例如在解碼每秒30 幀,1 920 ×1 080 像素的高清碼流時(shí),為了保證視頻播放的實(shí)時(shí)性,最壞情況 下每秒鐘需要對(duì)1 944 000 個(gè)8 ×8 像素的亮度塊進(jìn)行插值操作。巨大的計(jì)算量給亮度插值器的VLSI實(shí)現(xiàn)帶來了一個(gè)難題,即如何在保證視頻解碼實(shí)時(shí)性的前提下,盡可能縮小芯片的面積并降低系統(tǒng)的時(shí)鐘頻率。
本文中亮度插值器采用了一種級(jí)數(shù)可變的流水線結(jié)構(gòu),首先將圖1 所示的分?jǐn)?shù)像素點(diǎn)分成五大類:整數(shù)像素點(diǎn);b , s 類的水平1P2 像素點(diǎn); h ,m 類的垂直1P2 像素點(diǎn);j 類的1P2 像素點(diǎn);1P4 像素點(diǎn)。針對(duì)不同目標(biāo)位置的插值需要,自動(dòng)選擇4 到8 級(jí)流水線,執(zhí)行包括輸入數(shù)據(jù)延時(shí),水平方向F1 濾波,垂直方向F1 濾波,J 點(diǎn)F1 濾波,數(shù)據(jù)整理,1P4 像素F2 濾波,輸出通路選擇和限幅的操作,使得數(shù)據(jù)的輸入,處理,輸出同時(shí)執(zhí)行,避免了空閑等待和存放中間變量的開銷。

其中F1 和F2 均為4 抽頭濾波,F1 濾波系數(shù)為3  仿真試驗(yàn)基于上述結(jié)構(gòu),本文完成了Verilog HDL 的RTL級(jí)描述,在modelsim5. 8 中對(duì)該運(yùn)動(dòng)補(bǔ)償模塊進(jìn)行前仿,將testbench 中對(duì)MIU 的等待時(shí)間統(tǒng)一設(shè)為10 個(gè)時(shí)鐘周期,則P 幀每個(gè)宏塊需要120 到230 個(gè)時(shí)鐘周期不等,其中P skip 宏塊類型占用的時(shí)鐘最少,P8 ×8 宏塊占用的時(shí)鐘最多;B 幀中每個(gè)宏塊需要180 到490 個(gè)時(shí)鐘周期不等,其中B Direct 宏塊需要的時(shí)鐘最少,B8 ×8 雙向宏塊需要的時(shí)鐘最多。

另外,本文采用Synplify 為開發(fā)平臺(tái)對(duì)該運(yùn)動(dòng)補(bǔ)償設(shè)計(jì)進(jìn)行綜合,選用Virtex4 XC4VLX80 器件,在速度選擇為- 10 的條件下,可綜合達(dá)到121. 1MHz ,共占用9 179個(gè)邏輯單元??梢姳窘Y(jié)構(gòu)大大減少了視頻解碼過程中運(yùn)動(dòng)補(bǔ)償占用的時(shí)鐘周期,不僅充分滿足了實(shí)時(shí)解碼高清圖像的速度需求,而且有效的控制了硬件資源的使用量。

4  結(jié)束語

在視頻實(shí)時(shí)解碼芯片的設(shè)計(jì)中,處理速度和硬件資源的占用是影響芯片性能的兩個(gè)關(guān)鍵性問題。

本文在對(duì)AVS 運(yùn)動(dòng)補(bǔ)償算法進(jìn)行合理分析的基礎(chǔ)上,提出以上結(jié)構(gòu),該結(jié)構(gòu)既能夠高效的實(shí)現(xiàn)高清視頻的實(shí)時(shí)解碼,又合理的控制硬件資源的使用量。

參考文獻(xiàn):

[1 ]  先進(jìn)音視頻編碼標(biāo)準(zhǔn)[ S] . 2004.
[2 ]  LI J H , LINGN. An efficient decoder design for MPEG- 2 MP@ML [C] . IEEE Int Conf . on Application - Specific Systems , Architectures and Processors. 1997 :509 - 518.
[3 ]  MASAKI T , MORIMOTO Y, ONOYE T , et al . VLSI implementation of inverse discrete cosine transformer and motion compensator for MPEG- 2 HDTV video decoding[J ] . IEEE Trans. on Circuits and Systems for Video Technology , 1995 ,5(5) :387 - 395.
[4 ]  惠新葉,鄭志航,葉楠,MPEG- 2 運(yùn)動(dòng)補(bǔ)償?shù)腣LSI 設(shè)計(jì)[J ] . 上海交通大學(xué)學(xué)報(bào),1999 ,7 :903 - 906.
[5 ]  劉龍,韓崇昭,王占輝. MPEG - 4 運(yùn)動(dòng)補(bǔ)償?shù)腣LSI 結(jié)構(gòu)設(shè)計(jì) [J ] . 通信學(xué)報(bào),2005 (11) :117 - 124.
[6 ]  Bhasker J . Verilog HDL 綜合實(shí)用教程[M] . 北京:清華大學(xué)出版社,2004.
[7 ]  高文,黃鐵軍. 心愿編碼標(biāo)準(zhǔn)AVS 及其在數(shù)字電視中的應(yīng)用[J ] . 電視技術(shù),2003 (11) :4 - 6.



關(guān)鍵詞: AVS MPEG-4 VLSI

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉