《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 設(shè)計應(yīng)用 > AVS全I(xiàn)幀視頻編碼器的FPGA實時實現(xiàn)
AVS全I(xiàn)幀視頻編碼器的FPGA實時實現(xiàn)
來源:電子技術(shù)應(yīng)用2012年第9期
趙慧榮,張 剛
太原理工大學(xué) 信息工程學(xué)院,山西 太原030024
摘要: AVS視頻編碼標(biāo)準(zhǔn)是我國自主知識產(chǎn)權(quán)的信源編碼標(biāo)準(zhǔn)。完成了AVS視頻編碼器在FPGA平臺上的設(shè)計與實現(xiàn)。考慮硬件平臺的結(jié)構(gòu)特點,采用可重用設(shè)計和流水線設(shè)計對編碼器進(jìn)行優(yōu)化,保證了流水線的高效運行以及硬件資源的最優(yōu)利用。通過ISE軟件仿真和Xilinx公司Vritex-4 pro平臺驗證,最高工作頻率可達(dá)110 MHz,滿足CIF分辨率下I幀在FPGA硬件平臺的實時編碼要求。
關(guān)鍵詞: AVS 編碼器 FPGA
中圖分類號: TN919.8
文獻(xiàn)標(biāo)識碼: A
文章編號: 0258-7998(2012)09-0039-03
Real-time implementation of AVS I frame video encoder on FPGA
Zhao Huirong,Zhang Gang
College of Information Engineering, Taiyuan University of Technology Taiyuan, Taiyuan 030024,China
Abstract: AVS video coding standard is the source coding standards with independent intellectual property rights of our country. A video encoder in FPGA platform is designed and at last implemented. Considering the structure characteristics of hardware platform, this paper comes up with the reusable design and production line design to optimize the encoder, ensure efficient operation of the assembly line and the optimal use of hardware resources. Through the ISE software simulation and Xilinx company′s Vritex-II pro platform verification, the highest working frequency can be up to 110 MHz, meeting the real-time code requirements of the CIF resolution I frame in FPGA hardware platform.
Key words : AVS;encoder;FPGA

    AVS作為新一代音視頻編碼標(biāo)準(zhǔn)[1],2006年正式被批準(zhǔn)為國家標(biāo)準(zhǔn)。AVS視頻編碼標(biāo)準(zhǔn)兼顧了性能與實現(xiàn)復(fù)雜度之間的矛盾,代表了國際先進(jìn)水平。目前AVS解碼器和解碼芯片已經(jīng)有了比較成熟的發(fā)展,但AVS編碼器仍處于研究階段,市場還未產(chǎn)業(yè)化。FPGA平臺擁有豐富的寄存器資源和邏輯資源,其并行執(zhí)行的硬件實現(xiàn)方式可以滿足大量的高速電子線路設(shè)計需求,能實現(xiàn)復(fù)雜的數(shù)字視頻信號處理,是硬件實現(xiàn)的最佳選擇之一。

    本文對AVS編碼I幀算法進(jìn)行深入研究,根據(jù)FPGA硬件特點[2],實現(xiàn)了AVS的全I(xiàn)幀實時編碼。以宏塊為單元,考慮到占用資源和運行速度兩方面的限制,采用適當(dāng)?shù)膹?fù)用技術(shù)和流水線技術(shù)對系統(tǒng)進(jìn)行了優(yōu)化,保證了流水線的高效運行以及硬件資源的最優(yōu)利用。
1 系統(tǒng)設(shè)計
    本設(shè)計基于FPGA平臺完成CIF分辨率圖像的實時采集、AVS全I(xiàn)幀壓縮編碼和網(wǎng)絡(luò)傳輸,主要由視頻采集系統(tǒng)、數(shù)據(jù)調(diào)度系統(tǒng)、I幀編碼系統(tǒng)和以太網(wǎng)傳輸系統(tǒng)構(gòu)成,其實現(xiàn)框圖如圖1所示。

    視頻采集系統(tǒng)主要完成將復(fù)合視頻解碼成YUV(4:2:0)數(shù)字視頻,為AVS 全I(xiàn)幀編碼準(zhǔn)備好視頻數(shù)據(jù)。
    數(shù)據(jù)調(diào)度系統(tǒng)主要完成向I幀編碼系統(tǒng)提供原始數(shù)據(jù),同時將編碼后的碼流傳輸?shù)揭蕴W(wǎng)傳輸系統(tǒng)。視頻數(shù)據(jù)吞吐量大、帶寬高,涉及到低速存儲器(如DDR)和高速存儲器(如FPGA內(nèi)部RAM)之間大量的數(shù)據(jù)交換,成功的數(shù)據(jù)調(diào)度策略是實現(xiàn)實時編碼的關(guān)鍵技術(shù)之一。
    I幀編碼系統(tǒng)主要完成AVS視頻I幀實時編碼,整個系統(tǒng)使用硬件描述語言獨立設(shè)計完成。
    以太網(wǎng)傳輸系統(tǒng)主要完成對AVS碼流的打包,并將其傳輸?shù)絇C機。本系統(tǒng)包含實驗室設(shè)計的以太網(wǎng)控制器IP核和網(wǎng)絡(luò)傳輸協(xié)議IP核。
    PC機上的AVS播放器采用DirectShow架構(gòu),基于本實驗室完成的AVS解碼器設(shè)計了AVS實時播放器,用來驗證AVS編碼系統(tǒng)的實時編碼能力。
