專利名稱:全搜索擴展可變塊運動估計電路的制作方法
技術領域:
本發(fā)明涉及的是一種數(shù)字視頻處理技術領域的裝置,具體是一種全搜索擴展可變 塊運動估計電路。
背景技術:
數(shù)字視頻傳輸?shù)膱D像數(shù)據(jù)中往往存在著大量的冗余數(shù)據(jù),如果可以將那些冗余數(shù) 據(jù)除去,從而可以大大減少數(shù)據(jù)的傳輸量。運動估計(Motion Estimation,簡稱ME)通過消 除運動圖像中時間域的相關性,計算兩幀之間的參考塊的絕對差值(the Sum of Absolute Difference,簡稱SAD),由于兩幀之間的差可以用比幀內(nèi)編碼少得多的比特數(shù)來編碼,從而 達到壓縮圖像的目的。運動補償(Motion Compensation,簡稱MC)利用先前圖像和運動估 計的結(jié)果來預測、補償當前的圖像。由于視頻圖像是位于時間軸區(qū)間內(nèi)的一組連續(xù)畫面,因此相鄰幀間的變化量一般 很小,僅是運動物體的空間位置略有移動。因此運動估計和運動補償技術是去除大量冗余 的有效方法。運動估計作為視頻編碼器的核心部件,也是視頻壓縮中的最復雜的部分,對視頻 圖像的編碼壓縮質(zhì)量起到?jīng)Q定性的作用。在運動估計的算法研究中,人們針對不同應用提 出了多種不同的算法;在這些算法中,最為經(jīng)典且具有實用性的為全搜索塊匹配算法(Full Search BlockMatching Algorithm,簡稱 FSBM 算法)。全搜索塊匹配算法(FullSearch Block Matching Algorithm,簡稱 FSBM 算法) 是指,將圖像中的一幀的搜索區(qū)域劃分成許多互不重疊的16X16像素宏塊(Macro-Block, 簡稱MB)之后,每一宏塊與相鄰幀搜索區(qū)域的所有塊的像素值進行比較匹配來得到最佳匹 配塊,即具有與當前塊比較匹配后擁有最小SAD值的塊。所得的匹配塊與當前塊的相對位 移稱為運動矢量(Motion Vector,簡稱MV)。視頻壓縮編碼時,僅對運動矢量編碼即可。基于宏塊的全搜索塊匹配算法結(jié)構(gòu)簡單,易于硬件實現(xiàn),硬件電路結(jié)構(gòu)整齊,并且 可重復性高,易于擴展,并能夠得到全局最優(yōu)的運動矢量,因此被廣泛應用于各種視頻編碼 標準中。該算法的最大缺點是運算量較大。在基于宏塊的運動估計的基礎上,人們又引入的基于可變塊的運動估計算法。與 基于宏塊的運動估計算法不同,在可變塊運動估計算法中,進行運動估計的塊除了包括 16X16像素的宏塊外,還包括4X4、4X8、8X4、8X8、8X16、16X8等不同大小的塊。在當前正在制定的High Performance Coding標準中,人們提出了擴展可變塊運 動估計算法,進行運動估計的塊包括4X 4、4X 8、8 X 4、8 X 8、8 X 16、16 X 8、16 X 16、16 X 32、 32X16、32X32、32X64、64X32、64X64像素這些大小不同的塊。通過檢索,并未發(fā)現(xiàn)針對擴展可變塊運動估計算法的電路結(jié)構(gòu)。且如果套用現(xiàn)有 的算法和已有的結(jié)構(gòu)則需要64X64個運算處理單元(簡稱PE),造成硬件開銷過大;如果 將其分解為16X16的小塊進行計算,則會需要較大的輸入端口和較大的存儲空間。
發(fā)明內(nèi)容
本發(fā)明針對現(xiàn)有技術存在的上述不足,提供一種全搜索擴展可變塊運動估計電 路,利用PE上下左右側(cè)的緩存陣列以及控制信號對數(shù)據(jù)流的控制來實現(xiàn)用64X4的運動估 計PE陣列來完成64X64大小宏塊的擴展可變塊運動估計。本發(fā)明是通過以下技術方案實現(xiàn)的,本發(fā)明包括四個緩存陣列、一個PE陣列,其 中第一緩存陣列的數(shù)據(jù)雙向輸入輸出端口分別與PE陣列的第一數(shù)據(jù)輸入輸出端、第三緩 存陣列的上側(cè)三行數(shù)據(jù)輸入輸出端、第四緩存陣列的上側(cè)三行數(shù)據(jù)輸入輸出端相連接并傳 輸搜索區(qū)域數(shù)據(jù)信息,第二緩存陣列的數(shù)據(jù)雙向輸入輸出端口分別與PE陣列的第二數(shù)據(jù) 輸入輸出端、第三緩存陣列的下側(cè)三行數(shù)據(jù)輸入輸出端、第四緩存陣列的下側(cè)三行數(shù)據(jù)輸 入輸出端相連接并傳輸搜索區(qū)域數(shù)據(jù)信息,第三緩存陣列的數(shù)據(jù)雙向輸入輸出端口與PE 陣列的第三數(shù)據(jù)輸入輸出端、第一緩存陣列的左側(cè)數(shù)據(jù)輸入輸出端、第二緩存陣列的左側(cè) 數(shù)據(jù)輸入輸出端相連接并傳輸搜索區(qū)域數(shù)據(jù)信息,第四緩存陣列的數(shù)據(jù)雙向輸入輸出端口 與PE陣列的第四數(shù)據(jù)輸入輸出端、第一緩存陣列的右側(cè)數(shù)據(jù)輸入輸出端、第二緩存陣列的 右側(cè)數(shù)據(jù)輸入輸出端連接并傳輸搜索區(qū)域數(shù)據(jù)信息,PE陣列的數(shù)據(jù)輸入端接收搜索區(qū)域數(shù) 據(jù)流及其控制信號、參考塊數(shù)據(jù)流及其控制信號,第一至第四緩存陣列的數(shù)據(jù)輸入端接收 搜索區(qū)域數(shù)據(jù)流及其控制信號。所述的PE陣列由16個4X4的雙向縱向級聯(lián)的基本宏塊PE陣列構(gòu)成,該基本宏 塊PE陣列處理的數(shù)據(jù)包括搜索區(qū)域數(shù)據(jù)部分和參考塊數(shù)據(jù)部分,其中搜索區(qū)域數(shù)據(jù)部 分在基本宏塊PE陣列內(nèi)進行橫向雙向傳遞及縱向雙向傳遞并在基本宏塊PE陣列之間縱向 雙向傳遞;參考塊數(shù)據(jù)部分在基本宏塊PE陣列內(nèi)進行依次單向傳遞。所述的第一緩存陣列為3X4個緩存組成,其中緩存陣列中的每一個緩存均與其 左右相鄰的緩存橫向雙向連接,與其上下相鄰的緩存縱向雙向連接。所述的第二緩存陣列為3X4個緩存組成,其中緩存陣列中的每一個緩存均與其 左右相鄰的緩存橫向雙向連接,與其上下相鄰的緩存縱向雙向連接。所述的第三緩存陣列為70X3個緩存組成;其中緩存陣列中的每一個緩存均與 其左右相鄰的緩存橫向雙向連接,與其上下相鄰的緩存縱向雙向連接。所述的第四緩存陣列為70X3個緩存組成;其中緩存陣列中的每一個緩存均與 其左右相鄰的緩存橫向雙向連接,與其上下相鄰的緩存縱向雙向連接。所述的PE陣列與緩存陣列之間連接關系為PE陣列與第一、第二緩存陣列的互聯(lián) 為縱向雙向級聯(lián),進行搜索區(qū)域數(shù)據(jù)的雙向傳播;PE陣列與第三、第四緩存陣列的互聯(lián)為 橫向雙向級聯(lián),進行搜索區(qū)域的數(shù)據(jù)的雙向傳播;PE陣列上下兩側(cè)的第一、第二緩存陣列 與左右兩側(cè)的第三、第四緩存陣列的互聯(lián)為橫向雙向級聯(lián),進行搜索區(qū)域的數(shù)據(jù)的雙向傳 播。本發(fā)明電路通過以下方式進行工作本發(fā)明結(jié)構(gòu)主要由PE陣列及其上、下、左、右側(cè)的第一、第二、第三、第四緩存陣列 構(gòu)成。PE陣列負責SAD值的計算及搜索區(qū)域和參考塊數(shù)據(jù)的傳遞,緩存陣列負責搜索區(qū)域 數(shù)據(jù)的暫存及傳遞。PE陣列由16個4X 4的基本宏塊PE陣列構(gòu)成,每個基本宏塊PE陣列由16個PE 相互連接構(gòu)成,第一行PE依次為?、(1,?、1沖、2卞£(1.3,第二行?£依次為PEi^PEi^PEu,PE1^,第三行 PE 依次為 PE2,。,PE2a, PE2j2, PE2.3,第四行 PE 依次為 PE3,。,PE3il,PE3,2,PE3.3?;?本宏塊陣列中的每一個PE都與其左右相鄰的PE之間橫向雙向輸入輸出連接,與其上下相 鄰的PE之間縱向雙向輸入輸出連接,且橫向和縱向的雙向連接傳輸?shù)臄?shù)據(jù)為搜索區(qū)域數(shù) 據(jù)。此夕卜,PE0,ο,PEli0' PE2,ο' PE3,0,PE0,ι,PEiaj PE2,” PE3,” PE0,2,PEli2, PE2,2,PE3,2,PE0,3,PE1, 3,PE2,3, PE3,3之間依次順次連接,連接所傳輸?shù)臄?shù)據(jù)為參考塊的數(shù)據(jù),參考塊數(shù)據(jù)從PEu輸 入,依次傳輸至PE3,3為止。如圖3所示。每個PE內(nèi)部結(jié)構(gòu)主要包括搜索區(qū)域數(shù)據(jù)的暫存及傳輸,參考塊數(shù)據(jù)的選擇、暫存 和傳輸,SAD值的計算及暫存。每個時鐘周期,搜索區(qū)域數(shù)據(jù)在控制信號的控制下上、下、 左、右輸入和輸出PE并暫存Reg_s,并將需要進行計算的搜索區(qū)域數(shù)據(jù)輸入SAD計算模塊
x_y I,參考塊的數(shù)據(jù)在Rfr_pxl_Ctrl信號的控制下選擇進入Regl向外輸出或進入Reg2 并輸入到SAD計算模塊I x-y I,SAD計算模塊I x-y |進行SAD值計算后結(jié)果進入暫存Reg并 輸出。如圖4所示。數(shù)據(jù)流在控制信號的控制下,PE陣列每個時鐘周期都進行一個64X4的基本塊條 帶SAD值的計算,并輸出;則16個時鐘周期輸出16個基本塊條帶的SAD值,256個時鐘周期 則可以得到16個64X64的宏塊的SAD值。從而達到對擴展可變塊進行運動估計的目標。再將輸出的SAD值利用加法樹結(jié)構(gòu)來疊加,則由64X4的基本塊條帶SAD值可得 到64X64的宏塊的SAD值。本發(fā)明提出了一種全新的針對擴展可變塊的運動估計電路,使得其運算陣列所占 用的硬件開銷與傳統(tǒng)的可變塊運動估計電路相當,而在內(nèi)部緩存和輸入端口有很好的折 中,使得其在HDTV和更大圖像的編碼中有很好的應用前景。
圖1為本發(fā)明結(jié)構(gòu)示意圖。圖2為SAD值的加法樹結(jié)構(gòu)示意圖。圖3為BBPEA的電路結(jié)構(gòu)示意圖。圖4為PE內(nèi)部電路結(jié)構(gòu)示意圖。圖5為第一緩存陣列的電路結(jié)構(gòu)示意圖。圖6為第二緩存陣列的電路結(jié)構(gòu)示意圖。圖7為第三緩存陣列的電路結(jié)構(gòu)示意圖。圖8為第四緩存陣列的電路結(jié)構(gòu)示意圖。
具體實施例方式下面對本發(fā)明的實施例作詳細說明,本實施例在以本發(fā)明技術方案為前提下進行 實施,給出了詳細的實施方式和具體的操作過程,但本發(fā)明的保護范圍不限于下述的實施 例。如圖1所示,本實施例包括第一緩存陣列1、第二緩存陣列2、第三緩存陣列3、第 四緩存陣列4和PE陣列5,其中第一緩存陣列1的數(shù)據(jù)雙向輸入輸出端口分別與PE陣列 5的第一數(shù)據(jù)輸入輸出端、第三緩存陣列3的上側(cè)三行數(shù)據(jù)輸入輸出端、第四緩存陣列4的 上側(cè)三行數(shù)據(jù)輸入輸出端相連接并傳輸搜索區(qū)域數(shù)據(jù)信息,第二緩存陣列2的數(shù)據(jù)雙向輸入輸出端口分別與PE陣列5的第二數(shù)據(jù)輸入輸出端、第三緩存陣列3的下側(cè)三行數(shù)據(jù)輸入 輸出端、第四緩存陣列4的下側(cè)三行數(shù)據(jù)輸入輸出端相連接并傳輸搜索區(qū)域數(shù)據(jù)信息,第 三緩存陣列3的數(shù)據(jù)雙向輸入輸出端口與PE陣列5的第三數(shù)據(jù)輸入輸出端、第一緩存陣列 1的左側(cè)數(shù)據(jù)輸入輸出端、第二緩存陣列2的左側(cè)數(shù)據(jù)輸入輸出端相連接并傳輸搜索區(qū)域 數(shù)據(jù)信息,第四緩存陣列4的數(shù)據(jù)雙向輸入輸出端口與PE陣列5的第四數(shù)據(jù)輸入輸出端、 第一緩存陣列1的右側(cè)數(shù)據(jù)輸入輸出端、第二緩存陣列2的右側(cè)數(shù)據(jù)輸入輸出端連接并傳 輸搜索區(qū)域數(shù)據(jù)信息,PE陣列5的數(shù)據(jù)輸入端接收搜索區(qū)域數(shù)據(jù)流及其控制信號、參考塊 數(shù)據(jù)流及其控制信號,第一至第四緩存陣列4的數(shù)據(jù)輸入端接收搜索區(qū)域數(shù)據(jù)流及其控制 信號。所述的PE陣列5由16個4X4的雙向縱向級聯(lián)的基本宏塊PE陣列6、7、…、22 組成,該基本宏塊PE陣列處理的數(shù)據(jù)包括搜索區(qū)域數(shù)據(jù)部分23和參考塊數(shù)據(jù)部分24,其 中搜索區(qū)域數(shù)據(jù)部分23在基本宏塊PE陣列內(nèi)進行橫向雙向傳遞及縱向雙向傳遞并在基 本宏塊PE陣列之間縱向雙向傳遞;參考塊數(shù)據(jù)部分24在基本宏塊PE陣列內(nèi)進行依次單向 傳遞。如圖5所示,所述的第一緩存陣列1為3X4個緩存組成,頂端一行的緩存依次為 R0,0' R0,!' Ro,2' Ru,每一個緩存都有左、右、下側(cè)三個方向的數(shù)據(jù)雙向輸入及輸出;第二行的 緩存依次為Ru,Ria, Rlj2, R1j3'第三行的緩存依次為R2,。,R2jl'R2,2' R2,3,第二行和第三行的每 一個緩存均有左、右、上、下側(cè)四個方向的數(shù)據(jù)雙向輸入及輸出。最左側(cè)的緩存Ru,Ru,R2, O與第一緩存陣列外左側(cè)橫向輸入輸出雙向連接,最右側(cè)的緩存Ru,Ru,R2,3與第一緩存陣 列外右側(cè)橫向輸入輸出雙向連接,最下側(cè)的緩存R2,ο,R2,!' R2,2' R2,3與第一緩存陣列外下側(cè) 縱向輸入輸出雙向連接。如圖6所示,所述的第二緩存陣列2為3X4個緩存組成,底端一行的緩存依次為 R2,0,R2,!' R2,2' R2,3,每一個緩存都有左、右、上側(cè)三個方向的數(shù)據(jù)雙向輸入及輸出;第二行的 緩存依次為禮,。,Ria, Rlj2, R1j3'第一行的緩存依次為Rtl,。,R0,i'R0,2' R。,3,第一行和第二行的每 一個緩存均有左、右、上、下側(cè)四個方向的數(shù)據(jù)雙向輸入及輸出,最左側(cè)的緩存Ru,R1,ο' R2,ο 與第二緩存陣列外左側(cè)橫向輸入輸出雙向連接,最右側(cè)的緩存R0,3,Ru,R2,3與第二緩存陣 列外右側(cè)橫向輸入輸出雙向連接,最上側(cè)的緩存Ru,Ro,i' R0,2'禮,3與第二緩存陣列外上側(cè) 縱向輸入輸出雙向連接。如圖7所示,所述的第三緩存陣列3為70X3個緩存組成,最左側(cè)一列的緩存依次 為禮,。,禮,?!璕69,C1,其中對于R1^R2itl……R68,ο,每一個緩存都有右、上、下側(cè)三個方向的數(shù) 據(jù)雙向輸入及輸出,及左側(cè)數(shù)據(jù)的輸入;而Ru僅有右、下側(cè)方向的數(shù)據(jù)雙向輸入及輸出, 左側(cè)的數(shù)據(jù)輸入;R69itl僅有右、上側(cè)方向的數(shù)據(jù)雙向輸入及輸出,左側(cè)的數(shù)據(jù)輸入。中間一 列緩存依次為Rcm, Ria……R69il,最右側(cè)一列緩存依次為Rtl,2,Rli2……R69,2,這兩列緩存中, Rlll,R2jl……!^〃及禮』,R2,2……R68,2的每一個緩存均有左、右、上、下側(cè)四個方向的數(shù)據(jù)雙 向輸入及輸出;而Rtl,pR?!粌H有左、右、下側(cè)方向的數(shù)據(jù)雙向輸入及輸出A69ll,R69,2僅有左、 右、上側(cè)方向的數(shù)據(jù)雙向輸入及輸出,最左側(cè)的緩存Ru,R1^……R69,ο與第三緩存陣列外左 側(cè)橫向輸入連接,最右側(cè)的緩存Rtl,2,禮,2……R69,2與第三緩存陣列外右側(cè)橫向輸入輸出雙向 連接,最上側(cè)的緩存Rtl,。,R0jl' R0,2' R0,3沒有上側(cè)的輸入輸出連接,R69j0' R69,I' R69,2,R69,3沒有 下側(cè)的輸入輸出連接。
如圖8所示,所述的第四緩存陣列4為70X3個緩存組成,最右側(cè)一列的緩存依次 為禮,2,禮,2……R69,2,其中對于R1^R2i2……R68,2,每一個緩存都有左、上、下側(cè)三個方向的數(shù) 據(jù)雙向輸入及輸出,及右側(cè)數(shù)據(jù)的輸入;而Rc^2僅有左、下側(cè)方向的數(shù)據(jù)雙向輸入及輸出, 右側(cè)的數(shù)據(jù)輸入;R69,2僅有左、上側(cè)方向的數(shù)據(jù)雙向輸入及輸出,右側(cè)的數(shù)據(jù)輸入。中間一 列緩存依次為Rcm, Ria……R69il,最左側(cè)一列緩存依次為Rtl,。,Ru……R69,。,這兩列緩存中, Rlll,R2jl……!^〃及禮,。,R2,Q……R68,。的每一個緩存均有左、右、上、下側(cè)四個方向的數(shù)據(jù)雙 向輸入及輸出;而Rtl,”禮,。僅有左、右、下側(cè)方向的數(shù)據(jù)雙向輸入及輸出A69ll,R69,。僅有左、 右、上側(cè)方向的數(shù)據(jù)雙向輸入及輸出,最左側(cè)的緩存Ru,R1^……R69,。與第四緩存陣列外左 側(cè)橫向輸入輸出雙向連接,最右側(cè)的緩存Rtl,2,禮,2……R69,2與第三緩存陣列外右側(cè)橫向輸入 連接,最上側(cè)的緩存Rtl,。,R0jl' R0,2' R0,3沒有上側(cè)的輸入輸出連接,R69j0' R69,I' R69,2,R69,3沒有 下側(cè)的輸入輸出連接。所述的PE陣列5與緩存陣列之間連接關系為PE陣列5與第一緩存陣列1、第二 緩存陣列2的互聯(lián)為縱向雙向級聯(lián),進行搜索區(qū)域數(shù)據(jù)的雙向傳播;PE陣列5與第三緩存 陣列3、第四緩存陣列4的互聯(lián)為橫向雙向級聯(lián),進行搜索區(qū)域的數(shù)據(jù)的雙向傳播;PE陣列 5上下兩側(cè)的第一緩存陣列1、第二緩存陣列2與左右兩側(cè)的第三緩存陣列3、第四緩存陣列 4的互聯(lián)為橫向雙向級聯(lián),進行搜索區(qū)域的數(shù)據(jù)的雙向傳播。PE陣列5左右兩側(cè)的第三緩存陣列3、第四緩存陣列4的搜索區(qū)域的數(shù)據(jù)輸入可 以由整體電路的外部輸入端輸入其左側(cè)或右側(cè),也有從運算單元陣列和第一緩存陣列1、第 二緩存陣列2中輸入其右側(cè)或左側(cè),既有數(shù)據(jù)內(nèi)部的互聯(lián),又有外部的數(shù)據(jù)輸入;而PE陣列 5上下側(cè)的第一緩存陣列1、第二緩存陣列2的搜索區(qū)域數(shù)據(jù)均由與其相鄰的第三緩存陣列 3、第四緩存陣列4從左右側(cè)輸入,或由PE陣列5中數(shù)據(jù)從上下側(cè)輸入,僅為內(nèi)部數(shù)據(jù)的互 聯(lián),沒有外部數(shù)據(jù)輸入。第三緩存陣列3、第四緩存陣列4的搜索區(qū)域的數(shù)據(jù)輸入以四分之一列為單位輸 入,經(jīng)過4個時鐘周期完成一列搜索區(qū)域數(shù)據(jù)傳送值左或右側(cè)緩存陣列的最外側(cè)。由于PE 陣列5的搜索區(qū)域數(shù)據(jù)由緩存陣列中直接互聯(lián)傳輸,因此數(shù)據(jù)控制信號shift[l:0]控制為 左右移動數(shù)據(jù)時,每個時鐘周期均可移動一列數(shù)據(jù),即一個時鐘周期就可完成數(shù)據(jù)左右傳 送至PE陣列或第一緩存陣列1、第二緩存陣列2。參考塊的數(shù)據(jù)位寬共為16X8bit = 128bit,分別輸入至16個4X4的基本宏塊 PE陣列6、7、…、22的輸入中,且16個基本宏塊PE陣列6、7、…、22的參考塊數(shù)據(jù)輸入是 并行同步的。一共需要16個時鐘周期能夠完成一次64X4像素的參考塊數(shù)據(jù)到達各個目 的PE中。從而每個基本宏塊PE陣列6、7、…、22每個時鐘周期均可輸出一組16個SAD值, 每16個時鐘周期可輸出16組每組16個SAD值;64X4的PE陣列每個時鐘周期均可輸出 256個SAD值,每16個時鐘周期可輸出16組每組256個SAD值。PE陣列每16個時鐘周期 輸出的16組SAD值恰為對應搜索窗中一個4X4小塊內(nèi)的各點對應的16個64X4像素的 基本塊條帶與參考塊中的一個基本塊條帶之間計算64X4像素的SAD值所需的各點的SAD 值。4X 4塊的SAD值疊加模塊由于上節(jié)所描述PE陣列5和第一緩存陣列1、第二緩存陣列2、第三緩存陣列3、第四緩存陣列4電路結(jié)構(gòu)得到的輸出為單個像素點的SAD值,并且希望能夠得到4X4像素 的基本宏塊的SAD值,因此SAD值的疊加首先將各個基本宏塊PE陣列6、7、…、22得到16 個SAD值相加得到4X4像素的基本宏塊的SAD值,通過加法樹得到4X4的基本宏塊的SAD 值。由16個單獨的SAD相加得到一個4X4像素的SAD值的加法樹如圖2所示。然后類似 的,再將這些值相加得到64X4像素的基本塊條帶的SAD值。然后每隔16個時鐘周期,將各個相應的64X4像素的基本塊條帶的SAD值輸入相 應的累加器,經(jīng)過256個時鐘周期的15次疊加得到最終64X64的宏塊的SAD值。共有16 個64X4像素的SAD值累加至64X64像素的SAD值的累加器。每16個時鐘周期輸出的各個基本塊條帶的SAD值的輸出順序都不同,因此需要有 控制信號對每個時鐘周期輸出的基本塊條帶的64X4像素的SAD值的連接進行選擇。以狀 態(tài)機的形式,將掃描順序劃分為不同模式,每一種掃描模式在16個時鐘周期內(nèi)的16個SAD 值分別屬于不同的累加器。基本宏塊PE陣列結(jié)構(gòu)6、7、…、22如圖3所示,將64行X 4列的PE陣列5劃分為16個4X 4的基本宏塊PE陣列 (BBPEA)6,7,…、22,不僅有利于控制參考塊的數(shù)據(jù)傳輸,而且陣列整齊,方便產(chǎn)生4X4的 基本宏塊的SAD值,且具有可重復性。由圖3中的基本宏塊PE陣列6、7、…、22可以看到,虛線線條代表參考塊的像素 數(shù)據(jù)流,位寬為1像素的8bit ;實線線條代表搜索區(qū)域的當前塊的像素數(shù)據(jù)流,位寬同樣為 1像素的8bit??梢钥吹?,參考塊的數(shù)據(jù)又左上角的第一個PE開始,依次進入該基本宏塊 陣列6、7、…、22的各個PE中,只需將輸入的參考塊數(shù)據(jù)倒序依次進入,并控制數(shù)據(jù)用于運 算的時序,即可完成參考塊數(shù)據(jù)的傳輸。搜索區(qū)域的當前塊的數(shù)據(jù)的內(nèi)部傳輸,采用廣播式 的上下左右互聯(lián),與外部的上下左右互聯(lián)也類似,內(nèi)部數(shù)據(jù)流和內(nèi)外數(shù)據(jù)流的上、下、左、右 的控制由控制信號shift[l:0]統(tǒng)一控制。一個基本宏塊陣列(6、7、…、22)的輸入主要有時鐘信號clk,復位信號rst_n,搜 索區(qū)域數(shù)據(jù)流的控制信號shift[l:0],上、下、左、右的搜索區(qū)域的當前塊的像素點的數(shù)據(jù) 輸入,參考塊的像素數(shù)據(jù)輸入及控制信號;輸出16個SAD值。一個PE內(nèi)部電路結(jié)構(gòu)如圖4所示,虛線線條代表參考塊的像素數(shù)據(jù)流,位寬為1像素的Sbit ;實線線條 代表搜索區(qū)域的當前塊的像素數(shù)據(jù)流,位寬同樣為1像素的8bit ;紫紅色線條代表輸出一 個參考塊像素點和一個搜索區(qū)域的當前塊的點的SAD值輸出。一個PE的主要功能為求出參考塊的一個像素和搜索區(qū)域的當前塊的一個像素之 間的差的絕對值,并完成參考塊的一個像素點的數(shù)據(jù)和搜索區(qū)域的一個像素點的數(shù)據(jù)的傳 輸。其中,參考塊的數(shù)據(jù)由相鄰的PE傳入并傳送至下一個相鄰的PE中,搜索區(qū)域的像素分 別向上、下、左、右四個方向傳送。參考塊的數(shù)據(jù)的傳送采用乒乓模式,Regl和Reg2交替工作以保證參考塊數(shù)據(jù)的 傳輸和應用。非本PE所需的參考塊的像素值放入Regl中,然后將此數(shù)據(jù)不斷向下傳輸,以 保證參考塊數(shù)據(jù)的傳輸?shù)牧魉?;根?jù)算法的設計,本PE計算所需的參考塊數(shù)據(jù)將在每16 個時鐘周期的最后一個周期進入,則將該數(shù)據(jù)送至Reg2。每十六個時鐘周期為一個循環(huán),在 上一次16個時鐘周期的完成16個基本塊條帶的SAD計算時,恰好完成下一次的16個時鐘周期的16個基本塊條帶的SAD計算所需的參考塊的數(shù)據(jù)?!獋€PE的輸入主要有時鐘信號clk,復位信號rst_n,搜索區(qū)域數(shù)據(jù)流的控制信號 shift[l:0],上、下、左、右的搜索區(qū)域的當前塊的像素點的數(shù)據(jù)輸入,參考塊的像素數(shù)據(jù)輸 入及控制信號;輸出1個像素的SAD值。第一緩存陣列1、第二緩存陣列2結(jié)構(gòu)搜索區(qū)域的數(shù)據(jù)以列為單位進入,第一緩存陣列1、第二緩存陣列2中的搜索區(qū)域 的數(shù)據(jù)由上下的PE陣列和第三緩存陣列3、第四緩存陣列4傳送進入,并非由外界直接進 入。第一緩存陣列1、第二緩存陣列2的列數(shù)設置為與PE陣列一致,為4列。根據(jù)搜索區(qū)域的數(shù)據(jù)流的分析,第一緩存陣列1、第二緩存陣列2僅需設計為分別 可存儲3行像素的數(shù)據(jù)的大小即可。以第一緩存陣列1為例,如圖5所示。第一緩存陣列1中,除了最上面一排的寄存器沒有上端數(shù)據(jù)輸入外,每個數(shù)據(jù)寄 存器均有橫向和縱向的4個方向數(shù)據(jù)的雙向連接輸入和輸出。同理,PE陣列5下側(cè)的第二 緩存陣列2中,除了最下面一排的寄存器沒有下端數(shù)據(jù)輸入外,每個數(shù)據(jù)寄存器均有橫向 和縱向的4個方向數(shù)據(jù)的雙向連接輸入和輸出。第二緩存陣列2與上側(cè)對稱,如圖6所示。PE陣列5上下側(cè)的第一緩存陣列1和第二緩存陣列2的輸入輸出信號主要有時鐘 信號clk,復位信號rst_n,搜索區(qū)域數(shù)據(jù)流的控制信號shift[l:0],上、下、左、右的搜索區(qū) 域的當前塊的像素點的數(shù)據(jù)輸入,參考塊的像素數(shù)據(jù)輸入及控制信號;輸出為上、下、左、右 的搜索區(qū)域的當前塊的像素點的數(shù)據(jù)。第三緩存陣列3、第四緩存陣列4結(jié)構(gòu)設計為搜索區(qū)域的數(shù)據(jù)以列為單位進入,綜合考慮第一緩存陣列1、第二緩存陣列 2與PE陣列5結(jié)構(gòu)及搜索區(qū)域數(shù)據(jù)流,設置第三緩存陣列3、第四緩存陣列4的行數(shù)應為 64+3+3 = 70 行。搜索區(qū)域的數(shù)據(jù)流的分析,以列為單位數(shù)據(jù)進入,將第三緩存陣列3、第四緩存陣 列4設計為分別可存儲3列像素的數(shù)據(jù)即可。即第三緩存陣列3、第四緩存陣列4均為70X3 列。以PE左側(cè)的第三緩存陣列3為例,如圖7所示。第三緩存陣列3中,除了最左面一列的寄存器的左端僅有數(shù)據(jù)輸入僅有輸出外, 每個數(shù)據(jù)寄存器均有橫向和縱向的4個方向數(shù)據(jù)的雙向連接輸入和輸出。同理,第四緩存 陣列4中,除了最右側(cè)一列的寄存器的右端僅有數(shù)據(jù)輸入沒有輸出外,每個數(shù)據(jù)寄存器均 有橫向和縱向的4個方向數(shù)據(jù)的雙向連接輸入和輸出。第四緩存陣列4與左側(cè)對稱,如圖8所示。第三緩存陣列3、第四緩存陣列4的輸入輸出信號主要有時鐘信號clk,復位信號 rst_n,搜索區(qū)域數(shù)據(jù)流的控制信號shift[l:0],上、下、左、右的搜索區(qū)域的當前塊的像素 點的數(shù)據(jù)輸入,參考塊的像素數(shù)據(jù)輸入及控制信號;輸出為上、下、左、右的搜索區(qū)域的當前 塊的像素點的數(shù)據(jù)。由于全搜索可變塊運動估計算法的計算量較大,所以一般采用ASIC的方式進行 芯片實現(xiàn)。根據(jù)視頻應用的不同,可變塊運動估計的電路結(jié)構(gòu)可分為一維陣列結(jié)構(gòu)和二維陣列結(jié)構(gòu)兩類。對于較小的視頻圖像,一般采用一維的陣列結(jié)構(gòu)完成全搜索可變塊運動估 計算法的計算任務。而對于較大圖像的視頻壓縮,例如HDTV或者更大圖像的視頻編碼,一 般采用二維陣列結(jié)構(gòu)來實現(xiàn)可變塊運動估計算法,且陣列的規(guī)模一般要大于或者等于算法 中最大塊中像素的個數(shù)。對于擴展塊的運動估計算法,其最大的塊為64X64像素。如果套用當前的可變塊 運動估計VLSI結(jié)構(gòu),則電路中將包括64 X 64個運算處理單元,差不多是傳統(tǒng)結(jié)構(gòu)硬件開銷 的16倍。同時,如果將64X64像素宏塊SAD值計算順序分解為依次算出組成64X64像素 宏塊的16個小塊的SAD值,然后將這些小SAD相加得到宏塊的SAD值,則會導致缺少數(shù)據(jù)復 用,因此需要較多的輸入端口 ;另一方面,如果宏塊SAD值計算順序為計算出所有16X16MB 與參考塊的搜索范圍的所有SAD值后,將其寄存在buffer中,再將各SAD值進行相加得到 大的宏塊的SAD值,而這樣的策略會導致需要大量的buffer,需較大的存儲空間。在提出的擴展可變塊運動估計電路結(jié)構(gòu)中,得到了一種全新的電路結(jié)構(gòu),其陣列 的大小與傳統(tǒng)的可變塊運動估計電路的陣列規(guī)模相似,僅需要64X4個運算處理單元(遠 少于64 X 64個);且在輸入端口和內(nèi)部緩存上進行了較好的折中,使得其在HDTV及其更大 圖像的編碼中具有較好的應用前景。
權利要求
一種全搜索擴展可變塊運動估計電路,其特征在于,包括四個緩存陣列、一個PE陣列,其中第一緩存陣列的數(shù)據(jù)雙向輸入輸出端口分別與PE陣列的第一數(shù)據(jù)輸入輸出端、第三緩存陣列的上側(cè)三行數(shù)據(jù)輸入輸出端、第四緩存陣列的上側(cè)三行數(shù)據(jù)輸入輸出端相連接并傳輸搜索區(qū)域數(shù)據(jù)信息,第二緩存陣列的數(shù)據(jù)雙向輸入輸出端口分別與PE陣列的第二數(shù)據(jù)輸入輸出端、第三緩存陣列的下側(cè)三行數(shù)據(jù)輸入輸出端、第四緩存陣列的下側(cè)三行數(shù)據(jù)輸入輸出端相連接并傳輸搜索區(qū)域數(shù)據(jù)信息,第三緩存陣列的數(shù)據(jù)雙向輸入輸出端口與PE陣列的第三數(shù)據(jù)輸入輸出端、第一緩存陣列的左側(cè)數(shù)據(jù)輸入輸出端、第二緩存陣列的左側(cè)數(shù)據(jù)輸入輸出端相連接并傳輸搜索區(qū)域數(shù)據(jù)信息,第四緩存陣列的數(shù)據(jù)雙向輸入輸出端口與PE陣列的第四數(shù)據(jù)輸入輸出端、第一緩存陣列的右側(cè)數(shù)據(jù)輸入輸出端、第二緩存陣列的右側(cè)數(shù)據(jù)輸入輸出端連接并傳輸搜索區(qū)域數(shù)據(jù)信息,PE陣列的數(shù)據(jù)輸入端接收搜索區(qū)域數(shù)據(jù)流及其控制信號、參考塊數(shù)據(jù)流及其控制信號,第一至第四緩存陣列的數(shù)據(jù)輸入端接收搜索區(qū)域數(shù)據(jù)流及其控制信號。
2.根據(jù)權利要求1所述的全搜索擴展可變塊運動估計電路,其特征是,所述的PE陣列 由16個4X4的雙向縱向級聯(lián)的基本宏塊PE陣列構(gòu)成,該基本宏塊PE陣列處理的數(shù)據(jù)包 括搜索區(qū)域數(shù)據(jù)部分和參考塊數(shù)據(jù)部分,其中搜索區(qū)域數(shù)據(jù)部分在基本宏塊PE陣列內(nèi) 進行橫向雙向傳遞及縱向雙向傳遞并在基本宏塊PE陣列之間縱向雙向傳遞;參考塊數(shù)據(jù) 部分在基本宏塊PE陣列內(nèi)進行依次單向傳遞。
3.根據(jù)權利要求1所述的全搜索擴展可變塊運動估計電路,其特征是,所述的第一緩 存陣列和第二緩存陣列均為3X4個緩存組成,其中的每一個緩存均與其左右相鄰的緩存 橫向雙向連接,與其上下相鄰的緩存縱向雙向連接。
4.根據(jù)權利要求1所述的全搜索擴展可變塊運動估計電路,其特征是,所述的第三緩 存陣列和第四緩存陣列均為70X3個緩存組成;其中的每一個緩存均與其左右相鄰的緩存 橫向雙向連接,與其上下相鄰的緩存縱向雙向連接。
5.根據(jù)權利要求1所述的全搜索擴展可變塊運動估計電路,其特征是,所述的PE陣列 與緩存陣列之間連接關系為PE陣列與第一、第二緩存陣列的互聯(lián)為縱向雙向級聯(lián),進行 搜索區(qū)域數(shù)據(jù)的雙向傳播;PE陣列與第三、第四緩存陣列的互聯(lián)為橫向雙向級聯(lián),進行搜 索區(qū)域的數(shù)據(jù)的雙向傳播;PE陣列上下兩側(cè)的第一、第二緩存陣列與左右兩側(cè)的第三、第 四緩存陣列的互聯(lián)為橫向雙向級聯(lián),進行搜索區(qū)域的數(shù)據(jù)的雙向傳播。
全文摘要
一種數(shù)字視頻處理技術領域的全搜索擴展可變塊運動估計電路,包括四個緩存陣列、一個PE陣列,第一緩存陣列的輸出端口與PE陣列的第一數(shù)據(jù)輸入端相連接并傳輸搜索區(qū)域數(shù)據(jù)信息,第二緩存陣列的輸出端口與PE陣列的第二數(shù)據(jù)輸入端相連接并傳輸搜索區(qū)域數(shù)據(jù)信息,第三緩存陣列的輸出端口與PE陣列的第三數(shù)據(jù)輸入端相連接并傳輸搜索區(qū)域數(shù)據(jù)信息,第四緩存陣列的輸出端口與PE陣列的第四數(shù)據(jù)輸入端相連接并傳輸搜索區(qū)域數(shù)據(jù)信息,PE陣列的輸入端接收搜索區(qū)域數(shù)據(jù)流及其控制信號、參考塊數(shù)據(jù)流及其控制信號,第一至第四緩存陣列的參考數(shù)據(jù)輸入端接收搜索區(qū)域數(shù)據(jù)流及其控制信號。本發(fā)明實現(xiàn)用64×4的運動估計PE陣列來完成64×64大小宏塊的擴展可變塊運動估計。
文檔編號H04N7/26GK101945289SQ20101051685
公開日2011年1月12日 申請日期2010年10月22日 優(yōu)先權日2010年10月22日
發(fā)明者何衛(wèi)鋒, 毛志剛, 陳偉偉 申請人:上海交通大學