專利名稱:用于視頻編解碼器的色度插值電路及其實(shí)現(xiàn)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及視頻編解碼領(lǐng)域,尤其是一種用于視頻編解碼器的色度插值器及其實(shí) 現(xiàn)方法。
背景技術(shù):
視頻壓縮編解碼技術(shù)是對(duì)數(shù)字視頻信號(hào)進(jìn)行壓縮和解壓縮的技術(shù)。衡量一個(gè)視頻 壓縮編解碼技術(shù)優(yōu)劣的標(biāo)志是既有較大的壓縮比,又能保證視頻質(zhì)量。H. 264/AVC視頻壓縮 標(biāo)準(zhǔn)就是這樣一種高效、優(yōu)異的視頻壓縮編碼技術(shù)。其廣泛用于高清視頻中。H. 264/AVC視頻壓縮標(biāo)準(zhǔn)是由ITU_T VCEG和IS0/IEC MPEG的專家共同組成的聯(lián) 合視頻小姐JVT(joint video team)發(fā)展和制定的新一代視頻編碼國(guó)際標(biāo)準(zhǔn)。與以往的 視頻編碼標(biāo)準(zhǔn)相比,H. ^4/AVC標(biāo)準(zhǔn)采用了許多新的特性,比如可變塊大小的運(yùn)動(dòng)補(bǔ)償、1/4 像素精度的運(yùn)動(dòng)補(bǔ)償、多參考幀、環(huán)內(nèi)去塊濾波等等。這些新的特性使H. ^4/AVC提高了兩 倍的壓縮效率,同時(shí)顯著提高了計(jì)算的復(fù)雜度。數(shù)字視頻信號(hào)由分布在離散時(shí)間上的一幅一幅的圖像組成。由于鄰近的圖像之間 很可能存在相關(guān)性,也就是說(shuō)可能兩幅圖像像素的值很接近或后一幅圖像某一塊區(qū)域就是 前一幅某一塊區(qū)域的移動(dòng)、拉伸等變化。所以在視頻的編碼端,為了節(jié)省帶寬,沒(méi)有必要對(duì) 每一幅圖像都單獨(dú)編碼,可以對(duì)前一幅圖像編碼,然后將它作為參考圖像,計(jì)算出后一幅圖 像相對(duì)于參考圖像的位置變化(運(yùn)動(dòng)矢量)和像素值的差(殘差數(shù)據(jù)),然后只需要傳送運(yùn) 動(dòng)矢量和殘差數(shù)據(jù),達(dá)到壓縮編碼的效果(幀間預(yù)測(cè))。在視頻解碼端,當(dāng)解碼出前一幅圖 像后,就可以根據(jù)運(yùn)動(dòng)矢量和殘差數(shù)據(jù)解碼得到后一幅圖像。在H. ^4/AVC中,一幅圖像劃分成若干個(gè)宏塊,一個(gè)宏塊由一個(gè)16X16亮度像素、 一個(gè)8 X 8的Cb和一個(gè)8 X 8的Cr像素塊組成(其中Cb和Cr統(tǒng)稱為色度)。宏塊還可以 劃分為分割和亞分割。每一個(gè)幀間預(yù)測(cè)的宏塊的分割或亞分割都是由參考圖像中相同大小 的一塊區(qū)域來(lái)預(yù)測(cè)的。為了提高預(yù)測(cè)精度,H. 264/AVC采用1/4像素精度的運(yùn)動(dòng)估計(jì)/運(yùn) 動(dòng)補(bǔ)償。預(yù)測(cè)數(shù)據(jù)由參考圖像與殘差數(shù)據(jù)相加得到。運(yùn)動(dòng)矢量對(duì)亮度部分的是四分之一精 度、對(duì)色度部分是八分之一精度。由于在參考圖像中亮度和色度的分?jǐn)?shù)像素點(diǎn)(指半像素 點(diǎn)、1/4像素點(diǎn)、1/8像素點(diǎn))都不存在,所以必須用已經(jīng)解碼的整像素點(diǎn)來(lái)插值得到。H. 264/AVC的色度插值就是在亮度1/4運(yùn)動(dòng)矢量的基礎(chǔ)上對(duì)色度塊進(jìn)行處理,得 到具有1/8像素精度的色度預(yù)測(cè)塊,也就是說(shuō),色度的幀內(nèi)預(yù)測(cè)不需要額外的運(yùn)動(dòng)估計(jì)的 步驟,只需要進(jìn)行相應(yīng)的運(yùn)動(dòng)補(bǔ)償。如圖1所示,為色度插值一個(gè)點(diǎn)的示意圖,其計(jì)算公式 如下a = round [ (8_dx) (8-dy) A+dx (8-dy) B+ (8_dx) dyC+dxdyD] /64 公式一其中,a是待插值的像素,(dx,dy)亮度運(yùn)動(dòng)估計(jì)得到的1/4運(yùn)動(dòng)矢量,A、B、C和 D是色度參考宏塊的像素點(diǎn)。在公式一中,一旦(dx,dy)確定下來(lái),插值也就確定了下來(lái)。但由于(dx,dy)事先 無(wú)法確定,所以現(xiàn)有技術(shù)中通常采用乘法器或模擬乘法器實(shí)現(xiàn)色度插值的計(jì)算。而在集成
4電路設(shè)計(jì)領(lǐng)域,乘法器的硬件結(jié)構(gòu)復(fù)雜,占用芯片面積大,影響了色度插值部分硬件電路的 實(shí)現(xiàn)速度和質(zhì)量。
發(fā)明內(nèi)容
本發(fā)明要解決的主要技術(shù)問(wèn)題是,提供一種用于視頻編解碼器的色度插值器,能 夠避免乘法器使用。本發(fā)明還提供一種上述色度插值器的實(shí)現(xiàn)方法,使用該方法可以加快 色度插值器的硬件實(shí)現(xiàn)速度。為解決上述技術(shù)問(wèn)題,本發(fā)明提供一種用于視頻編碼器的色度插值器的實(shí)現(xiàn)方 法,其特征在于,包括將高級(jí)程序語(yǔ)言算法描述的視頻編碼器的色度插值器的各個(gè)功能塊映射成由算 子單元構(gòu)成的硬件邏輯描述;由所述算子單元構(gòu)成的硬件邏輯描述生成色度插值器硬件集 成電路。上述方法中,將高級(jí)程序語(yǔ)言算法描述的視頻編碼器的色度插值器的各個(gè)功能模 塊映射成由算子單元構(gòu)成的硬件邏輯描述包括如下步驟程序分析步驟讀取色度插值器的各個(gè)功能塊的高級(jí)程序語(yǔ)言算法程序,根據(jù)該 高級(jí)程序語(yǔ)言規(guī)則從所述高級(jí)程序語(yǔ)言算法中識(shí)別出被映射的執(zhí)行對(duì)象和參數(shù)對(duì)象;數(shù)據(jù)控制流圖生成步驟將識(shí)別出的執(zhí)行對(duì)象和參數(shù)對(duì)象映射成描述色度插值器 算法的數(shù)據(jù)控制流圖中相應(yīng)節(jié)點(diǎn);算子時(shí)空?qǐng)D生成步驟根據(jù)數(shù)據(jù)控制流圖中各個(gè)節(jié)點(diǎn)的功能處理,從所述算子單 元庫(kù)中取出對(duì)應(yīng)功能的至少一個(gè)算子單元,將所述數(shù)據(jù)控制流圖轉(zhuǎn)換成由算子單元組成的 算子時(shí)空?qǐng)D;時(shí)序約束步驟根據(jù)用戶規(guī)格需求和目標(biāo)集成電路工藝的要求確定總時(shí)序約束, 對(duì)算子時(shí)空?qǐng)D中的每個(gè)算子單元標(biāo)注時(shí)間,對(duì)算子時(shí)空?qǐng)D的每個(gè)層級(jí)進(jìn)行時(shí)序約束;時(shí)空?qǐng)D壓縮步驟根據(jù)時(shí)間標(biāo)注對(duì)算子時(shí)空?qǐng)D進(jìn)行空間上的聚類壓縮,并使總體 算法執(zhí)行時(shí)間最接近于總時(shí)序約束;下層硬件映射步驟將聚類壓縮后的算子時(shí)空?qǐng)D映射成由算子單元構(gòu)成的硬件邏 輯描述。上述方法中,所述算子單元庫(kù)中的算子單元包括控制類算子、運(yùn)算類算子、存儲(chǔ)類 算子、路徑類算子和時(shí)鐘類算子中的至少一種。上述方法中,所述運(yùn)算類算子為可重構(gòu)算子,一個(gè)運(yùn)算類算子配置控制位以及多 種運(yùn)算,所述控制位用于擇一選擇一種運(yùn)算;所述路徑類算子用于鏈接存儲(chǔ)類算子與運(yùn)算 類算子,形成數(shù)據(jù)流結(jié)構(gòu),其實(shí)現(xiàn)形式包括多選器、交叉開(kāi)關(guān)和總線;所述控制類算子用于 推動(dòng)數(shù)據(jù)流的流動(dòng),其實(shí)現(xiàn)形式包括計(jì)數(shù)器、狀態(tài)機(jī)和微指令字,控制輸出內(nèi)容包括運(yùn)算 類算子動(dòng)態(tài)重構(gòu)信息、存儲(chǔ)類算子的配置信息、路徑類算子的配置信息;所述存儲(chǔ)類算子用 于對(duì)不同的數(shù)據(jù)存儲(chǔ)格式和計(jì)算格式進(jìn)行轉(zhuǎn)換。上述方法中,所述執(zhí)行對(duì)象包括運(yùn)算指令和/或控制指令,所述參數(shù)對(duì)象包括輸 入數(shù)據(jù)、輸出數(shù)據(jù)和中間數(shù)據(jù)中的至少一種,將所述運(yùn)算指令映射為運(yùn)算類算子,將所述控 制指令映射為控制類算子,所述參數(shù)對(duì)象映射為存儲(chǔ)類算子。一種用于視頻編碼器的色度插值器,包括依次相連的第一級(jí)部件、第二級(jí)部件和第三級(jí)部件,以及用于控制所述第一級(jí)部件、第二級(jí)部和第三級(jí)部件的控制部件;所述第一 級(jí)部件包括用于實(shí)現(xiàn)加法操作的第一級(jí)運(yùn)算單元,所述第二級(jí)部件包括用于實(shí)現(xiàn)加法操作 的第二級(jí)運(yùn)算單元,所述第三級(jí)部件包括用于實(shí)現(xiàn)移位與取整操作的移位取整單元;所述 第一級(jí)部件、第二級(jí)部件、第三級(jí)部件和控制部件均由算子實(shí)現(xiàn)上述色度插值器中,所述第一級(jí)運(yùn)算單元實(shí)現(xiàn)的加法操作包括實(shí)現(xiàn)7x+y,3x+y, 5x+3y, x+y,所述第二級(jí)部件實(shí)現(xiàn)的加法操作包括7x+y,3x+y,h+3y,x+y。上述色度插值器中,所述第一級(jí)運(yùn)算單元包括四個(gè)并聯(lián)的分別實(shí)現(xiàn)7x+y,3x+y, 5x+3y, x+y加法操作的運(yùn)算類算子單元;所述第一級(jí)部件還包括兩個(gè)由存儲(chǔ)類算子實(shí)現(xiàn)的 寄存器單元、一個(gè)由路徑類算子實(shí)現(xiàn)的選擇開(kāi)關(guān)和一個(gè)由路徑類算子實(shí)現(xiàn)的選擇器,所述 兩個(gè)寄存器單元并聯(lián)后與所述選擇開(kāi)關(guān)、第一級(jí)運(yùn)算單元和選擇器依次相連;所述寄存器 單元用于保存計(jì)算色度插值時(shí)所使用到的參考宏塊的參考像素的數(shù)據(jù),所述選擇開(kāi)關(guān)用于 根據(jù)控制部件的控制將所述像素?cái)?shù)據(jù)分發(fā)給第一級(jí)運(yùn)算單元,所述選擇器用于在控制部件 的控制作用下選擇第一級(jí)運(yùn)算單元中相應(yīng)的算子單元進(jìn)行運(yùn)算,并將運(yùn)算結(jié)果傳遞給第二 級(jí)部件。上述色度插值器中,所述第二級(jí)運(yùn)算單元包括四個(gè)并聯(lián)的分別實(shí)現(xiàn)7x+y,3x+y, 5x+3y, x+y加法操作的運(yùn)算類算子單元;所述第一級(jí)部件還包括兩個(gè)由存儲(chǔ)類算子實(shí)現(xiàn)的 寄存器單元、一個(gè)由路徑類算子實(shí)現(xiàn)的選擇開(kāi)關(guān)和一個(gè)由路徑類算子實(shí)現(xiàn)的選擇器,所述 兩個(gè)寄存器單元并聯(lián)后與所述選擇開(kāi)關(guān)、第一級(jí)運(yùn)算單元和選擇器依次相連;所述寄存器 單元用于保存計(jì)算色度插值時(shí)所使用到的參考宏塊的參考像素的數(shù)據(jù),所述選擇開(kāi)關(guān)用于 根據(jù)控制部件的控制將所述像素?cái)?shù)據(jù)分發(fā)給第一級(jí)運(yùn)算單元,所述選擇器用于在控制部件 的控制作用下選擇第一級(jí)運(yùn)算單元中相應(yīng)的算子單元進(jìn)行運(yùn)算,并將運(yùn)算結(jié)果傳遞給第二 級(jí)部件。上述色度插值器中,所述第三級(jí)部件包括由存儲(chǔ)類算子實(shí)現(xiàn)的兩個(gè)寄存器和一個(gè) 由運(yùn)算類算子實(shí)現(xiàn)的移位取整單元,一個(gè)寄存器的輸入端接收所述第二級(jí)部件發(fā)送來(lái)的數(shù) 據(jù),并將所述數(shù)據(jù)通過(guò)其輸出端傳遞給所述移位取整單元,所述移位取整單元在控制單元 的控制作用下將接收到的數(shù)據(jù)進(jìn)行移位取整操作,并將移位取整后的結(jié)果發(fā)送給另一個(gè)寄 存器。本發(fā)明的有益效果是通過(guò)對(duì)色度宏塊的4X4子塊中每一個(gè)點(diǎn)的色度插值計(jì)算 公式的分析,發(fā)現(xiàn)在計(jì)算色度插值時(shí)只需要4種類型的運(yùn)算配合移位與取整操作就可以實(shí) 現(xiàn),這4種類型的運(yùn)算分別是7X+y、3X+y、h+3y、x+y。在上述4種類型的運(yùn)算中,由于X, y的系數(shù)固定,所以可以避免硬件電路中乘法器的出現(xiàn),從而使實(shí)際中用于計(jì)算色度插值的 硬件結(jié)構(gòu)變得簡(jiǎn)單,用集成電路實(shí)現(xiàn)時(shí),芯片面積也將得到縮小。本發(fā)明所述的方法通過(guò)設(shè)計(jì)表示硬件邏輯的算子單元,將視頻編碼器的色度插值 器的高級(jí)語(yǔ)言算法通過(guò)工具映射由算子單元構(gòu)成的硬件邏輯描述,從而加速了色度插值器 的集成電路設(shè)計(jì)速度。
圖1為色度插值示意圖;圖2為1個(gè)宏塊的色度插值示意圖3為利用插值算子分解插值公式的表格圖;圖4為1個(gè)色度宏塊所用到的插值算子表格圖;圖5為本發(fā)明的一種實(shí)施方式中用于計(jì)算色度插值的電路模塊圖;圖6為本發(fā)明的一種實(shí)施方式中用于計(jì)算色度插值的電路結(jié)構(gòu)圖;圖7為色度插值專用算子的結(jié)構(gòu)圖。
具體實(shí)施例方式下面通過(guò)具體實(shí)施方式
結(jié)合附圖對(duì)本發(fā)明作進(jìn)一步詳細(xì)說(shuō)明。圖2為1個(gè)宏塊的色度插值示意圖,可以看作是圖1重復(fù)64次得到。其中黑色的 像素表示參考的整數(shù)像素(相當(dāng)于圖1中的A、B、C和D)、灰色的像素表示待插值的像素。分析圖2和公式1可以看出,圖2和公式1均具有對(duì)稱性,所以對(duì)于圖2所示的一 個(gè)宏塊,只需要分析其1/4部分的子塊即可,通常選擇位于左上角的4X4子塊進(jìn)行分析。對(duì)圖2中左上角的4X4子塊的色度插值進(jìn)行分析,并提取各算式所使用到的運(yùn)算 部件。具體分析和提取的部件見(jiàn)圖3所示,圖3中算式表達(dá)式由(dx,dy)的值代入公式1 得到,比如將(dx,dy) = (2,3)代入公式一得 a = round{2[5(3A+B)+3(3C+D)]}/64,取大括 號(hào)部分的內(nèi)容寫(xiě)入圖3所示表中的算式一欄中。由于在計(jì)算色度插值a時(shí),A、B、C和D為 參考的整數(shù)像素的值,為已知量,所以對(duì)于某一具體的(dx,dy),要實(shí)現(xiàn)計(jì)算算式部分的內(nèi) 容,只需要兩類算子,一類是3x+y,用于在兩個(gè)周期內(nèi)分別以(A,B)和(C,D)作為參數(shù)計(jì)算 得到3A+B,3C+D;另一類是切+37,用于以(3A+B,3C+D)作為參數(shù)(上面計(jì)算得到的結(jié)果), 計(jì)算得到 5 (3A+B) +3 (3C+D),對(duì)于算式 2 [5 (3A+B) +3 (3C+D)]只需將 5 (3A+B) +3 (3C+D)通過(guò) 移位的方式實(shí)現(xiàn),不涉及特別的算式。將上述涉及的兩個(gè)算子3x+y和填入圖3中對(duì) 應(yīng)的所用到算子一欄。按照上述方式,對(duì)圖2中左上角的4X4子塊進(jìn)行分析,得到如圖3所示的完整表 格。從表格中可以看到,實(shí)際用到算子只有4種,分別是7X+y、3X+y、5X+3y、X+y。并且每個(gè) 算子的系數(shù)固定,所以用集成電路實(shí)現(xiàn)時(shí),不會(huì)涉及到乘法器的運(yùn)用。由于公式一和圖2所 示宏塊的對(duì)稱性,在計(jì)算宏塊中除左上角4X4子塊的其它子塊的色度插值上,所用到的算 子只可能是上述算子的對(duì)稱操作,而對(duì)稱操作不會(huì)改變算子的硬件結(jié)構(gòu),所以對(duì)應(yīng)于硬件 時(shí),也僅涉及到上述四種算子的硬件實(shí)現(xiàn)結(jié)構(gòu)。所謂算子的對(duì)稱操作是指,以算子3x+y為 例,其對(duì)稱操作的表達(dá)式是x+3y。由于用于運(yùn)算的四種操作的系數(shù)固定,所以通過(guò)上述算子 實(shí)現(xiàn)色度插值器的硬件時(shí),可以避免乘法器的應(yīng)用,從而節(jié)約芯片面積。在上述基礎(chǔ)上,對(duì)圖2所示的一個(gè)宏塊計(jì)算色度插值時(shí)所用到的所有算子進(jìn)行分 析,如圖4所示。圖中括號(hào)內(nèi)涉及的1、2、3和4分別是指算子1,7x+y ;算子2,3x+y ;算子 3,h+3y ;算子4,x+y。其中形如(1,2)的是指先進(jìn)行算子2的運(yùn)算,再進(jìn)行算子3的運(yùn)算。 其中標(biāo)有“’”的算子即是指相應(yīng)算子的對(duì)稱操作,比如2’是指算子2的對(duì)稱操作,算子2 的對(duì)稱操作是y+3x。從算子的表達(dá)式可知,算子4本身是對(duì)稱的。在上面理解的基礎(chǔ)上,結(jié)合具體實(shí)施方式
對(duì)本發(fā)明的用于視頻編解碼器的色度插 值的電路和實(shí)現(xiàn)方法進(jìn)行更詳細(xì)的描述。實(shí)施例1 如圖5所示,為實(shí)現(xiàn)本發(fā)明計(jì)算色度插值的一種硬件電路圖。圖中包括第一級(jí)部
7件,第二級(jí)部件和第三級(jí)部件,其中第一級(jí)部件首先進(jìn)行關(guān)于A和B的運(yùn)算,得計(jì)算結(jié)果 tmpl,將計(jì)算結(jié)果tmpl傳遞給第二級(jí)部件暫存;然后進(jìn)行關(guān)于C和D的運(yùn)算,得計(jì)算結(jié)果 tmp2,將計(jì)算結(jié)果tmp2傳遞給第二級(jí)部件暫存。其中,A、B、C和D是指用于計(jì)算色度插值的 參考宏塊的整像素點(diǎn)的值;第二級(jí)部件進(jìn)行關(guān)于tmpl和tmp2的運(yùn)算,得到計(jì)算結(jié)果tmp3, 將計(jì)算結(jié)果tmp3傳遞給第三級(jí)部件;第三級(jí)部件對(duì)接收到的值進(jìn)行移位和取整操作,從而 完成色度插值的計(jì)算過(guò)程。在上述過(guò)程中,第一級(jí)部件、第二級(jí)部件和第三級(jí)部件都受到控 制部件的控制,控制部件控制上述計(jì)算過(guò)程的時(shí)序,即控制上述過(guò)程在不同的時(shí)序周期內(nèi) 有節(jié)奏地完成,控制部件還控制第一級(jí)部件和第二級(jí)部件選擇合適的運(yùn)算操作進(jìn)行運(yùn)算, 第一級(jí)部件和第二級(jí)部件可供選擇的運(yùn)算操作是實(shí)現(xiàn)7X+y、3X+y、h+3y、x+y及其對(duì)稱的 運(yùn)算,選擇的依據(jù)是亮度估計(jì)得到的1/4運(yùn)動(dòng)矢量的值(dx,dy),控制部件還控制第三級(jí)部 件進(jìn)行移位的位數(shù)。在硬件實(shí)現(xiàn)上,對(duì)稱操作和原操作可以用同一電路實(shí)現(xiàn),所以在本實(shí)施 例中實(shí)現(xiàn)對(duì)稱操作的硬件電路與實(shí)現(xiàn)其原操作的硬件電路為同一電路,只是實(shí)現(xiàn)原操作和 對(duì)稱操作時(shí)輸入相反。圖6為圖5的一種實(shí)施例中更具體的硬件電路的結(jié)構(gòu)圖,從圖示中可以看出,第 一級(jí)部件和第二級(jí)部件均包括兩個(gè)用于暫存數(shù)據(jù)的寄存器單元;一個(gè)開(kāi)關(guān)單元,圖示中選 用SWITH來(lái)實(shí)現(xiàn);四個(gè)運(yùn)算單元,用于分別實(shí)現(xiàn)7X+y、3X+y、h+3y、x+y ;一個(gè)選擇器單元, 圖示中選用多路選擇器MUX來(lái)實(shí)現(xiàn)。第三級(jí)部件包括一個(gè)用于暫存數(shù)據(jù)的寄存器單元、一 個(gè)移位和取整單元、一個(gè)用于保存色度插值的寄存器單元??刂撇考c第一級(jí)部件和第二 級(jí)部件的開(kāi)關(guān)單元和選擇單元連接,還與第三級(jí)部件的移位和取整單元連接,用于控制上 述單元的具體工作和控制整個(gè)電路的時(shí)序。圖示中,MCC_C 0P#1、MCC_C 0P#2、MCC_C 0P#3 和MCC_C 0P#4可以用運(yùn)算類算子實(shí)現(xiàn),分別用于實(shí)現(xiàn)7X+y、3X+y、h+3y、x+y ;控制部件 controller可以用控制算子實(shí)現(xiàn)。開(kāi)關(guān)單元和選擇器單元可以用路徑類算子實(shí)現(xiàn);因此, 上述電路的設(shè)計(jì)可以采用基于算子的設(shè)計(jì)方法,而采用算子的設(shè)計(jì)方法具有設(shè)計(jì)速度快, 節(jié)約功耗等優(yōu)點(diǎn)。下面結(jié)合(dx,dy) = (2,3)時(shí),對(duì)用圖6所示的電路實(shí)現(xiàn)色度插值的計(jì)算過(guò)程進(jìn) 行詳細(xì)的說(shuō)明當(dāng)(dx,dy)= (2,3)時(shí),公式一化簡(jiǎn)為:a = round {2 [5 (3A+B)+3 (3C+D) ]}/64。利 用上述電路的實(shí)現(xiàn)過(guò)程為第一級(jí)部件完成的操作步驟1 寄存器REGl和REG2分別保存用于計(jì)算色度插值的參考宏塊的參考像素A 和B的值,控制部件controller控制選擇開(kāi)關(guān)SWITH將A和B的值分發(fā)給MCC_C 0P#2單 元,MCC_C 0P#2單元用于實(shí)現(xiàn)3x+y操作,控制部件contro 11 er還控制選擇器MUX選擇MCC_ C 0P#2進(jìn)行運(yùn)算,并將運(yùn)算后得到的結(jié)果傳送給第二級(jí)部件的REG3單元進(jìn)行存儲(chǔ)。上述操 作在一個(gè)周期內(nèi)完成;步驟2 在另一個(gè)周期內(nèi),控制部件controller控制選擇開(kāi)關(guān)SWITH將REGl和 REG2保存的用于計(jì)算色度插值的參考宏塊的參考像素C和D的值分發(fā)給MCC_C0P#2單元, 控制部件controller還控制多路選擇器MUX選擇MCC_C 0P#2進(jìn)行運(yùn)算,并將運(yùn)算后得到 的結(jié)果傳送給第二級(jí)部件的REG4單元進(jìn)行存儲(chǔ)。在步驟1和2中,控制部件controller選擇MCC_C 0P#2進(jìn)行操作的依據(jù)是,亮度運(yùn)動(dòng)矢量估計(jì)(dx,dy) = (2,3)時(shí),第一級(jí)部件中對(duì)應(yīng)的操作是3x+y。這個(gè)可以從圖3的 對(duì)應(yīng)關(guān)系中得出,另一方面,由于在本發(fā)明算子編號(hào)和(dx,dy)完全對(duì)應(yīng),因此,當(dāng)dx< 4 時(shí),第一級(jí)部件中采用7X+y、3X+y、h+3y、x+y的原型操作,其余情況采用對(duì)稱操作。如果 7X+y、3X+y、h+3y、X+y操作用算子實(shí)現(xiàn),也就是采用算子的原型。可以理解的是,在上述過(guò) 程中,SWITH選擇開(kāi)關(guān)也可以將REGl和REG2保存的值同時(shí)分發(fā)給所有的運(yùn)算單元,多路選 擇器選擇好用于運(yùn)算的單元后,可以將其余的運(yùn)算單元關(guān)閉,以節(jié)約功耗;第一級(jí)部件在兩 個(gè)周期內(nèi)通過(guò)步驟1和步驟2實(shí)現(xiàn)3A+B和3C+D的計(jì)算,并將計(jì)算得到的結(jié)果傳遞給第二 級(jí)部件暫存。第二級(jí)部件完成的操作步驟3 控制部件controller控制選擇開(kāi)關(guān)將REG3和REG4保存的值分發(fā)給MCC_ C 0P#3單元或所有運(yùn)算單元,還控制多路選擇器MUX選擇MCC_C 0P#3單元進(jìn)行運(yùn)算,得到 運(yùn)算結(jié)果5(3A+B)+3(3C+D)并將得到的結(jié)果傳遞給第三級(jí)部件的REG5。在步驟3中,控 制部件controller選擇MCC_C 0P#3進(jìn)行操作的依據(jù)是,亮度運(yùn)動(dòng)矢量估計(jì)為(dx,dy)= (2,3)時(shí),第二級(jí)部件中對(duì)應(yīng)的操作是h+3y。這個(gè)可以從圖4的對(duì)應(yīng)關(guān)系中得出,另一方 面,由于本發(fā)明算子編號(hào)和(dx,dy)完全對(duì)應(yīng),因此,當(dāng)dy < 4時(shí),第二級(jí)部件中采用7x+y、 3X+y、5X+3y、X+y的原型操作,其余情況采用對(duì)稱操作。如果7X+y、3X+y、h+3y、X+y操作用 算子實(shí)現(xiàn),也就是采用算子的原型。第三級(jí)部件完成的操作步驟4 在控制部件controller控制作用下,對(duì)REG5保存的數(shù)據(jù)進(jìn)行移位和取整 操作,首先對(duì)對(duì)第二級(jí)部件得到的運(yùn)算結(jié)果5 (3A+B) +3 (3C+D)右移1位,也就是乘以2的操 作,得到2 [5 (3A+B) +3 (3C+D)],然后左移6位,也就是對(duì)上述運(yùn)算結(jié)果進(jìn)行除以64的操作, 上述操作也可以綜合起來(lái)直接左移5位完成,具體移多少位由控制部件根據(jù)(dx,dy)的值 綜合確定。移位后,再對(duì)結(jié)果進(jìn)行ROUND運(yùn)算,也就是取整運(yùn)算。將取整運(yùn)算后的結(jié)果保存 入REG6中,REG6中保存的數(shù)據(jù)就是所求的色度插值??梢岳斫獾氖牵趯?shí)際中,移位和取 整操作通?;旌显谝黄疬M(jìn)行,所謂的取整本質(zhì)是實(shí)現(xiàn)四舍五入操作。比如,計(jì)算9/2的四舍 五入值,應(yīng)該是5,但直接寫(xiě)9/2,硬件取整的方式是直接去掉小數(shù),結(jié)果就是4 ;為了實(shí)現(xiàn)四 舍五入,就會(huì)進(jìn)行(9+1)/2的操作,S卩加上除數(shù)的一半,再作除法(即移位),從而實(shí)現(xiàn)四舍 五入。所以移位和取整實(shí)際上通過(guò)加法和移位實(shí)現(xiàn)的。通過(guò)上述部件的配合操作,實(shí)現(xiàn)了色度插值計(jì)算的硬件實(shí)現(xiàn),并且上述硬件實(shí)現(xiàn) 過(guò)程中避免了乘法器的使用,從而使電路結(jié)構(gòu)變得簡(jiǎn)單。并且上述各部件可以采用基于算 子的集成電路結(jié)構(gòu)實(shí)現(xiàn),從而進(jìn)一步提高了集成電路的設(shè)計(jì)速度。圖6中所涉及的用于分別實(shí)現(xiàn)7x+y、3x+yjx+3y、x+y操作的MCC_C 0P#1、MCC_C 0P#2、MCC_C 0P#3和MCC_C 0P#4的單元采用算子實(shí)現(xiàn)時(shí),其算子結(jié)構(gòu)的一種結(jié)構(gòu)圖如圖7 所示。同時(shí),SWITH可以用2選1路徑算子實(shí)現(xiàn),MUX可以用四選一路徑選擇算子實(shí)現(xiàn)。上述給出了當(dāng)?shù)谝患?jí)部件和第二級(jí)部件均參與運(yùn)算時(shí)的實(shí)現(xiàn)過(guò)程。在實(shí)際中,對(duì) 于某些情況,并不是第一級(jí)部件和第二級(jí)部件均會(huì)有所參與的。在一種實(shí)施方式中,第一級(jí) 和第二級(jí)的控制中加入旁通支路控制(對(duì)dx和/或dy為0的情況進(jìn)行特殊處理),即不進(jìn) 行第一級(jí)部件和/或者第二級(jí)部件的運(yùn)算處理,直接進(jìn)入下一級(jí)。例如(dx,dy) = (0,0) 時(shí),第一級(jí)部件和第二級(jí)部件就會(huì)直接旁路掉,直接進(jìn)入第三級(jí)部件的處理;當(dāng)(dx,dy)=(0,3),則第一級(jí)部件被旁路掉,直接進(jìn)入第二級(jí)部件的處理。實(shí)施例2 對(duì)于實(shí)施例1所述的色度插值器的硬件集成電路,可以用本實(shí)施例中提到的方法 進(jìn)行實(shí)現(xiàn),這種方法將加快色度插值器的實(shí)現(xiàn)速度。雖然,現(xiàn)有技術(shù)中和前述內(nèi)容中對(duì)算子 均有所介紹,但在本實(shí)施例中還是對(duì)算子及基于算子的設(shè)計(jì)方法進(jìn)行更全面的介紹一、算子具有如下特點(diǎn)1.粒度更大每個(gè)算子都具有一定功能,它是一種函數(shù)運(yùn)算的符號(hào)表示。整個(gè)算子體系能夠支 持算法描述中的各種功能實(shí)現(xiàn),設(shè)計(jì)人員可以基于算子對(duì)算法進(jìn)行描述和驗(yàn)證;2.支持算法的實(shí)現(xiàn)種類完備但是數(shù)量有限的算子能夠支持上層語(yǔ)言描述中對(duì)運(yùn)算、存儲(chǔ)、控制和數(shù) 據(jù)路徑的描述,并且可以基于算子描述進(jìn)行優(yōu)化和驗(yàn)證;3.能夠加速設(shè)計(jì)和驗(yàn)證設(shè)計(jì)人員利用算子完成算法的功能描述后,對(duì)應(yīng)的硬件設(shè)計(jì)也同時(shí)完成。因?yàn)樗?有算子均是預(yù)先全定制的且已被驗(yàn)證正確的單元,因此將縮短設(shè)計(jì)和驗(yàn)證的時(shí)間,設(shè)計(jì)人 員只需要保證基于算子的描述和映射過(guò)程的正確即可,從而將大大加速設(shè)計(jì)和驗(yàn)證過(guò)程。二、算子的常見(jiàn)種類。本發(fā)明提出的算子,或者說(shuō)算子單元,可以表示集成電路的硬件邏輯,基于算子的 不同功能,可將算子分為運(yùn)算類算子、存儲(chǔ)類算子、路徑類算子、控制類算子、時(shí)鐘類算子等 幾類,這些算子構(gòu)成一套完備的算子體系,能支撐所有算法的實(shí)現(xiàn)。經(jīng)過(guò)設(shè)計(jì),這些基本算 子在面積、功耗、性能等參數(shù)上是最優(yōu)化,它們構(gòu)成了算子單元庫(kù)。并且算子單元還可以組 成算子功能塊,算子功能塊間采用共享MEM鏈接方式進(jìn)行數(shù)據(jù)通信,也可以采用寄存器傳 遞進(jìn)行控制信息傳遞。下面對(duì)各類算子做一說(shuō)明。1.運(yùn)算類算子運(yùn)算類算子支持算術(shù)邏輯、移位等運(yùn)算功能的實(shí)現(xiàn),實(shí)現(xiàn)這些基本運(yùn)算的算子稱 為基本運(yùn)算算子。并且,針對(duì)不同應(yīng)用可以在基本運(yùn)算算子的基礎(chǔ)上進(jìn)行擴(kuò)展而予以支持, 比如媒體處理中相減、取絕對(duì)值、求平均值、固定系數(shù)濾波運(yùn)算等復(fù)雜但很常用的運(yùn)算,實(shí) 現(xiàn)這些擴(kuò)展運(yùn)算的運(yùn)算算子稱為擴(kuò)展運(yùn)算算子,它們由基本運(yùn)算算子搭建而成。運(yùn)算類算子具有可重構(gòu)性,即可以為一個(gè)運(yùn)算類算子配置多種運(yùn)算及控制位,控 制位用于擇一選擇一種運(yùn)算。根據(jù)不同應(yīng)用的需求,通過(guò)配置控制位,可以使運(yùn)算算子實(shí)現(xiàn) 不同的功能。如果算子在執(zhí)行運(yùn)算過(guò)程中變化,可以通過(guò)控制位實(shí)現(xiàn)動(dòng)態(tài)可重構(gòu)。而如果 算子的運(yùn)算功能被優(yōu)化固定,則可以將控制位固定(即固化定制)。2.存儲(chǔ)類算子算法中的不同階段對(duì)數(shù)據(jù)處理的順序和排列是不一樣的,從而使得在每個(gè)階段中 數(shù)據(jù)的存儲(chǔ)格式和方式不同,存儲(chǔ)算子則針對(duì)這類需求實(shí)現(xiàn)數(shù)據(jù)不同存儲(chǔ)格式和方式的轉(zhuǎn) 換。存儲(chǔ)類算子可以支持不同應(yīng)用中基本且常用的存儲(chǔ)格式和轉(zhuǎn)換方式,比如串并轉(zhuǎn)換、并 串轉(zhuǎn)換、隊(duì)列結(jié)構(gòu)、堆棧結(jié)構(gòu)等。3.路徑類算子路徑類算子的作用是連接存儲(chǔ)類算子與運(yùn)算類算子,形成數(shù)據(jù)流結(jié)構(gòu)。其實(shí)現(xiàn)形式主要有三種多選器、交叉開(kāi)關(guān)和總線。4.控制類算子控制類算子的作用是正常控制數(shù)據(jù)流的流動(dòng)。其實(shí)現(xiàn)形式有三種計(jì)數(shù)器、狀態(tài)機(jī) 和微指令字。控制輸出內(nèi)容包括運(yùn)算類算子動(dòng)態(tài)重構(gòu)信息、存儲(chǔ)類算子AGU的配置信息、 路徑類算子的配置信息,實(shí)現(xiàn)對(duì)其他算子的控制。5.時(shí)鐘類算子時(shí)鐘類算子是驅(qū)動(dòng)和定時(shí)部件,用于產(chǎn)生供控制和處理算子的時(shí)鐘信號(hào),時(shí)鐘信 號(hào)包含控制時(shí)鐘起停和控制時(shí)鐘頻率的信號(hào)。集成電路(IC)的算子設(shè)計(jì)過(guò)程可以概括為將C、Matlab等高級(jí)語(yǔ)言的算法描述 轉(zhuǎn)化為算子描述并在算子結(jié)構(gòu)上進(jìn)行優(yōu)化設(shè)計(jì)的過(guò)程。由于算子已經(jīng)預(yù)先設(shè)計(jì)并驗(yàn)證,因 此算法的算子描述可以快速或者自動(dòng)完成設(shè)計(jì)驗(yàn)證過(guò)程。對(duì)于特定領(lǐng)域,比如通信或媒體, 可以設(shè)計(jì)一些更好支撐算法實(shí)現(xiàn)的擴(kuò)展算子或算子IP,從而更大程度地加速和優(yōu)化設(shè)計(jì)過(guò)程。在上述認(rèn)識(shí)的基礎(chǔ)上,本實(shí)施例中基于算子的設(shè)計(jì)方法實(shí)現(xiàn)色度插值器的方法 為將高級(jí)程序語(yǔ)言算法描述的視頻編碼器的色度插值器的各個(gè)功能塊映射成由算 子單元構(gòu)成的硬件邏輯描述;由所述算子單元構(gòu)成的硬件邏輯描述生成色度插值器硬件集 成電路??赡芾斫獾氖?,上述描述色度插值器的高級(jí)語(yǔ)言算法可以用C語(yǔ)言對(duì)公式一直接 進(jìn)行描述,也可以基于實(shí)施例1中認(rèn)識(shí),對(duì)公式一重新進(jìn)行的描述,此處所指的實(shí)施例1的 認(rèn)識(shí)主要是指公式一可以用7X+y、3X+yjX+3y、x+y操作而避免乘法器的使用。將高級(jí)程序語(yǔ)言算法描述的視頻編碼器的色度插值器的各個(gè)功能塊映射成由算 子單元構(gòu)成的硬件邏輯描述過(guò)程中,主要包括如下步驟1)程序分析步驟讀取色度插值器的各個(gè)功能塊的高級(jí)程序語(yǔ)言算法程序,根據(jù) 該高級(jí)程序語(yǔ)言規(guī)則從所述高級(jí)程序語(yǔ)言算法程序中識(shí)別出被映射的執(zhí)行對(duì)象和參數(shù)對(duì) 象;該步驟的主要作用在于算法分解,主要是將C、Java, Matlab等高級(jí)語(yǔ)言描述形式的算 法劃分為若干個(gè)子算法過(guò)程。算法分解主要分析函數(shù)調(diào)用關(guān)系、函數(shù)結(jié)構(gòu)體和變量、底層函 數(shù)的基本運(yùn)算等信息,以便以上述的各類算子實(shí)現(xiàn)對(duì)算法的映射。執(zhí)行對(duì)象主要包括運(yùn)算 指令和/或控制指令,參數(shù)對(duì)象主要包括輸入數(shù)據(jù)、輸出數(shù)據(jù)和中間數(shù)據(jù)中的至少一種,在 算子映射時(shí),將運(yùn)算指令映射為運(yùn)算類算子,將控制指令映射為控制類算子,參數(shù)對(duì)象映射 為存儲(chǔ)類算子。運(yùn)算類算子和存儲(chǔ)類算子通過(guò)路徑類算子鏈接,控制類算子提供控制,時(shí)鐘 類算子提供時(shí)鐘。2)數(shù)據(jù)控制流圖生成步驟將識(shí)別出的執(zhí)行對(duì)象和參數(shù)對(duì)象映射成描述色度插 值器算法的數(shù)據(jù)控制流圖中相應(yīng)節(jié)點(diǎn)。即將匹配出的執(zhí)行對(duì)象和參數(shù)對(duì)象映射成描述集成電路算法的數(shù)據(jù)控制流圖中 的相應(yīng)節(jié)點(diǎn)。例如將所述運(yùn)算指令映射為處理框圖,將所述控制指令映射為用于標(biāo)識(shí)狀 態(tài)、狀態(tài)轉(zhuǎn)移條件及狀態(tài)控制信號(hào)的控制流,將所述輸入數(shù)據(jù)、輸出數(shù)據(jù)和中間數(shù)據(jù)映射為 數(shù)據(jù)流上的存儲(chǔ)節(jié)點(diǎn)。每個(gè)函數(shù)具有自己的數(shù)據(jù)控制流圖。3)算子時(shí)空?qǐng)D生成步驟根據(jù)數(shù)據(jù)控制流圖中的各個(gè)節(jié)點(diǎn)的功能處理,從算子單 元庫(kù)中取出對(duì)應(yīng)功能的至少一個(gè)算子單元,將所述數(shù)據(jù)控制流圖轉(zhuǎn)換成由算子單元組成的算子時(shí)空?qǐng)D;算子時(shí)空?qǐng)D主要表示了利用算子將算法完全展開(kāi)后的形式,當(dāng)算法被算子完 全展開(kāi)之后,算法將完全通過(guò)并行性執(zhí)行,速度最快,面積最大,此即時(shí)空?qǐng)D展開(kāi)。將數(shù)據(jù)控制流圖轉(zhuǎn)換成算子時(shí)空?qǐng)D時(shí)將上層函數(shù)和下層函數(shù)的數(shù)據(jù)控制流圖分 別轉(zhuǎn)換成各自的算子時(shí)空?qǐng)D。先將數(shù)據(jù)控制流圖根據(jù)其數(shù)據(jù)流相關(guān)性展開(kāi),然后將展開(kāi)后 節(jié)點(diǎn)轉(zhuǎn)換成可完成節(jié)點(diǎn)功能的算子單元。用一個(gè)或多個(gè)算子單元的組合取代數(shù)據(jù)控制流圖 中的各節(jié)點(diǎn),一個(gè)或多個(gè)算子單元的組合(算子塊)可完成與各節(jié)點(diǎn)功能相同的功能。展 開(kāi)成算子時(shí)空?qǐng)D后擴(kuò)大了集成電路的設(shè)計(jì)面積,但這種情況下時(shí)序最快。將數(shù)據(jù)控制流圖展開(kāi)的方式包括但不限于以下幾種方式如果數(shù)據(jù)控制流圖中的數(shù)據(jù)流為順序相關(guān)數(shù)據(jù)流結(jié)構(gòu),則將所述順序相關(guān)數(shù)據(jù)流 采用流水線的方式展開(kāi)。如果數(shù)據(jù)控制流圖中的數(shù)據(jù)流中存在反饋時(shí),當(dāng)數(shù)據(jù)流是一個(gè)循環(huán)時(shí),對(duì)于有數(shù) 據(jù)相關(guān)性的數(shù)據(jù)流不能轉(zhuǎn)化為流水結(jié)構(gòu),如果數(shù)據(jù)流的數(shù)據(jù)之間存在數(shù)據(jù)相關(guān)性,并且存 在數(shù)據(jù)相關(guān)性的各數(shù)據(jù)流內(nèi)部不存在數(shù)據(jù)相關(guān)性時(shí),則將所述內(nèi)部數(shù)據(jù)不存在數(shù)據(jù)相關(guān)性 的各數(shù)據(jù)流采用局部流水線的方式展開(kāi)。如果數(shù)據(jù)控制流圖中的數(shù)據(jù)流之間不存在數(shù)據(jù)相關(guān)性,則將所述并行數(shù)據(jù)流采用 并行方式展開(kāi),并轉(zhuǎn)換成由算子單元組成的算子時(shí)空?qǐng)D。4)時(shí)序約束步驟根據(jù)用戶規(guī)格需求和目標(biāo)集成電路工藝的要求確定出總時(shí)序 約束,對(duì)算子時(shí)空?qǐng)D中的每個(gè)算子單元標(biāo)注時(shí)間,對(duì)算子時(shí)空?qǐng)D的每個(gè)層級(jí)進(jìn)行時(shí)序約束。如果所述數(shù)據(jù)流結(jié)構(gòu)為并行數(shù)據(jù)流,則將總時(shí)序約束平分給到對(duì)應(yīng)的時(shí)空?qǐng)D中的 每個(gè)算子層級(jí),并將每個(gè)算子層級(jí)的時(shí)序約束平分到該算子層級(jí)中的每一個(gè)算子單元。將 數(shù)據(jù)控制流中串行各節(jié)點(diǎn)所對(duì)應(yīng)的各算子層級(jí)總的算子的基本時(shí)序單位作為總體時(shí)序約 束,按照各算子層級(jí)中最長(zhǎng)運(yùn)算路徑所映射的運(yùn)算算子的時(shí)序占各個(gè)算子層級(jí)中最長(zhǎng)運(yùn)算 路徑所映射的算子單元對(duì)應(yīng)的時(shí)序總和的比例來(lái)分配各算子層級(jí)的時(shí)序。5)時(shí)空?qǐng)D壓縮步驟根據(jù)時(shí)間標(biāo)注對(duì)算子時(shí)空?qǐng)D進(jìn)行空間上的聚類壓縮,并使總 體算法執(zhí)行時(shí)間最接近于總時(shí)序約束;該步驟是根據(jù)各個(gè)子算法過(guò)程的時(shí)間標(biāo)注,在算子 時(shí)空?qǐng)D中進(jìn)行聚類壓縮,通過(guò)增加控制類算子和路徑類算子來(lái)提高存儲(chǔ)類算子和運(yùn)算類算 子的復(fù)用,使各個(gè)子算法過(guò)程的完成時(shí)間盡量與算法過(guò)程標(biāo)注的時(shí)間接近,即盡量減少運(yùn) 算和存儲(chǔ)類算子的數(shù)量。將一個(gè)算法描述用算子完全平鋪開(kāi),沒(méi)有任何復(fù)用,算法的完成速度將最快,但這 帶來(lái)的代價(jià)將是很高的面積成本和功耗,這并非設(shè)計(jì)所希望的。設(shè)計(jì)的目標(biāo)期望滿足在 滿足用戶時(shí)序要求的前提下,最大地減小面積和功耗需求,所以需要復(fù)用一些算子。這樣就 需要在每個(gè)算子執(zhí)行相應(yīng)的功能上加上其執(zhí)行時(shí)間的標(biāo)注,從而能夠根據(jù)執(zhí)行時(shí)間復(fù)用算 子,使總體算法執(zhí)行時(shí)間最接近于實(shí)際要求時(shí)間,這就是算子的時(shí)間圖??臻g圖是對(duì)算子面 積的定義,即在算子聚類映射時(shí),根據(jù)算子的面積進(jìn)行聚類,選擇復(fù)用面積較小的算子。在 算子聚類過(guò)程中,這兩種因素都需要考慮到。在一種實(shí)施例中,對(duì)時(shí)空?qǐng)D進(jìn)行壓縮包括以下步驟在算子時(shí)空?qǐng)D中查找出屬性 相同的運(yùn)算類算子和/或存儲(chǔ)屬性相同的存儲(chǔ)類算子;然后根據(jù)時(shí)間標(biāo)注對(duì)運(yùn)算屬性相同 的運(yùn)算類算子在空間上進(jìn)行合并壓縮和/或?qū)⒋鎯?chǔ)屬性相同的存儲(chǔ)類算子在空間上進(jìn)行 合并壓縮;然后引入控制類算子,對(duì)壓縮后的運(yùn)算類算子和/或存儲(chǔ)類運(yùn)算算子生成相應(yīng)配置指令,實(shí)現(xiàn)運(yùn)算類算子和/或存儲(chǔ)類算子的復(fù)用。聚類壓縮步驟和生成可重構(gòu)算子功能塊的步驟,都會(huì)產(chǎn)生不只一種結(jié)果。不同的 函數(shù)調(diào)用同一子函數(shù),由于約束時(shí)間不同,所產(chǎn)生的聚類結(jié)果也不同。因此需要根據(jù)時(shí)間、 面積、功耗等參數(shù)進(jìn)行優(yōu)化,按性能(執(zhí)行時(shí)間)排出順序,恰好滿足時(shí)間約束的聚類結(jié)果 表示其硬件實(shí)現(xiàn)代價(jià)最小,因此選擇總體算法執(zhí)行時(shí)間最接近于完成集成電路算法所需要 的總時(shí)序約束的時(shí)空?qǐng)D作為聚類壓縮的優(yōu)化結(jié)果。6)下層硬件映射步驟將聚類壓縮后的算子時(shí)空?qǐng)D映射成由算子單元構(gòu)成的硬 件邏輯描述。在基于快速設(shè)計(jì)的算子方法學(xué)中,從高級(jí)程序語(yǔ)言算法描述開(kāi)始,通過(guò)映射得到 可配置算子的時(shí)空?qǐng)D,從時(shí)空?qǐng)D經(jīng)過(guò)聚類將算子進(jìn)行空間壓縮,使得在滿足時(shí)序條件的情 況下,基于功能相近與控制一致的原則,將算子聚類形成初步算子實(shí)現(xiàn)的ASIC架構(gòu)。根據(jù) 目標(biāo)算法的實(shí)現(xiàn)去除算子不必要的可重構(gòu)部件,使得面積、功耗、性能等參數(shù)得到進(jìn)一步優(yōu) 化,最后為定制完成的ASIC生成配置指令。這一過(guò)程可省去對(duì)高級(jí)程序語(yǔ)言算法,例如C程 序算法的研讀,而可直接根據(jù)C算法的屬性進(jìn)行算子的映射,進(jìn)而大大地縮短了設(shè)計(jì)時(shí)間。以上內(nèi)容是結(jié)合具體的實(shí)施方式對(duì)本發(fā)明所作的進(jìn)一步詳細(xì)說(shuō)明,不能認(rèn)定本發(fā) 明的具體實(shí)施只局限于這些說(shuō)明。對(duì)于本發(fā)明所屬技術(shù)領(lǐng)域的普通技術(shù)人員來(lái)說(shuō),在不脫 離本發(fā)明構(gòu)思的前提下,還可以做出若干簡(jiǎn)單推演或替換,都應(yīng)當(dāng)視為屬于本發(fā)明的保護(hù) 范圍。
權(quán)利要求
1.一種用于視頻編碼器的色度插值器的實(shí)現(xiàn)方法,其特征在于,包括將高級(jí)程序語(yǔ)言算法描述的視頻編碼器的色度插值器的各個(gè)功能塊映射成由算子單 元構(gòu)成的硬件邏輯描述;由所述算子單元構(gòu)成的硬件邏輯描述生成色度插值器硬件集成電路。
2.如權(quán)利要求1所述的方法,其特征在于,將高級(jí)程序語(yǔ)言算法描述的視頻編碼器的 色度插值器的各個(gè)功能模塊映射成由算子單元構(gòu)成的硬件邏輯描述包括如下步驟程序分析步驟讀取色度插值器的各個(gè)編碼功能塊的高級(jí)程序語(yǔ)言算法程序,根據(jù)該 高級(jí)程序語(yǔ)言規(guī)則從所述高級(jí)程序語(yǔ)言算法中識(shí)別出被映射的執(zhí)行對(duì)象和參數(shù)對(duì)象;數(shù)據(jù)控制流圖生成步驟將識(shí)別出的執(zhí)行對(duì)象和參數(shù)對(duì)象映射成描述色度插值器算法 的數(shù)據(jù)控制流圖中相應(yīng)節(jié)點(diǎn);算子時(shí)空?qǐng)D生成步驟根據(jù)數(shù)據(jù)控制流圖中各個(gè)節(jié)點(diǎn)的功能處理,從所述算子單元庫(kù) 中取出對(duì)應(yīng)功能的至少一個(gè)算子單元,將所述數(shù)據(jù)控制流圖轉(zhuǎn)換成由算子單元組成的算子 時(shí)空?qǐng)D;時(shí)序約束步驟根據(jù)用戶規(guī)格需求和目標(biāo)集成電路工藝的要求確定總時(shí)序約束,對(duì)算 子時(shí)空?qǐng)D中的每個(gè)算子單元標(biāo)注時(shí)間,對(duì)算子時(shí)空?qǐng)D的每個(gè)層級(jí)進(jìn)行時(shí)序約束;時(shí)空?qǐng)D壓縮步驟根據(jù)時(shí)間標(biāo)注對(duì)算子時(shí)空?qǐng)D進(jìn)行空間上的聚類壓縮,并使總體算法 執(zhí)行時(shí)間最接近于總時(shí)序約束;下層硬件映射步驟將聚類壓縮后的算子時(shí)空?qǐng)D映射成由算子單元構(gòu)成的硬件邏輯描述。
3.如權(quán)利要求2所述的方法,其特征在于,所述算子單元庫(kù)中的算子單元包括控制類 算子、運(yùn)算類算子、存儲(chǔ)類算子、路徑類算子和時(shí)鐘類算子中的至少一種。
4.如權(quán)利要求3所述的方法,其特征在于,所述運(yùn)算類算子為可重構(gòu)算子,一個(gè)運(yùn)算 類算子配置控制位以及多種運(yùn)算,所述控制位用于擇一選擇一種運(yùn)算;所述路徑類算子用 于鏈接存儲(chǔ)類算子與運(yùn)算類算子,形成數(shù)據(jù)流結(jié)構(gòu),其實(shí)現(xiàn)形式包括多選器、交叉開(kāi)關(guān)和總 線;所述控制類算子用于推動(dòng)數(shù)據(jù)流的流動(dòng),其實(shí)現(xiàn)形式包括計(jì)數(shù)器、狀態(tài)機(jī)和微指令字, 控制輸出內(nèi)容包括運(yùn)算類算子動(dòng)態(tài)重構(gòu)信息、存儲(chǔ)類算子的配置信息、路徑類算子的配置 信息;所述存儲(chǔ)類算子用于對(duì)不同的數(shù)據(jù)存儲(chǔ)格式和計(jì)算格式進(jìn)行轉(zhuǎn)換。
5.如權(quán)利要求3所述的方法,其特征在于,所述執(zhí)行對(duì)象包括運(yùn)算指令和/或控制指 令,所述參數(shù)對(duì)象包括輸入數(shù)據(jù)、輸出數(shù)據(jù)和中間數(shù)據(jù)中的至少一種,將所述運(yùn)算指令映射 為運(yùn)算類算子,將所述控制指令映射為控制類算子,所述參數(shù)對(duì)象映射為存儲(chǔ)類算子。
6.一種用于視頻編碼器的色度插值器,其特征在于,包括依次相連的第一級(jí)部件、第二 級(jí)部件和第三級(jí)部件,以及用于控制所述第一級(jí)部件、第二級(jí)部和第三級(jí)部件的控制部件; 所述第一級(jí)部件包括用于實(shí)現(xiàn)加法操作的第一級(jí)運(yùn)算單元,所述第二級(jí)部件包括用于實(shí)現(xiàn) 加法操作的第二級(jí)運(yùn)算單元,所述第三級(jí)部件包括用于實(shí)現(xiàn)移位與取整操作的移位取整單 元;所述第一級(jí)部件、第二級(jí)部件、第三級(jí)部件和控制部件均由算子實(shí)現(xiàn)
7.如權(quán)利要求6所述的色度插值器,其特征在于,所述第一級(jí)運(yùn)算單元實(shí)現(xiàn)的加法 操作包括實(shí)現(xiàn)7X+y,3X+y,h+3y,x+y,所述第二級(jí)部件實(shí)現(xiàn)的加法操作包括7x+y,3x+y, 5x+3y, x+y。
8.如權(quán)利要求7所述的色度插值器,其特征在于,所述第一級(jí)運(yùn)算單元包括四個(gè)并聯(lián)的分別實(shí)現(xiàn)7X+y,3X+y,h+3y,x+y加法操作的運(yùn)算類算子單元;所述第一級(jí)部件還包括兩 個(gè)由存儲(chǔ)類算子實(shí)現(xiàn)的寄存器單元、一個(gè)由路徑類算子實(shí)現(xiàn)的選擇開(kāi)關(guān)和一個(gè)由路徑類算 子實(shí)現(xiàn)的選擇器,所述兩個(gè)寄存器單元并聯(lián)后與所述選擇開(kāi)關(guān)、第一級(jí)運(yùn)算單元和選擇器 依次相連;所述寄存器單元用于保存計(jì)算色度插值時(shí)所使用到的參考宏塊的參考像素的數(shù) 據(jù),所述選擇開(kāi)關(guān)用于根據(jù)控制部件的控制將所述像素?cái)?shù)據(jù)分發(fā)給第一級(jí)運(yùn)算單元,所述 選擇器用于在控制部件的控制作用下選擇第一級(jí)運(yùn)算單元中相應(yīng)的算子單元進(jìn)行運(yùn)算,并 將運(yùn)算結(jié)果傳遞給第二級(jí)部件。
9.如權(quán)利要求7所述的色度插值器,其特征在于,所述第二級(jí)運(yùn)算單元包括四個(gè)并聯(lián) 的分別實(shí)現(xiàn)7x+y,3x+y, 5x+3y, x+y加法操作的運(yùn)算類算子單元;所述第一級(jí)部件還包括兩 個(gè)由存儲(chǔ)類算子實(shí)現(xiàn)的寄存器單元、一個(gè)由路徑類算子實(shí)現(xiàn)的選擇開(kāi)關(guān)和一個(gè)由路徑類算 子實(shí)現(xiàn)的選擇器,所述兩個(gè)寄存器單元并聯(lián)后與所述選擇開(kāi)關(guān)、第一級(jí)運(yùn)算單元和選擇器 依次相連;所述寄存器單元用于保存計(jì)算色度插值時(shí)所使用到的參考宏塊的參考像素的數(shù) 據(jù),所述選擇開(kāi)關(guān)用于根據(jù)控制部件的控制將所述像素?cái)?shù)據(jù)分發(fā)給第一級(jí)運(yùn)算單元,所述 選擇器用于在控制部件的控制作用下選擇第一級(jí)運(yùn)算單元中相應(yīng)的算子單元進(jìn)行運(yùn)算,并 將運(yùn)算結(jié)果傳遞給第二級(jí)部件。
10.如權(quán)利要求6所述的色度插值器,其特征在于,所述第三級(jí)部件包括由存儲(chǔ)類算子 實(shí)現(xiàn)的兩個(gè)寄存器和一個(gè)由運(yùn)算類算子實(shí)現(xiàn)的移位取整單元,一個(gè)寄存器的輸入端接收所 述第二級(jí)部件發(fā)送來(lái)的數(shù)據(jù),并將所述數(shù)據(jù)通過(guò)其輸出端傳遞給所述移位取整單元,所述 移位取整單元在控制單元的控制作用下將接收到的數(shù)據(jù)進(jìn)行移位取整操作,并將移位取整 后的結(jié)果發(fā)送給另一個(gè)寄存器。
全文摘要
本發(fā)明公開(kāi)了一種色度插值器,包括依次相連的第一級(jí)部件、第二級(jí)部件和第三級(jí)部件,及用于控制所述第一級(jí)部件、第二級(jí)部件和第三級(jí)部件的控制部件;所述第一級(jí)部件包括用于實(shí)現(xiàn)加法操作操作的第一級(jí)運(yùn)算單元,所述第二級(jí)部件包括用于實(shí)現(xiàn)加法操作的第二級(jí)運(yùn)算單元,所述第三級(jí)部件包括用于實(shí)現(xiàn)移位和取整操作的移位取整單元;所述第一級(jí)部件、第二級(jí)部件、第三級(jí)部件和控制部件均由算子實(shí)現(xiàn)。本發(fā)明還公開(kāi)了一種基于算子設(shè)計(jì)的色度插值器的實(shí)現(xiàn)方法,可以加快上述色度插值器的集成電路實(shí)現(xiàn)。
文檔編號(hào)H04N7/46GK102075765SQ201010619799
公開(kāi)日2011年5月25日 申請(qǐng)日期2010年12月31日 優(yōu)先權(quán)日2010年12月31日
發(fā)明者關(guān)保貞, 張興, 彭建宏, 王巍, 王新安, 胡子一 申請(qǐng)人:北京大學(xué)深圳研究生院