摘 要:AVS是我國自主制定的音視頻編碼技術(shù)標(biāo)準(zhǔn)。提出一種新的適用于AVS視頻解碼的變字長解碼(VLD) 結(jié)構(gòu),重點研究AVS變字長碼的特點,通過合理的碼字分割解決碼字的存儲問題,采用桶式移位器,使得每個時鐘能處理1個碼字。采用Verilog 語言進(jìn)行設(shè)計、模擬,并通過了FPGA 驗證。采用0.18 μm CMOS 工藝庫綜合,在50 MHz的時鐘頻率下工作時電路規(guī)模達(dá)到1.6萬門左右。
關(guān)鍵詞:AVS視頻標(biāo)準(zhǔn);變長解碼;FPGA;Verilog HDL
中圖分類號:TP368.1文獻(xiàn)標(biāo)識碼:B
文章編號:1004-373X(2008)24-024-03
Hardware Design of VLD Module in AVS Video Decoder
ZHENG Jun
(Design Center of Communication Software and ASIC,Tongji University,Shanghai,200092,China)
Abstract:AVS is the audio and video standard of China.A novel architecture for Variable Length Decoding (VLD) algorithm for AVS video decoder is proposed in the paper.According to the characteristics of AVS DCT coefficients table,the storage of code word is solved by proper code word partitioning.Barrel shift register is used so that each code word can be processed in one clock period.The module is designed,simulated based on Verilog HDL.The whole design has been verified by FPGA.The VLD is synthesized with 0.25μm CMOS cell library,and is implemented in 16,000 gates when operating at 50MHz.
Keywords:AVS;variable length decoding;FPGA;Verilog HDL
1 引 言
AVS(Audio Video Coding Standard) 標(biāo)準(zhǔn)是《信息技術(shù)先進(jìn)音視頻編碼》系列標(biāo)準(zhǔn)的簡稱,是由中國自主提出的第一個音視頻編碼標(biāo)準(zhǔn)。該標(biāo)準(zhǔn)面向中國的信息產(chǎn)業(yè)需求,服務(wù)于高分辨率數(shù)字廣播、高密度激光數(shù)字存儲媒體、無線寬帶多媒體通訊、互聯(lián)網(wǎng)寬帶流媒體等重大信息產(chǎn)業(yè)應(yīng)用。目前音視頻產(chǎn)業(yè)可以選擇的信源編碼標(biāo)準(zhǔn)有4個:MPEG-2,MPEG-4,MPEG-4 AVC,AVS。前3個標(biāo)準(zhǔn)是由MPEG專家組完成的,第四個是我國自主制定的。從主要技術(shù)指標(biāo)——編碼效率比較:MPEG-4是MPEG-2的1.4倍,AVS和AVC相當(dāng),都是MPEG-2兩倍以上。
由于AVS采用的是上下文自適應(yīng)2D-VLC,且編碼塊系數(shù)過程中進(jìn)行多碼表切換,故AVS有很高的壓縮效率,這使得其算法的復(fù)雜度也高。如果采用軟件解AVS的碼流將很難滿足實時視頻解碼的要求,為此需要采用硬件實現(xiàn)。用硬件實現(xiàn)視頻解碼器一般有2種基本的實現(xiàn)結(jié)構(gòu):DSP 型和ASIC 型的結(jié)構(gòu)。DSP 型結(jié)構(gòu)基于可編程DSP核,它可以通過適當(dāng)?shù)木幊?,實現(xiàn)不同標(biāo)準(zhǔn)的解碼,其缺點是程序復(fù)雜,增加了I/O、總線以及DSP 核和專用模塊的沖突。而ASIC 結(jié)構(gòu)中每個功能塊均采用專用的VLSI結(jié)構(gòu),通過系統(tǒng)控制器控制各部分的運行,ASIC結(jié)構(gòu)能有效地提高時鐘頻率、減小芯片面積。因而為了獲得更高的性能,這里采用ASIC結(jié)構(gòu)來實現(xiàn)。
變字長解碼是壓縮系統(tǒng)廣泛采用的技術(shù)。它實際上是Huffman 編碼的逆過程,其主要思想是通過對數(shù)據(jù)出現(xiàn)幾率的統(tǒng)計,使平均碼長最小化。小的碼字指向出現(xiàn)幾率大的數(shù)據(jù),長的碼字指向出現(xiàn)幾率小的數(shù)據(jù)。AVS之所以能夠有較高的壓縮效率是因為AVS所用的變字長編碼相比以前的變字長編碼方法有許多改進(jìn)和獨特的特征,它的語法元素和殘差系數(shù)是由定長碼和指數(shù)哥倫布編碼( Exp-Golomb) 構(gòu)成的,其中指數(shù)哥倫布編碼和語法元素之間存在多種映射關(guān)系。AVS 還引入了起始碼和插入碼的概念,起始碼用來標(biāo)識比特流語法結(jié)構(gòu)的開始,插入碼是為了防止在比特流中出現(xiàn)偽起始碼而插入的“2’b10”兩個比特,所以在進(jìn)行VLD解碼之前首先要做的工作是去掉起始碼和插入碼。
2 變長解碼器的設(shè)計
2.1 總體結(jié)構(gòu)設(shè)計
整個AVS視頻解碼芯片是采用流水作業(yè)的,而VLD解碼模塊是視頻解碼的第一級流水處理,視頻解碼器通過主控制器啟動整個VLD解碼模塊開始解碼工作;整個VLD所要執(zhí)行的操作有:
(1) 查找起始碼,并去除填充位;
(2) 解定長碼,即解碼幀內(nèi)預(yù)測模式、宏塊類型、參考索引和運動向量等和Exp-Golomb編碼;
(3) 讀取殘差系數(shù)等,并將解碼后的殘差系數(shù)存入RAM中。
VLD的系統(tǒng)結(jié)構(gòu)如圖1 所示,VLD負(fù)責(zé)解析出輸入碼流中的所有語法元素,并做處理;它先從外部獲得壓縮的碼流數(shù)據(jù),碼流從片外RAM讀取送入到FIFO中緩存,以減少請求內(nèi)存的次數(shù),為了提高數(shù)據(jù)的處理效率,這里外部數(shù)據(jù)的輸入位寬和FIFO的輸出數(shù)據(jù)位寬均設(shè)定為32位;FIFO Interface模塊用于桶型移位和檢測起始碼及偽起始碼并剔除位插入,然后將碼流送入到VLC Decoder模塊供其解碼;宏塊層以上的語法元素或保存在VLC Decoder模塊內(nèi)部或端口傳出,宏塊層以下的語法元素則要傳送給其他模塊做相應(yīng)的處理,而block內(nèi)的游程編碼數(shù)據(jù)則送入片內(nèi)RAM中存儲供下一級讀取。
2.2 檢測起始碼及插入位
VLD中序列頭部的定長解碼包括起始碼檢測、偽起始碼檢測及其插入碼剔除、定長解碼3個部分。步驟如下:
(1) 從FIFO中輸入到FIFO Interface的數(shù)據(jù)寄存在2個32位的寄存器中RegA和RegB中;
(2) RegA和RegB中總共有8個字節(jié)(如圖2所示),其中第2,3,4三個字節(jié)用來檢測插入碼,而從第0,1,2三個字節(jié)中檢測起始碼。如果檢測發(fā)現(xiàn)這3個字節(jié)24位為“0000 0000 0000 0000 0000 0010”即是起始碼,那么第3個字節(jié)是起始碼類型。如果檢測到是插入碼則表明第2個字節(jié)中的“10”是需要剔除掉的插入位,此時輸出第2個字節(jié)的前6位,否則輸出整個字節(jié)。
2.3 定長變長碼解碼
AVS的變長碼不同于MPEG-2,也不同于H.264。AVS采用的是上下文自適應(yīng)2D-VLC的指數(shù)哥倫布編碼,這使得在同等條件下AVS碼率能達(dá)到現(xiàn)行MPEG-2標(biāo)準(zhǔn)的一半,而且在降低解碼復(fù)雜度后卻能達(dá)到與H.264幾乎相同的效率。
(1) K階指數(shù)哥倫布碼。
指數(shù)哥倫布碼由3部分組成分別是:碼流中非0比特位前0的個數(shù)(leadingZeroBits)、一個1位和非0比特位開始leadingZeroBits+k位碼流數(shù)據(jù),表1為k階指數(shù)哥倫布編碼表;碼字的編碼方式為:
codenum=2n+k-2k+readbits(n),n=leadingZeroBitsAVS中k的階數(shù)取值范圍為0~3。
AVS中定義了4種描述符來表示指數(shù)哥倫布編碼的語法元素,分別是u(e),s(e),m(e),c(e),其中:描述符ue(v)表示語法元素的值等于CodeNum;se(v)根據(jù)表2 中給出的有符號指數(shù)哥倫布碼的映射關(guān)系求語法元素的值;me(v)根據(jù)標(biāo)準(zhǔn)中規(guī)定的映射關(guān)系求語法元素的值;ce(v)用于表示指數(shù)哥倫布碼與殘差系數(shù)(2D-VLD) 的映射關(guān)系,ce(v)描述的語法元素采用0 階、1 階、2 階或3 階指數(shù)哥倫布編碼進(jìn)行解析,對應(yīng)還有19個碼表供查找;
(2) 塊系數(shù)解碼。
AVS 對塊的殘差系數(shù)采用內(nèi)容自適應(yīng)的變字長編碼,其特點是每次解碼時都要根據(jù)上次解碼的結(jié)果切換碼表,其解析流程如圖3所示,首先選取哥倫布編碼的階數(shù),因為不同的編碼方式采用的哥倫布編碼的階數(shù)不一樣;其次是從碼流中解析出codenum值;然后通過codenmu的值解析并查表得出(level,run),再將其存入RAM中供下一級模塊使用。
(3) VLD解碼的主要結(jié)構(gòu)和行為。
VLD最主要的結(jié)構(gòu)模塊為桶型移位器(FIFO)和變長字解碼控制單元(VLC Decoder),其內(nèi)部結(jié)構(gòu)如圖4所示;控制單元根據(jù)標(biāo)志依次解析各個語法層的碼字。桶型移位器從外部緩存中讀入碼流,輸出并行解碼的碼流。對于定長碼采用直通數(shù)據(jù)的連接。對于變長碼的碼字,在變長字解碼部件內(nèi)部通過查找對應(yīng)的碼表(19個碼表存放于ROM中),1個時鐘周期內(nèi)直接解析出碼字,同時返回消耗的碼字長度,使桶形移位器為下一個碼字的解碼做好準(zhǔn)備。選通器在控制信號選取相應(yīng)的碼字輸出,該結(jié)構(gòu)不僅功能上完全滿足變長解碼的要求,而且在基于復(fù)雜碼表分割的技術(shù)下,關(guān)鍵路徑也比較短,硬件規(guī)模也不大。
3 邏輯仿真與綜合
將提出的VLD解碼器結(jié)構(gòu)設(shè)計用Verilog HDL描述,在ModelSim上通過了綜合前仿真。通過testbench直接將測試碼流數(shù)據(jù)輸入硬件描述語言仿真模型,然后將輸出數(shù)據(jù)與AVS標(biāo)準(zhǔn)參考軟件(C版本)產(chǎn)生的輸出對比,以實現(xiàn)仿真功能。
解析殘差數(shù)據(jù)是VLD最主要的任務(wù),在VLD解析殘差的過程中,當(dāng)Codenum小于59時,解析1對level和run需要5個周期。當(dāng)Codenum大于等于59時,解析1對level和run需要8個周期。
整個電路使用Altera 的Quartus Ⅱ5.0 綜合工具綜合,slice 總數(shù)為4 011 個;用Synopsys 的Design Compiler 在0.18 μm CMOS單元庫下綜合,面積大約1.6萬門。變字長解碼器模塊是AVS解碼器的一部分,綜合后與其他部分集成,通過了 FPGA 驗證,用 Nios 的 Stratix ⅡEP2S60型 FPGA,其最高頻率能達(dá)到84 MHz,可以實現(xiàn)AVS 標(biāo)準(zhǔn)清晰度視頻的實時解碼。用CMOS 綜合最高頻率166 MHz,可以實現(xiàn)高清晰度視頻的實時解碼。
4 結(jié) 語
提出一種適用于AVS視頻解碼標(biāo)準(zhǔn)的變字長解碼的硬件實現(xiàn)方法,通過合理的碼字分割并采用ROM 存放碼表,設(shè)計了一個流水線的專用VLSI 變字長解碼結(jié)構(gòu);采用Verilog 語言實現(xiàn),并通過FPGA驗證,每個時鐘周期處理1個碼字,提高了電路速度,減小了芯片面積。
參考文獻(xiàn)
[1]姚棟,虞露.H.264指數(shù)哥倫布碼解碼部件的硬件設(shè)計和實現(xiàn).電視技術(shù),2004(11):14-16,23.
[2]葉波,俞穎,秦東,等.適用于MPEG2MP@ML標(biāo)準(zhǔn)的視頻解碼器設(shè)計.半導(dǎo)體技術(shù),2000,25(3):23-26.
[3]Choi S B,Lee M H.High Speed Pattern Matching for a Fast Huffman Decoder[J].IEEE Trans.Consumer Electron,1995,41(1):97-103.
[4]Fukuzawa Y,Hasegawa K,Hanaki H,et al.A Programmable VLC Core Architecture for Video Compression DSP.Signal Processing Systems,1997.SIPS 97-Design and Implementation,1997:469-478.
[5]王海濤,鄧彬.基于FPGA的PCI局部總線控制器的Verilog實現(xiàn).現(xiàn)代電子技術(shù),2006,29(5):31-32,36.
[6]熊海東,黃超昔,邵宇豐.FPGA設(shè)計中的編程技巧.現(xiàn)代電子技術(shù),2005,28(2):18-20.
作者簡介 鄭 軍 男,1981年出生,同濟(jì)大學(xué)電子與信息工程學(xué)院信息與通信工程系通信軟件及專用集成電路設(shè)計中心在讀碩士研究生。研究方向為H.264/AVS解碼芯片的FPGA驗證與ASIC設(shè)計。