文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 0258-7998(2013)01-0040-03
音視頻編碼標(biāo)準(zhǔn)(AVS)是我國具有知識(shí)產(chǎn)權(quán)的第二代信源編碼標(biāo)準(zhǔn)[1]。近年來,,AVS解碼器發(fā)展較為成熟,,已有較多的國內(nèi)外企業(yè)生產(chǎn)解碼芯片。但是,,AVS編碼器還未發(fā)展到令人滿意的程度,,在一定程度上限制了AVS的推廣,。運(yùn)動(dòng)估計(jì)在AVS編碼器中主要用于消除時(shí)間冗余,以使視頻編碼達(dá)到更高的壓縮率,。然而,,其運(yùn)算量巨大,占整個(gè)視頻編碼的60%左右,。所以,,在面積和功耗限制下設(shè)計(jì)專門的運(yùn)動(dòng)估計(jì)硬件結(jié)構(gòu)成為當(dāng)前研究熱點(diǎn)。
AVS整像素運(yùn)動(dòng)估計(jì)的搜索算法很多,,其中全搜索塊匹配算法因數(shù)據(jù)流規(guī)則匹配率高并且沒有復(fù)雜的動(dòng)態(tài)反饋和決策邏輯,,最適合可變塊大小運(yùn)動(dòng)估計(jì),故本文選擇全搜索塊匹配算法?,F(xiàn)有的全搜索塊匹配算法運(yùn)動(dòng)估計(jì)硬件結(jié)構(gòu)在面積及處理速度上已做了很多努力,,如參考文獻(xiàn)[2-5]提出的實(shí)現(xiàn)方案:參考文獻(xiàn)[2]利用像素截?cái)嗟姆椒ǎ瑢⑾袼氐臀唤財(cái)?,在保證圖像信噪比降低不多的情況下大大減少了運(yùn)算量,;參考文獻(xiàn)[3]提出了二維intra-Level SAD計(jì)算陣列的運(yùn)動(dòng)估計(jì)結(jié)構(gòu),在列方向上數(shù)據(jù)重用率可達(dá)到100%,;參考文獻(xiàn)[4]和[5]提出的結(jié)構(gòu)能夠?qū)崿F(xiàn)100%的硬件處理器利用率,,但是均存在I/O帶寬大的缺點(diǎn)。本文根據(jù)AVS整像素運(yùn)動(dòng)估計(jì)的特點(diǎn),,采用二維內(nèi)置SAD加法樹計(jì)算陣列,,通過合理安排片上存儲(chǔ),極大地降低了I/O帶寬,;運(yùn)用了加1電路選擇進(jìn)位加法器,,進(jìn)一步縮小了結(jié)構(gòu)面積,提高了處理速度,,實(shí)現(xiàn)了適用于AVS的高性能整像素運(yùn)動(dòng)估計(jì)硬件設(shè)計(jì),。
1 AVS運(yùn)動(dòng)估計(jì)算法
1.1 可變塊運(yùn)動(dòng)估計(jì)
基于塊的運(yùn)動(dòng)估計(jì),即找到當(dāng)前幀的塊在參考幀中一定范圍內(nèi)最匹配的塊所在的相對(duì)位置,,這個(gè)相對(duì)位置稱為運(yùn)動(dòng)矢量,。AVS標(biāo)準(zhǔn)中規(guī)定將16×16的宏塊進(jìn)一步劃分為8×16、16×8,、8×8的子塊,,如圖1所示,這樣能夠提供更加精確的運(yùn)動(dòng)矢量預(yù)測(cè),??勺儔K運(yùn)動(dòng)估計(jì)需要對(duì)每個(gè)宏塊的所有子塊進(jìn)行塊匹配,即進(jìn)行9次計(jì)算,。本文采用如圖2所示的加法樹結(jié)構(gòu),,所有的大塊由小塊簡(jiǎn)單相加即可,,大大減少了計(jì)算量[4]。
2 AVS整像素運(yùn)動(dòng)估計(jì)硬件設(shè)計(jì)
2.1 像素截?cái)?/strong>
由參考文獻(xiàn)[2]可知,,適當(dāng)?shù)貙?duì)像素的低位數(shù)據(jù)進(jìn)行截?cái)?,并不影響整個(gè)運(yùn)動(dòng)估計(jì)的結(jié)果。本文采用的方法并不是真正截?cái)鄶?shù)據(jù),,而是利用“與門”將輸入像素的低3位變?yōu)?,,以減少運(yùn)算量,降低功耗,。
2.2 內(nèi)置SAD加法樹計(jì)算陣列
要實(shí)現(xiàn)高性能全搜索可變塊運(yùn)動(dòng)估計(jì)的硬件結(jié)構(gòu),,需要滿足資源利用率高、PE個(gè)數(shù)少,、I/O帶寬低等條件,。本文采用參考文獻(xiàn)[3]提出的在計(jì)算陣列中內(nèi)置加法樹的方法。計(jì)算陣列由8×8個(gè)處理單元(PE)及二維加法樹組成,,如圖3所示,。采用二維陣列結(jié)構(gòu)提高了硬件資源的利用率;將當(dāng)前像素儲(chǔ)存在陣列寄存器中,,不需要反復(fù)讀入當(dāng)前像素,PE個(gè)數(shù)由宏塊大小決定,,不隨著搜索窗大小變化而變化,;參考像素存儲(chǔ)在移位寄存器組中,每個(gè)移位寄存器存儲(chǔ)9個(gè)像素值,,配合蛇形移動(dòng)的數(shù)據(jù)傳輸方式,,如圖4所示,參考?jí)K數(shù)據(jù)輸入經(jīng)過初始的8個(gè)移動(dòng)周期后,,寄存器組中正好存放著一個(gè)參考?jí)K的像素值,,之后的每次移動(dòng),寄存器組中的數(shù)據(jù)只需更新一行新的數(shù)據(jù),,而有7行數(shù)據(jù)是與上一個(gè)參考?jí)K共享的, 這樣能實(shí)現(xiàn)列方向100%的數(shù)據(jù)重用率,,有效地減少了I/O帶寬。整個(gè)設(shè)計(jì)結(jié)構(gòu)有4個(gè)這樣的計(jì)算陣列,,只需在開始計(jì)算時(shí)等待25個(gè)周期,,以后的每個(gè)周期計(jì)算陣列都將輸出整個(gè)8×8塊的SAD值,保證了數(shù)據(jù)讀入過程中的時(shí)鐘不被浪費(fèi),。
2.3 進(jìn)位選擇加法器
通過上文介紹的結(jié)構(gòu)可知,,每個(gè)計(jì)算陣列需要使用大量的加法器。當(dāng)計(jì)算小塊SAD值時(shí),,不僅需要得到當(dāng)前像素和一個(gè)參考像素的差的絕對(duì)值,,而且需要累加整個(gè)塊的絕對(duì)差值,;當(dāng)計(jì)算大塊SAD值時(shí),又需要將小塊SAD值進(jìn)行累加,。大量的加法器嚴(yán)重影響計(jì)算陣列的面積和處理速度,,故本設(shè)計(jì)對(duì)加法器進(jìn)行了改進(jìn)。目前已有設(shè)計(jì)選擇使用超前進(jìn)位流水線加法器,,其處理速度雖然提高了很多,,但是大量并行處理占用了比普通加法器更多的資源。由于進(jìn)位選擇加法器比普通加法器處理速度快,,占用的資源比超前進(jìn)位加法器少,,所以本設(shè)計(jì)選擇進(jìn)位選擇加法器。
傳統(tǒng)的進(jìn)位選擇加法器使用兩個(gè)相同的行波法加法器計(jì)算高位的值,,兩個(gè)行波法加法器分別假設(shè)進(jìn)位為0和1并同時(shí)進(jìn)行計(jì)算,,等待正確的進(jìn)位到來時(shí),再選擇正確的結(jié)果輸出,。這樣雖然可以縮短等待時(shí)間,,但是占用面積較大。本文采用加1電路的選擇進(jìn)位加法器,,如圖5所示,。高位加法器以固定進(jìn)位為0進(jìn)行計(jì)算。若正確進(jìn)位為0,,則加1電路不必進(jìn)行計(jì)算,,直接輸出結(jié)果;若正確的進(jìn)位為1,,則將此結(jié)果加1,,得到進(jìn)位為1的結(jié)果。加1電路如圖6所示,,其中CS表示低位進(jìn)位,。如此,計(jì)算陣列的面積和功耗將會(huì)降低很多,,處理速度也較快,。
2.4 存儲(chǔ)器設(shè)計(jì)
由于當(dāng)前像素直接存放在陣列寄存器中,所以不需要設(shè)計(jì)緩沖器,??紤]到參考?jí)K一共有47×47個(gè)像素,且每個(gè)周期需要配合計(jì)算陣列蛇形輸入數(shù)據(jù),,因此采用片上RAM來緩存參考數(shù)據(jù),。將參考?jí)K分為6個(gè)區(qū)域,每個(gè)區(qū)域大小為8×47個(gè)像素,用RAM0~RAM5來標(biāo)識(shí),,如圖7所示,。設(shè)計(jì)使用雙端口RAM,利用奇偶地址,,讓32 bit雙端口RAM相當(dāng)于64 bit單端口RAM,。由于相鄰宏塊的搜索區(qū)域重疊部分占整個(gè)搜索塊的三分之二,按照本文的存儲(chǔ)器設(shè)計(jì),,當(dāng)進(jìn)行下一個(gè)宏塊的運(yùn)動(dòng)估計(jì)時(shí),,不需要更新整個(gè)參考?jí)K的數(shù)據(jù),只需更新其中兩個(gè)區(qū)域的數(shù)據(jù)即可,,進(jìn)一步減少了存儲(chǔ)帶寬,,提高了數(shù)據(jù)的重用率。
3 仿真和結(jié)構(gòu)分析
本文提出了一種適用于AVS的高性能整像素運(yùn)動(dòng)估計(jì)硬件設(shè)計(jì),,使用了Verilog HDL語言進(jìn)行RTL級(jí)描述,,用AVS軟件RM52j的C程序產(chǎn)生測(cè)試碼流,應(yīng)用了Modelsim 6.5c仿真平臺(tái)進(jìn)行了邏輯功能的仿真驗(yàn)證,。采用Synopsys的Design Compiler在SMIC 0.18 ?滋m CMOS工藝庫下綜合,,在最大頻率為250 MHz時(shí),門數(shù)為102 K(未包括存儲(chǔ)器面積),。表1給出了運(yùn)動(dòng)估計(jì)硬件設(shè)計(jì)性能分析,,這表明本文所設(shè)計(jì)的結(jié)構(gòu)具有高性能、低帶寬的優(yōu)勢(shì),。表2將本文提出的結(jié)構(gòu)與其他幾種運(yùn)動(dòng)估計(jì)結(jié)構(gòu)進(jìn)行了比較,,其中引用了效率E作為一個(gè)重要的比較參數(shù),E為結(jié)構(gòu)每秒處理的搜索點(diǎn)數(shù)和實(shí)際面積的比值,,具體公式見參考文獻(xiàn)[5]。通過比較可以看出,,本設(shè)計(jì)與參考文獻(xiàn)[5]的設(shè)計(jì)均可實(shí)現(xiàn)對(duì)高清圖像的實(shí)時(shí)處理,,但本設(shè)計(jì)的最快時(shí)鐘頻率提升了25%,面積減小了36.2%,,效率提高了98%,。
本文針對(duì)AVS視頻標(biāo)準(zhǔn),提出了一種適用于AVS的高性能整像素運(yùn)動(dòng)估計(jì)硬件設(shè)計(jì),。采用二維內(nèi)置SAD加法樹計(jì)算陣列,,通過合理的安排片上存儲(chǔ),優(yōu)化了加法器設(shè)計(jì),,大大提高了結(jié)構(gòu)的性能,。實(shí)驗(yàn)結(jié)果表明,本設(shè)計(jì)電路規(guī)模為102 K門,,處理一個(gè)宏塊只需要1 051個(gè)時(shí)鐘周期,,能夠以2 388.0搜索點(diǎn)數(shù)/秒門的效率對(duì)高清圖像進(jìn)行運(yùn)動(dòng)估計(jì),。與同類設(shè)計(jì)相比,本設(shè)計(jì)具有電路規(guī)模小,、處理速度快,、I/O帶寬低等優(yōu)勢(shì)。另外,,本設(shè)計(jì)還可以作為IP核嵌入到特定的處理器中,,對(duì)AVS高清視頻進(jìn)行實(shí)時(shí)處理。
參考文獻(xiàn)
[1] GB/T20090.2-2006.信息技術(shù)先進(jìn)音視頻編碼第二部分:視頻[S].2006.
[2] He Zhongli,,LIOU M I.Reducing hardware complexity of motion estimation algorithms using truncated pixels[C]. Proceedings of IEEE International Symposium on Circuits and Systems,,1997,4:2809-2812.
[3] CHEN C Y,,CHIEN S Y,,HUANG Y W,et al.Analysis and architecture design of variable block-size motion estimation for H.264/AVC[J].IEEE Transactions on Circuits and Systems,,2006,,53(3):578-593.
[4] Deng Lei,Xie Xiaodong,,Gao Wen.A real-time full architecture for AVS motion estimation[J].IEEE Transactions on Consumer Electronics,,2007,53(4):1744-1751.
[5] Cao Wei,,Hou Hui,,Tong Jiarong,et al.A high-performance reconfigurable VLSI architecture for VBSME in H.264[J]. IEEE Transactions on Consumer Electronics,,2008,,53(4):1338-1345.