2 數(shù)據(jù)采集與數(shù)據(jù)交換
    前端視頻采集模塊采用TVP5150PBS視頻解碼器將輸入的PAL視頻信號轉(zhuǎn)換成數(shù)字YUV(4:2:0)信號,輸出格式為ITU-R BT.656。
    系統(tǒng)上電后,F(xiàn)PGA通過IIC總線對TVP5150解碼器進(jìn)行初始化配置;接通復(fù)合視頻信號后,TVP5150即可正確輸出8 bit數(shù)字YUV視頻信號至FPGA。由于接收的視頻信號為ITU565格式,視頻信息僅由8 bit視頻信號組成,沒有獨立的行、場同步信息,所以,F(xiàn)PGA需要從接收的8 bit視頻信號中提取行場同步信號,并將相鄰8 bit數(shù)據(jù)(亮度、色差信號)轉(zhuǎn)換成16 bit視頻信號。
    轉(zhuǎn)換后的16 bit視頻信號經(jīng)DDR SDRAM控制器寫入到外部DDR SDRAM存儲器中,系統(tǒng)采用的DDR SDRAM存儲器容量為16 M×16 bit,利用迸發(fā)模式,將接收的一行視頻信號存儲到DDR SDRM的一行,則一幀視頻信號可存儲在DDR SDRAM的一個Bank空間。
3 I幀編碼系統(tǒng)整體設(shè)計
    根據(jù)AVS I幀編碼算法的特點,將I幀編碼系統(tǒng)的整體設(shè)計[3]分為幀內(nèi)預(yù)測模塊、變換量化模塊和熵編碼模塊,再加上殘差、重構(gòu)和寫CBP等一些外圍電路,即可實現(xiàn)AVS全I(xiàn)幀的編碼。整體設(shè)計框圖如圖2所示。

    幀內(nèi)預(yù)測模塊主要完成從鄰近宏塊的重構(gòu)數(shù)據(jù)中獲取用于當(dāng)前宏塊預(yù)測的參考數(shù)據(jù),并完成對8×8塊的預(yù)測,得到預(yù)測數(shù)據(jù)和預(yù)測模式。
    變換量化模塊主要完成DCT變換、量化、反量化和反DCT變換。輸出的量化數(shù)據(jù)經(jīng)過Z掃描后進(jìn)行熵編碼,輸出編碼碼流;反DCT變換后的數(shù)據(jù)與預(yù)測數(shù)據(jù)相加,得到子宏塊的重構(gòu)數(shù)據(jù),重構(gòu)數(shù)據(jù)反饋給幀內(nèi)預(yù)測模塊進(jìn)行下一個子宏塊的預(yù)測。
    熵編碼模塊主要完成Z掃描和變長編碼。對掃描后的數(shù)據(jù)進(jìn)行全零判斷,得到該宏塊的CBP值。變長編碼后的碼流前面加上寫入的CBP信息,組成一個宏塊的編碼碼流,編碼碼流8 bit對齊放到RAM中。
4 I幀編碼模塊設(shè)計
    對AVS全I(xiàn)幀編碼設(shè)計時,需充分考慮FPGA硬件平臺的特點,整個系統(tǒng)使用硬件描述語言獨立設(shè)計完成。
4.1 幀內(nèi)預(yù)測模塊
    幀內(nèi)預(yù)測模塊[4]以宏塊為單元,主要包括參考樣本獲取和預(yù)測兩部分。首先在預(yù)測前要從鄰近宏塊中獲取進(jìn)行16×16宏塊預(yù)測時所需要的上面25個數(shù)據(jù)和前一個宏塊重構(gòu)的最右列16個數(shù)據(jù)。子宏塊的預(yù)測數(shù)據(jù)經(jīng)變換量化模塊后,從重構(gòu)數(shù)據(jù)中提取下一個子宏塊預(yù)測所需的邊界數(shù)據(jù)。輸出的預(yù)測數(shù)據(jù)與子宏塊編碼前原始數(shù)據(jù)相減,得到的殘差數(shù)據(jù)給變換量化模塊。輸出最佳預(yù)測模式給寫CBP模塊。
    算法采用多種預(yù)測模式并行執(zhí)行,一個時鐘預(yù)測一個像素,并對預(yù)測完的一個像素計算一次絕對值差,每次時鐘都會將SAD累加,64個時鐘就能將預(yù)測和計算SAD同時完成。所有可用預(yù)測模式并行完成后,進(jìn)行模式判決模塊,比較所有模式下SAD的最小值,選出最佳預(yù)測模式并輸出對應(yīng)的預(yù)測數(shù)據(jù)。本算法共享公共運算單元和多級流水線操作,資源利用率高,并且兼顧了處理速度和實現(xiàn)代價。
    用ModelSim進(jìn)行仿真的結(jié)果如圖3所示,信號sum_v、sum_h、sum_dc、sum_dc_left、sum_dc_top、sum_ddl、sum_ddr和sum_p是各種模式下計算的代價值SAD,通過比較大小,得出最佳的預(yù)測模式(logout)和預(yù)測數(shù)據(jù)(dataout_intra)。

