基于single-port SRAM的轉(zhuǎn)置矩陣的地址映射算法
【專利摘要】本發(fā)明屬于高清數(shù)字視頻壓縮編解碼【技術(shù)領(lǐng)域】,具體為一種適用于HEVC視頻編碼標準下2D-DCT/IDCT中基于single-port SRAM的轉(zhuǎn)置矩陣的地址映射算法。地址映射算法基于對矩陣分塊求轉(zhuǎn)置的運算,即先對矩陣進行分塊,然后分別以小尺寸塊矩陣和基本元素為單元對整個矩陣和小尺寸塊矩陣求轉(zhuǎn)置,小尺寸塊矩陣的轉(zhuǎn)置可以直接通過排序?qū)崿F(xiàn)。本發(fā)明基于變換單元(TU)進行,支持HEVC允許的4種TU大小并可實現(xiàn)固定的吞吐率:32pixes/cycle,適用于高吞吐率的2D-DCT/IDCT及高性能的視頻編解碼器中。本發(fā)明硬件結(jié)構(gòu)實現(xiàn)可以減小40%左右的面積;相比于已有的基于single-port SRAM的轉(zhuǎn)置矩陣的地址映射算法,可以在不增加硬件開銷的情況下,獲得更高的吞吐率,實現(xiàn)高清視頻的實時編碼。
【專利說明】基于single-port SRAM的轉(zhuǎn)置矩陣的地址映射算法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于高清數(shù)字視頻壓縮編解碼【技術(shù)領(lǐng)域】,針對HEVC視頻編解碼標準,具體 涉及一種適用于HEVC視頻編碼標準下,視頻編碼器和解碼器中2D-DCT/2D-IDCT轉(zhuǎn)置矩陣 的地址映射算法。
【背景技術(shù)】
[0002] HEVC(High Efficiency Video Coding)是由國際電信組織(πυ)和運動圖像專家 組(MPEG)聯(lián)合成立的組織JCTVC提出的下一代視頻編解碼標準。目標是在相同的視覺效 果的前提下,相比于上一代標準H. 264/AVC,壓縮率提高一倍。為達到目標,HEVC的運算復(fù) 雜度相比H_ 264大大提高,因此HEVC編碼器和解碼器的硬件開銷和功耗較大。降低硬件開 銷和功耗是HEVC編解碼器設(shè)計的研究熱點。
[0003]絕大部分圖像中直流和低頻區(qū)占很大一部分,而高頻區(qū)則占很小一部分。DCT變換 可將圖像從空間域變換到頻域,產(chǎn)生相關(guān)性很小的一些變換系數(shù),有利于圖像壓縮。為進一 步提高圖像壓縮律,HEVC編碼標準支持16x16和32x32的二維整形DCT/IDCT。
[0004] 2D-DCT/IDCT可以分解為兩次一維DCT/IDCT運算:①行(列)方向的DCT/IDCT變 換;②對由①的中間結(jié)果產(chǎn)生的矩陣中列(行)方向做DCT/IDCT變換。計算過程可以由下 式得到,大尺寸的2D-DCT/IDCT硬件實現(xiàn)需要轉(zhuǎn)置矩陣模塊。
[0005] YN = An*Fn*Ant
[0006] = (An*(An*Fn)t)t
[0007] 其中,F(xiàn)N :NxN的輸入矩陣;YN為NxN的變換后輸出矩陣。AN為HEVC中NxN變換的 矩陣。
[0008] 轉(zhuǎn)置矩陣可以基于寄存器陣列實現(xiàn),對于大尺寸的轉(zhuǎn)置矩陣實現(xiàn),基于寄存器陣 列的實現(xiàn)會消耗大量的硬件資源和功耗。HEVC中轉(zhuǎn)置矩陣中存儲結(jié)果為16bit,4x4的 2D-DCT的轉(zhuǎn)置矩陣僅需要2 56_bit的寄存器,而32x32的2D-DCT轉(zhuǎn)置矩陣需要16384-bit 的寄存器陣列。當存儲大量數(shù)據(jù)時,SRAM中單位比特數(shù)據(jù)的存儲面積小于寄存器陣列中單 位比特數(shù)據(jù)的存儲面積,因此相比于寄存器陣列,SRAM更適合于實現(xiàn)大尺寸的轉(zhuǎn)置矩陣。
[0009] 2D-DCT/IDCT中,第一次一維變換的結(jié)果按行(列)為單元寫入轉(zhuǎn)置矩陣,第二 次一維變換時將存儲的中間結(jié)果以列(行)為單元讀出。寄存器陣列可以很容易的實現(xiàn)行 數(shù)據(jù)和列數(shù)據(jù)的讀寫,而single-port SRAM只能實現(xiàn)行方向或列方向的數(shù)據(jù)讀寫,所以行 (列)數(shù)據(jù)必須按一定的規(guī)則寫入SRAM中,列(行)數(shù)據(jù)才能從SRAM中讀出。大尺寸矩陣 的轉(zhuǎn)置會產(chǎn)生大量地址,映射方法不當會提高硬件實現(xiàn)的復(fù)雜度。因此映射方法必須便于 硬件實現(xiàn)。
[0010] 為了實現(xiàn)實時編碼,幾種高吞吐率的DCT/IDCT架構(gòu)實現(xiàn)已經(jīng)被提出,對于各種 尺寸的TU,吞吐率可以達到32pixes/cycle。在這些2D-DCT/IDCT的設(shè)計中,轉(zhuǎn)置矩陣 都是基于寄存器陣列,硬件開銷較大,數(shù)據(jù)在寄存器中的移動,導(dǎo)致功耗較大。一種基于 single-port SRAM的轉(zhuǎn)置矩陣的地址映射算法已經(jīng)提出,但該算法僅適用于低吞吐率的 2D-DCT/IDCT架構(gòu)。本發(fā)明提出的映射算法適用于冊¥(:支持的所有基于變換單元(τυ)大 小,對于不同的τυ尺寸可以實現(xiàn)固定的吞吐率:32pixes/cycle。
【發(fā)明內(nèi)容】
[0011]本發(fā)明的目的在于提供一種適用于HEVC標準下2D-DCT/IDCT中基于Single-port SRAM的轉(zhuǎn)置矩陣的地址映射算法。
[0012] 本發(fā)明提出的基于Single-port SRAM的轉(zhuǎn)置矩陣的地址映射算法,是基于矩陣分 塊求轉(zhuǎn)置的基本運算。設(shè)對NxN矩陣A,求矩陣A的轉(zhuǎn)置矩陣的步驟如下:① NxN矩陣劃分 為以MxM矩陣為基本單元的(N/M)X(N/M)塊矩陣;②對(N/M)x(N/M)的塊矩陣求轉(zhuǎn)置;③對 每個MxM矩陣求轉(zhuǎn)置;即:
[0013]
【權(quán)利要求】
1. 一種基于Single-portSRAM的轉(zhuǎn)置矩陣的地址映射算法,基于矩陣分塊求轉(zhuǎn)置的 基本運算:設(shè)對NxN矩陣A,求矩陣A的轉(zhuǎn)置矩陣的步驟如下: ① 把NxN矩陣劃分為以MxM矩陣為基本單元的(N/M)X(N/M)塊矩陣; ② 對(N/M)x(N/M)的塊矩陣求轉(zhuǎn)置; ③ 對每個MxM矩陣求轉(zhuǎn)置;
其中,Aij為MxM基本單元矩陣,i,j= 0,1,2,…33 ; 基于Single-portSRAM的轉(zhuǎn)置矩陣硬件結(jié)構(gòu),由如下三部分模塊組成:AGM,SRAM,MM;其中:(I)SRAM模塊,是存儲單元,劃分為32個Bank,每個Bank的深度為5,位寬為 16bit; (2)AGM模塊,根據(jù)映射算法產(chǎn)生地址add(i)和地址badd(i),數(shù)據(jù)的映射通過地址 add(i)和地址badd(i)確定,i= 0, 1,2…,31 ;add(i)是第i個Bank的輸入信號,控制將 數(shù)據(jù)寫入第i個Bank的指定字節(jié);badd(i)通過MM模塊對數(shù)據(jù)進行排序:寫操作時通過 對輸入數(shù)據(jù)排序?qū)⑤斎霐?shù)據(jù)分塊并寫入指定的Bank;讀操作時通過對讀出的數(shù)據(jù)排序?qū)?現(xiàn)對塊矩陣的轉(zhuǎn)置及正序輸出;(3)MM模塊,由32個32 :1的選擇器MUX組成,控制信號為 badd(i),對數(shù)據(jù)進行排序; 所述地址映射算法,通過add(i)和badd(i)確定,具體映射如下: ① 4x4輸入矩陣:算法支持同時處理兩個4x4輸入矩陣,4x4矩陣的轉(zhuǎn)置直接通過badd 實現(xiàn),不經(jīng)過SRAM的存儲; 映射如下:
② 8x8輸入矩陣:8x8輸入矩陣每次輸入連續(xù)4行或4列,共輸入兩次:k= 0, 1 ; 寫操作時地址映射如下:
③16x16輸入矩陣:16xl6輸入矩陣每次輸入連續(xù)2行或2列,共輸入8次:k=0, 1, 2,. . . , 7 ; 寫操作時地址映射如下:
讀操作時地址映射如下:
④32x32輸入矩陣:32x32輸入矩陣每次輸入1行或1列,共輸入32次:k= 0, 1,2, · · ·,31 ; 寫操作時地址映射如下:
讀操作時地址映射如下: 其中:
⑴% :取余數(shù)的操作;M%N表示M除N的余數(shù); ⑵/ :取整操作;M/N表示M除N的商的整數(shù)部分; ⑶fN(i,j)是一個NxN的二維矩陣;
f8如下所示:
【文檔編號】H04N19/13GK104270643SQ201410499728
【公開日】2015年1月7日 申請日期:2014年9月25日 優(yōu)先權(quán)日:2014年9月25日
【發(fā)明者】范益波, 謝崢, 程魏, 曾曉洋 申請人:復(fù)旦大學(xué)