摘 要:設(shè)計并實現(xiàn)了一種適用于AVS高清解碼器的環(huán)路濾波器。該結(jié)構(gòu)利用將水平邊和豎直邊相鄰塊數(shù)據(jù)分開存儲的方法,以及流水線的濾波操作,加快了環(huán)路濾波器的處理速度,提高了工作頻率。利用片內(nèi)SRAM部分?jǐn)?shù)據(jù)自更新的方法,減少了數(shù)據(jù)的傳輸。該VLSI實現(xiàn)采用0.18 μm CMOS工藝綜合的最高工作頻率為167 MHz,電路規(guī)模約36 k等效邏輯門(含片內(nèi)SRAM)。仿真結(jié)果顯示,設(shè)計的環(huán)路濾波器能夠?qū)VS高清視頻(1 280×720 60幀/s)進(jìn)行實時的環(huán)路濾波。該環(huán)路濾波器可用于AVS高清實時解碼器芯片中。
關(guān)鍵詞:視頻解碼器;高清;AVS標(biāo)準(zhǔn);環(huán)路濾波器;VLSI
中圖分類號:TN919.8文獻(xiàn)標(biāo)識碼:B文章編號:1004373X(2008)1916805
VLSI Design and Implementation of Loop Filter for AVS
LI Xia,CHEN Jie,ZHOU Li,HUANG Xuan
(Institute of Microelectronics of Chinese Academy of Sciences,Beijing,100029,China)
Abstract:VLSI design and implementation of loop filter for AVS high-definition video decoder is presented in this paper.The data which are side by row bound and column bound are stored in different SRAMs to accelerate loop filter processing.The pipeline structure are adopted in calculate unit to improve the frequency.One of SRAM updates part of data from otherSRAM to minimize data transfer.The implementation is described in Verilog HDL,simulated with ModelSim and synthesized using 0.18 μm CMOS cells library by Synopsys Design Compiler.The circuit totally costs about 36k logic gates when working frequency is set to 167 MHz.The circuit processes a macro block using 436 cycles.Simulation results show that the implementation can be used in real-time HDTV(1 280×720 60 f/s) AVS video decoder.
Keywords:video decoder;high-definition;AVS standard;loop filter;VLSI
1 引 言
AVS(Audio Video coding Standard)標(biāo)準(zhǔn)是《數(shù)字音視頻編解碼技術(shù)標(biāo)準(zhǔn)》系列標(biāo)準(zhǔn)的簡稱,是我國第一個擁有自主知識產(chǎn)權(quán)的音視頻編解碼標(biāo)準(zhǔn),主要面向高清晰度電視(HDTV)、高密度光存儲媒體等應(yīng)用中的視頻壓縮。與MPEG-2,MPEG-4和H.264相比,AVS的優(yōu)點包括擁有更好的性能,更低的復(fù)雜度,更低的實現(xiàn)耗費等。
AVS的變換算法采用了基于8×8塊的整數(shù)離散余弦變換(Discrete Cosine Transform,DCT)。由于基于塊的DCT的非覆蓋特性和基于塊的量化,在壓縮率高的情況下塊效應(yīng)就會明顯。為了減小塊效應(yīng),AVS引入了環(huán)路濾波技術(shù)以獲得更好的主觀視覺效果[5]。
AVS解碼器的設(shè)計通常采用軟硬件協(xié)同設(shè)計的方法——即在處理器周圍增加一些專用的硬件加速器,由硬件加速器完成相對獨立的、運算量大的操作,處理器負(fù)責(zé)運算量小但控制復(fù)雜的操作。軟硬件協(xié)同設(shè)計的方法一般把環(huán)路濾波作為一個硬件加速器進(jìn)行硬件實現(xiàn)[3,8,9]。
本文設(shè)計了一種AVS的環(huán)路濾波器的VLSI結(jié)構(gòu),利用了水平方向相鄰塊數(shù)據(jù)和豎直方向相鄰塊數(shù)據(jù)分開存儲的策略,以及流水線的濾波操作,充分利用了SRAM的帶寬資源,加快了環(huán)路濾波器的處理速度,提高了工作頻率。采用了文獻(xiàn)[7]中提出的片內(nèi)SRAM部分?jǐn)?shù)據(jù)自更新的方法,減少了對片外存儲器的訪問。該設(shè)計可以在處理器——數(shù)字信號處理器(Digital Signal Processor,DSP)的控制下進(jìn)行實時的環(huán)路濾波處理,可以很容易地嵌入到AVS解碼器SoC(System on Chip)中。
2 環(huán)路濾波算法
標(biāo)準(zhǔn)規(guī)定:宏塊內(nèi)部各個8×8塊的邊界,以及當(dāng)前宏塊與相鄰宏塊的上邊界和左邊界都應(yīng)進(jìn)行濾波。環(huán)路濾波以宏塊為單位,按照光柵掃描順序依次處理。圖像中每個宏塊的濾波過程如下:對亮度和色度分別做環(huán)路濾波,如圖1所示,首先從左到右對垂直邊界濾波,然后從上到下對水平邊界濾波[1]。
圖1 宏塊的濾波邊界
是否進(jìn)行環(huán)路濾波取決于邊界強度(Boundary strength,Bs)和邊界兩邊樣本值。邊界強度的確定過程如圖2所示[4]。色度塊的邊界強度與對應(yīng)位置上亮度塊的邊界強度相同。
圖2 邊界強度的確定過程
圖3[3]顯示了水平或垂直邊界兩側(cè)的塊P和塊Q的6個樣本點{p2,p1,p0,q0,q1,q2}。用P0,P1,Q0和Q1分別表示p0,p1,q0和q1濾波后的樣本值。根據(jù)Bs和兩個域值α,β的取值判斷是否需要對邊界兩邊的樣本進(jìn)行濾波,如果(Bs≠0) (|p0-q0|<α) (|p1-p0|<β)(|q1-q0|<β),則對邊界兩邊的樣本進(jìn)行濾波,否則不濾波[1]。
Bs=2時,對亮度塊邊界兩邊的樣本p0,p1,q0和q1的濾波過程如下[1]:
定義:
ap=|p2-p0|,aq=|q2-q0|.
if(ap<βabs(p0–q0)<((α2)+2)){
P0=(p1+2×p0+q0+2)2
P1=(2×p1+p0+q0+2)2
}
else
P0=(2×p1+p0+q0+2)2
if(aq<βabs(p0-q0)<((α2)+2)){
Q0=(q1+2×q0+p0+2)2
Q1=(2×q1+q0+p0+2)2
}
else
Q0=(2×q1+q0+p0+2)2
其中P0和Q0分別為p0和q0濾波后的值,P1和Q1為p1和q1濾波后的值。如果在上面的濾波過程中P1(Q1)不被賦值,則不對p1(q1)濾波;色度塊邊界兩邊的樣本p0和q0采用同樣的方法濾波,不對p1和q1濾波。
圖3 邊界兩邊的像素樣本
Bs=1時,對p0和q0濾波的計算過程如下[1]:
令delta=Clip3(-C,C,(((q0-p0)×3+(p1-q1)+4)3))
P0=Clip1(p0+delta)
Q0=Clip1(q0–delta)
然后根據(jù)如下條件判斷是否需要對p1和q1濾波:
(1) 如果為色度邊界,不對p1和q1濾波。
(2) 如果在亮度邊界處有ap<β,則:
P1=Clip1(p1+Clip3(-C,C,(((P0-p1)×3+(p2-Q0)+4)3)))
(3) 如果在亮度邊界處有aq<β,則:
Q1=Clip1(q1-Clip3(-C,C,(((q1-Q0)×3+(P0-q2)+4)3)))
上述濾波過程中,參數(shù)C由兩個塊的量化參數(shù)QPP和QPQ和圖像頭中的alphacoffset參數(shù)確定。
3 環(huán)路濾波器整體架構(gòu)
本文所設(shè)計的環(huán)路濾波加速器是處理器(DSP)+硬件加速器軟硬件協(xié)同設(shè)計的AVS解碼器中的一部分,它在解碼器中的位置見圖4。
圖4 AVS解碼器體系結(jié)構(gòu)
從圖4可見環(huán)路濾波與像素重建和幀存儲器SDRAM有數(shù)據(jù)交互,還有來自處理器DSP的參數(shù)和控制信號。由于高清視頻的數(shù)據(jù)量大,因而對解碼器的數(shù)據(jù)帶寬要求很高。通常高清解碼器的數(shù)據(jù)位寬為32 b才能滿足實時解碼的要求。圖4中環(huán)路濾波的數(shù)據(jù)位寬為32 b。
圖5為環(huán)路濾波器的系統(tǒng)架構(gòu)。SRAM1,SRAM2和SRAM3是片內(nèi)的單端口SRAM,用來存儲當(dāng)前MB的重建像素和當(dāng)前MB濾波涉及到的左鄰塊和上鄰塊數(shù)據(jù)。由于邊界強度Bs=1和Bs=2時的濾波計算不同[1],所以需要設(shè)計兩個不同的運算單元進(jìn)行濾波計算。Bs1為Bs=1時的濾波計算單元,Bs2為Bs=2時的濾波計算單元。Reg1,Reg2,…,Reg12為12個32 b的寄存器,存儲濾波中間數(shù)據(jù)??刂破鹘邮軓腄SP發(fā)送的命令和參數(shù),配置和控制環(huán)路濾波器的處理時序。
圖5 環(huán)路濾波器系統(tǒng)架構(gòu)
3.1 SRAM的存儲方式
SRAM1,SRAM2和SRAM3用來存儲當(dāng)前MB的重建像素和當(dāng)前MB濾波涉及到的左鄰塊和上鄰塊數(shù)據(jù)。當(dāng)前MB濾波涉及到左鄰塊的右邊三列數(shù)據(jù),由于本設(shè)計中的數(shù)據(jù)位寬為32 b,所以存儲了左鄰塊的右邊四列數(shù)據(jù),即圖6中的數(shù)據(jù)塊L0和L1(色度為L4和L5),存儲了上鄰塊的最后三行數(shù)據(jù),即圖6中的U0和U1(色度為U4和U5)。
圖6 SRAM中數(shù)據(jù)的存儲方式
為了加快環(huán)路濾波的處理速度,把邊界兩邊的數(shù)據(jù)塊存儲到不同的SRAM中,這樣就可以在同一時刻訪問邊界兩邊的數(shù)據(jù),加快數(shù)據(jù)的存取。把來自像素重建的數(shù)據(jù)和來自SDRAM的像素保存到不同的SRAM中,使得這兩路輸入數(shù)據(jù)不存在時序上的限制。3個SRAM數(shù)據(jù)的存儲方式見圖6所示,圖6左邊是濾波當(dāng)前MB設(shè)計到的數(shù)據(jù),右邊是數(shù)據(jù)在SRAM中的存儲方式。SRAM1存儲背景為斜條的數(shù)據(jù)塊,SRAM2存儲背景為斜方格的數(shù)據(jù)塊,SRAM3存儲背景為點陣的數(shù)據(jù)塊。
為了減少數(shù)據(jù)傳輸,直接用SRAM中數(shù)據(jù)對數(shù)據(jù)塊L0,L2,L4,L5進(jìn)行更新[7]。用圖7中背景為斜條的數(shù)據(jù)塊更新與其位置對應(yīng)的L0,L2,L4和L5。更新的操作在從DSP加載參數(shù)和命令時實現(xiàn),不會額外增加該模塊的濾波處理時間。
圖7 SRAM局部數(shù)據(jù)的自更新
3.2 環(huán)路濾波器的濾波時序
根據(jù)標(biāo)準(zhǔn)對濾波順序的規(guī)定,本設(shè)計先濾波亮度分量后濾波色度分量,先濾波色度Cb后濾波色度Cr。亮度分量邊界的濾波順序為:
BsV00→BsV10→BsV01→BsV11→BsH00→BsH01→BsH10→BsH11。
色度分量Cb(或Cr)先濾波豎直邊后濾波水平邊。
3.2.1 豎直邊界的濾波時序
由于SRAM都是單端口的,每個時鐘周期只能對它訪問一次。為了充分利用SRAM的帶寬,本設(shè)計中豎直邊的濾波時序如圖8所示。圖8中“Rd”表示讀SRAM,用一個時鐘周期就可以把豎直邊界兩邊的兩行數(shù)據(jù)讀出,因為邊界兩邊的數(shù)據(jù)塊存儲在不同的SRAM中;“Wr”表示寫SRAM,用一個時鐘周期也可以把濾波后的兩行數(shù)據(jù)寫入SRAM;“0”表示無操作,在等待下個周期把SRAM的輸出數(shù)據(jù)存儲到寄存器中。濾波的計算是兩級流水,第一級流水計算出P0和Q0,第二級流水計算出P1和Q1?!?C”表示第一級流水;“2C”表示第二級流水。在第二級流水計算后把計算的結(jié)果寫入SRAM。這種時序每個時鐘周期對SRAM訪問(讀取或?qū)懭?一次,充分利用了SRAM的帶寬,濾波計算采用兩級流水結(jié)構(gòu)提高了模塊的工作頻率。兩行數(shù)據(jù)并行的濾波處理縮短了豎直邊的濾波時間。
與亮度分量的邊界不同,色度分量的每個邊界有2個Bs,所以濾波色度邊界時濾波一半數(shù)據(jù)后Bs就要更換。豎直邊的濾波在第10個時鐘周期更換Bs值,即圖8中時間軸的豎線標(biāo)志處。
從圖8可以計算出每條豎直邊濾波需要18個時鐘周期,6條豎直邊共需18×6=108個時鐘周期。
圖8 豎直邊的濾波時序
3.2.2 水平邊界的濾波時序
為了充分利用SRAM的帶寬,并且只有一套濾波計算單元(即設(shè)計中只包含一個Bs1的計算單元和一個Bs2的計算單元),本設(shè)計中水平邊的濾波時序如圖9所示。圖9中“Rd”,“Wr”,“0”,“1C”和“2C”的表示與圖8中相同。“Rd1”,“Rd2”,“Rd3”讀取SRAM三次,把水平邊上邊三行和下邊三行數(shù)據(jù)讀出。水平邊和豎直邊濾波計算單元(即Bs1的計算單元和一個Bs2的計算單元)是同一個計算單元。
這種時序每個時鐘周期對SRAM訪問一次,充分利用了SRAM的帶寬,只有一套濾波計算單元減小了環(huán)路濾波器的資源開銷。兩列數(shù)據(jù)并行的濾波處理縮短了水平邊的濾波時間。
若為色度邊界則在第9個時鐘周期更換Bs值,即時間軸的豎線標(biāo)志處。
從圖9可以計算出每條水平邊濾波需要14個時鐘周期,6條水平邊共需14×6=84個時鐘周期。
圖9 水平邊的濾波時序
對一個MB進(jìn)行環(huán)路濾波處理,需要96個周期輸入6個block的重建數(shù)據(jù),需要24個周期輸入來自SDRAM的數(shù)據(jù),需要108個周期輸出濾波后的數(shù)據(jù),需要108個周期進(jìn)行豎直邊的濾波,需要84個周期進(jìn)行水平邊的濾波,還需要40個周期從DSP加載參數(shù)和配置整個環(huán)路濾波加速器。由于6個block的重建數(shù)據(jù)輸入和來自SDRAM的數(shù)據(jù)輸入不存在時序約束,所以在輸入6個block的重建數(shù)據(jù)的同時輸入來自SDRAM的數(shù)據(jù),減少了輸入時間延時。綜上所述,對一個MB進(jìn)行環(huán)路濾波處理最多需要96+108+108+84+40=436個時鐘周期。
3.3 寄存器中的數(shù)據(jù)存儲和更新
有12個32 b的寄存器存儲從SRAM中讀出的數(shù)據(jù),即Reg1,Reg2,…,Reg12。
豎直邊濾波時,從SRAM讀出的邊界左邊的32 b數(shù)據(jù)存儲到Reg0中,豎直邊界右邊的32 b數(shù)據(jù)存儲到Reg1中。進(jìn)行濾波處理時對Reg0和Reg1進(jìn)行濾波。濾波后的輸出數(shù)據(jù)直接存儲到對應(yīng)的SRAM中。
圖10 豎直邊濾波時寄存器中數(shù)據(jù)的存取
水平邊濾波時,先從SRAM中讀出邊界兩邊的各三行數(shù)據(jù),然后進(jìn)行濾波,濾波后的數(shù)據(jù)先保存到相同的寄存器中,整個水平邊濾波完后再輸出到SRAM,見圖11。SRAM的數(shù)據(jù)按行存儲到寄存器中,寄存器中濾波后的數(shù)據(jù)也是按行輸出到SRAM,但對寄存器中數(shù)據(jù)的濾波是按列進(jìn)行的,12個寄存器實現(xiàn)了行進(jìn)列出和列進(jìn)行出的轉(zhuǎn)置功能。
水平邊濾波時,先濾波左邊的4列(即圖11中的第1、第2、第3、第4列),后濾波右邊的4列(即圖11中的第5、第6、第7、第8列)。濾波左邊4列時,從SRAM讀出的邊界上邊的三行數(shù)據(jù)存儲到Reg0,Reg2和Reg4中,下邊的三行數(shù)據(jù)存儲到Reg1,Reg3和Reg5中,然后按第1列,第2列,…,第4列的順序進(jìn)行列的濾波,濾波后的數(shù)據(jù)保存到寄存器中相同的位置。濾波右邊4列的操作與左邊4列相同。
圖11 水平邊濾波時寄存器中數(shù)據(jù)的存取
由于水平邊濾波只修改邊界兩邊的2行數(shù)據(jù),Reg0,Reg5,Reg6,Reg11的數(shù)據(jù)未被修改,所以往SRAM中寫濾波后的結(jié)果時無需寫入這4個寄存器的數(shù)據(jù)。
4 仿真和綜合結(jié)果
用Verilog HDL語言描述了環(huán)路濾波模塊的結(jié)構(gòu),用ModelSim進(jìn)行仿真,用AVS測試碼流“foreman_cif”進(jìn)行測試,導(dǎo)出參考C程序[2]的數(shù)據(jù)和ModelSim仿真數(shù)據(jù)進(jìn)行對比,對比結(jié)果證明其功能正確。在0.18 μmCMOS工藝下用Synopsys公司的Design Compiler進(jìn)行綜合,最高工作頻率是167 MHz,電路規(guī)模是3.6萬門(包括片上SRAM)。工作在167 MHz的解碼器解1 280×720 60幀/s的碼流,處理一個MB的時間為773個時鐘周期,本設(shè)計濾波一個MB的時間為436個時鐘周期,所以本設(shè)計能夠?qū)? 280×720 60幀/s的高清視頻進(jìn)行實時的環(huán)路濾波。
表1比較了本設(shè)計與文獻(xiàn)的性能。由于本設(shè)計中的濾波運算單元采用了兩級流水線設(shè)計,工作頻率是最高的;由于采用了將水平邊和豎直邊相鄰塊數(shù)據(jù)塊分開存儲的方法,優(yōu)化了豎直邊和水平邊的濾波時序,MB的處理時間是最短的。
表2比較了本設(shè)計與文獻(xiàn)的存儲器資源利用情況。若把當(dāng)前MB存儲到模塊內(nèi)的SRAM中,本設(shè)計用的存儲資源較少,因為本設(shè)計中的數(shù)據(jù)位寬為32 b,減少了冗余數(shù)據(jù)的存儲。
表1 設(shè)計性能的對比
對比參數(shù)文獻(xiàn)[3]文獻(xiàn)[4]文獻(xiàn)[5]文獻(xiàn)[6]本文
工作頻率 /MHz150140108108167
電路規(guī)模(等效邏輯門)38k30k--36k
MB處理時間(包括輸入輸出延時)(cycle)460---436
MB處理時間(不包括輸入輸出延時) (cycle)276-316293261
解碼碼流及幀率1 280×720 60幀/s720p/1 080i1 920×1 080-1 280×720 60幀/s
5 結(jié) 語
本文設(shè)計了一種應(yīng)用于AVS高清解碼器的環(huán)路濾波硬件加速器。該設(shè)計利用將水平邊和豎直邊相鄰塊數(shù)據(jù)分開存儲的方法,優(yōu)化了豎直邊和水平邊的濾波時序,縮短了一個MB的處理時間;濾波運算單元采用
了兩級流水線設(shè)計,提高了模塊的工作頻率;優(yōu)化的
豎直邊和水平邊的濾波時序充分利用了SRAM的帶寬,減小了SRAM的復(fù)雜度和電路規(guī)模;利用片內(nèi)SRAM部分?jǐn)?shù)據(jù)自更新的方法,減少了數(shù)據(jù)的傳輸。最后在0.18 μmCMOS工藝下用DC進(jìn)行綜合,最高工作頻率為167 MHz,電路規(guī)模約36 k等效邏輯門(含片內(nèi)SRAM)。仿真結(jié)果顯示,本文設(shè)計的環(huán)路濾波器能夠?qū)VS高清視頻(1 280×720 60幀/s)進(jìn)行實時的環(huán)路濾波。該環(huán)路濾波器可用于AVS高清實時解碼器芯片中。
表2 存儲資源利用情況對比
當(dāng)前MB存儲位置存儲資源
文獻(xiàn)[3]模塊內(nèi)部的SRAM
1個51×64 b雙端口SRAM;1個51×64 b雙端口SRAM3×64 b的寄存器堆
文獻(xiàn)[4]模塊外部存儲器3個16×64 b雙端口SRAM
文獻(xiàn)[5]模塊外部存儲器2個8×8 b的寄存器堆;1個16×64 b單端口SRAM;
文獻(xiàn)[6]模塊內(nèi)部2個8×8 b的寄存器堆;
1個48×64 b單端口SRAM;
1個3 480×24 b單端口SRAM;
1個32×64 b單端口SRAM;
1個16×64 b的fifo
本文模塊內(nèi)部2個64×32 b單端口SRAM;
1個48×32 b單端口SRAM;
12×32 b的寄存器堆
參考文獻(xiàn)
[1]數(shù)字音視頻編解碼技術(shù)標(biāo)準(zhǔn)工作組.先進(jìn)音視頻編碼——第2部分:視頻[S].2005.
[2]AVS 1.0 RM 52j[S].2007.
[3]Bin Sheng,Wen Gao,Di Wu,A Platform-based Architecture of Loop Filter for AVS [J].IEEE International Conference on Signal Processing,2004,1:571-574.
[4]代建偉,黃晁,夏宇聞.適用于AVS的自適應(yīng)環(huán)路濾波器硬件設(shè)計[J].微電子學(xué)與計算機,2005,22(12):123-126.
[5]葉姜莉,龍滬強,劉佩林.一種適用于AVS自適應(yīng)環(huán)路濾波器的VLSI實現(xiàn)[J].信息技術(shù),2007,31(2):62-64,82.
[6]黃中華,支琤.基于FPGA的AVS環(huán)路濾波器設(shè)計與實現(xiàn)[J].計算機工程,2007,33(6):222-224.
[7]Tsu-Ming Liu,Wen-Ping Lee,Ting-An Lin.A Memory-Efficient Deblocking Filter for H.264/AVC Video Coding [C].IEEE International Symposium on Circuit and System,2005,3:2 140-2 143.
[8]Shih-Chien Chang,Wen-Hsiao Peng,Shih-Hao Wang,et al.A Platform Based Bus-interleaved Architecture for De-blocking Filter in H.264/MPEG-4 AVC [J].IEEE Transaction on Consumer Electronics,2005,51(1):249-255.
作者簡介 李 霞 女,1982年出生,碩士研究生。研究方向為多媒體處理器SoC設(shè)計。
陳 杰 男,研究員。研究方向為通信基帶SoC設(shè)計、多媒體處理器SoC設(shè)計與高性能數(shù)字信號處理器的研發(fā)。
周 莉 女,副研究員。研究方向為多媒體處理器SoC設(shè)計與數(shù)字版權(quán)管理的研發(fā)。
注:本文中所涉及到的圖表、注解、公式等內(nèi)容請以PDF格式閱讀原文