4.2 變換量化模塊
    該模塊主要包括DCT變換、量化、反量化和反DCT變換[5]4個部分。DCT變換采用蝶形算法,每次處理8×8的一行數(shù)據(jù),節(jié)省了大量的運算時間,且大量的乘法用移位和加法代替。量化中涉及查表運算,表格存放在ROM中,通過地址即可得到所需數(shù)據(jù)。殘差數(shù)據(jù)經(jīng)DCT變換、量化后,量化系數(shù)傳給熵編碼模塊;同時將量化后的數(shù)據(jù)再進(jìn)行反量化和反DCT變換,得到8×8子宏塊的重構(gòu)數(shù)據(jù),重構(gòu)的數(shù)據(jù)反饋給幀內(nèi)預(yù)測模塊,進(jìn)行下一個8×8子宏塊的預(yù)測。
    由于亮度和色度算法相同,因此該模塊可以共享,減少了資源的利用。變換量化模塊涉及大量的運算,是最耗時的模塊,為了提高處理速度,算法使用了適當(dāng)?shù)牟⑿胁僮?,將量化與反量化、反DCT變換并行執(zhí)行;同時把數(shù)據(jù)位數(shù)擴(kuò)展,可同時對8×8矩陣的一行數(shù)據(jù)賦值,從而節(jié)省了讀取數(shù)據(jù)占用的時間,并且提高了數(shù)據(jù)的利用率。
    用ModelSim進(jìn)行仿真的結(jié)果如圖4所示,設(shè)定qp為36的情況下,n0_o的輸出為量化數(shù)據(jù)。

    在進(jìn)行熵編碼模塊的設(shè)計時,算法采用一種較少存儲空間來存儲碼表的方法,并將碼表查詢、碼表優(yōu)化和指數(shù)哥倫布編碼合并為一個流水線單元并行處理,節(jié)省了存儲中間結(jié)果所需的大量存儲空間;將熵編碼各任務(wù)并行執(zhí)行,加快了處理速度。
    用ModelSim進(jìn)行仿真的結(jié)果如圖6所示,狀態(tài)機在4、5、6循環(huán)判斷,并在6狀態(tài)時輸出子宏塊編碼碼流(dataout)。

5 仿真與驗證
    本設(shè)計使用VHDL硬件描述語言進(jìn)行設(shè)計實現(xiàn),采用Xilinx ISE進(jìn)行綜合驗證、ModelSim 6.2b進(jìn)行仿真,器件選用Xilinx公司的xc4vsx25-10ff668,最高工作頻率達(dá)到110 MHz,綜合后的資源利用情況如圖7所示。

 


    本文完成了AVS全I(xiàn)幀編碼器在FPGA平臺上的設(shè)計與實現(xiàn)。經(jīng)仿真與驗證,能達(dá)到CIF分辨率下視頻圖像的實時編碼。與同類設(shè)計相比,本設(shè)計采用適當(dāng)?shù)膹?fù)用技術(shù)和流水線技術(shù)對系統(tǒng)進(jìn)行了優(yōu)化,保證了流水線的高效運行以及硬件資源的最優(yōu)利用,且系統(tǒng)具有開發(fā)
成本低、性能和靈活性高、更新方便等特點。
參考文獻(xiàn)
[1] 畢厚杰.視頻壓縮編碼標(biāo)準(zhǔn):H_264/AVC[M].北京:人民郵電出版社,2005.
[2] 王道憲.CPLD/FPGA可編程邏輯器件應(yīng)用與開發(fā)[M].北京:國防工業(yè)出版社,2004.
[3] 胡倩,張珂,虞露.AVS視頻解碼器的一種結(jié)構(gòu)設(shè)計與硬件實現(xiàn)[J].浙江大學(xué)學(xué)報(工學(xué)版),2006,40(12):2139-2143.
[4] Liu Min,Wei Zhiqiang.A fast mode decision algorithm for  intra prediction in AVS-M video coding[C].Proceedings of the 2007 International Conference on Wavelet Analysis and Pattern Recognition, ICWAPR 07,2008:326-331.
[5] 黃友文,陳詠恩.AVS反掃描、反量化和反變換模塊的一種優(yōu)化設(shè)計[J].計算機工程與應(yīng)用,2008,44(19):93-95.
[6] 劉群鑫.AVS中可變長解碼器的硬件設(shè)計[J].現(xiàn)代電子技術(shù),2007,30(23):185-187,194.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。