王 悅,陳 濤,張 剛
(太原理工大學(xué)通信與嵌入式系統(tǒng)實(shí)驗(yàn)室,山西太原 030024)
基于FPGA及MCU的AVS編碼器設(shè)計
王 悅,陳 濤,張 剛
(太原理工大學(xué)通信與嵌入式系統(tǒng)實(shí)驗(yàn)室,山西太原 030024)
實(shí)現(xiàn)了對視頻圖像數(shù)據(jù)的采集﹑調(diào)度﹑實(shí)時編碼及傳輸?shù)裙δ?。以FPGA實(shí)現(xiàn)的MCU為主控制器,對采集來的視頻信號進(jìn)行數(shù)據(jù)調(diào)度,將編碼后的數(shù)據(jù)經(jīng)I2C總線發(fā)送至上位機(jī)軟件,同時對讀取的碼流解碼,最終在PC終端上顯示。根據(jù)硬件平臺的結(jié)構(gòu)特性,設(shè)計采用流水線結(jié)構(gòu)對系統(tǒng)進(jìn)行優(yōu)化,保證了系統(tǒng)運(yùn)行的高效性,實(shí)現(xiàn)了資源的最優(yōu)化利用。在Xilinx Virtex-5的FPGA上實(shí)現(xiàn)并驗(yàn)證,系統(tǒng)可達(dá)的最高工作頻率為170 MHz,且滿足I幀的實(shí)時編碼要求,實(shí)現(xiàn)高精度﹑高可靠性的AVS采編傳輸系統(tǒng)。
AVS;MCU;編碼;流水線;FPGA
在實(shí)際生產(chǎn)和科學(xué)研究等多方領(lǐng)域,大數(shù)據(jù)處理需求日益凸顯,MCU作為一般數(shù)據(jù)處理系統(tǒng)的主控單元,以其靈活性、實(shí)時性及智能化得到普遍青睞。但受到MCU處理速度的限制,其只能用于數(shù)據(jù)量小、工作頻率較低的數(shù)據(jù)處理系統(tǒng)。而FPGA的高時鐘頻率﹑靈活的編程配置、較小的延遲等特性,有效地彌補(bǔ)了MCU的不足。
本設(shè)計在FPGA上實(shí)現(xiàn)MCU,并將數(shù)據(jù)采集控制﹑數(shù)據(jù)緩存﹑數(shù)據(jù)編碼及數(shù)據(jù)傳輸集成在同一個FPGA上,完成了由MCU控制處理的片上視頻編碼系統(tǒng)。同時利用流水線技術(shù)對MCU進(jìn)行優(yōu)化,進(jìn)一步提升了控制器的運(yùn)算處理速度。在FPGA上用VHDL語言描述實(shí)現(xiàn)了整個系統(tǒng)的操作流程,并在Xilinx Virtex-5 FPGA上驗(yàn)證了該系統(tǒng)的高效性與穩(wěn)定性。
本設(shè)計以FPGA為系統(tǒng)平臺,將MCU作為主控制器完成圖像的實(shí)時采集﹑編碼及傳輸,系統(tǒng)主要分為4個模塊:視頻采集模塊﹑數(shù)據(jù)調(diào)度模塊﹑編碼模塊和I2C總線模塊,系統(tǒng)原理框圖如圖1所示。
圖1 系統(tǒng)原理框圖
具體工作流程:復(fù)合視頻信號經(jīng)前端視頻采集模塊輸入整個系統(tǒng),在前端視頻采集模塊內(nèi)完成數(shù)字信號格式的轉(zhuǎn)換,轉(zhuǎn)換后的數(shù)字信號由MCU控制器調(diào)度實(shí)現(xiàn)與編碼模塊的通信,編碼模塊收到原始數(shù)據(jù)后按編碼算法對數(shù)據(jù)編碼,并將編好的碼流重新交由MCU控制器處理,MCU收到碼流時將激活I(lǐng)2C總線模塊,由其將結(jié)果返回至AVS播放模塊,完成顯示操作。
用TVP5150PBS型號的視頻解碼器作為前端視頻采集模塊,它將輸入的PAL視頻信號轉(zhuǎn)換成YUV格式的數(shù)字信號[1]。
系統(tǒng)啟動后,由MCU控制器對視頻解碼器初始化,輸入復(fù)合視頻信號后,視頻解碼器即可向MCU控制器正確輸出8位的YUV數(shù)字信號。MCU收到8位的視頻信號后,再對其進(jìn)行信息提取等操作。
MCU是整個視頻系統(tǒng)數(shù)據(jù)處理的核心,MCU控制器負(fù)責(zé)將8位視頻信號中的行場同步信息提取出來,將相鄰的亮度和色差信號轉(zhuǎn)換成16位的視頻信號。同時MCU還控制數(shù)據(jù)的調(diào)度,完成編碼模塊原始數(shù)據(jù)的輸入,以及編碼后返回碼流的處理。
圖2 數(shù)據(jù)轉(zhuǎn)發(fā)電路
用FPGA上實(shí)現(xiàn)的MCU控制器進(jìn)行大數(shù)據(jù)量的處理有著明顯的優(yōu)勢,既有MCU的智能性﹑實(shí)時性﹑靈活性,又有FPGA的延遲小﹑配置靈活﹑速度快等特性。并且在本設(shè)計中,考慮到對大數(shù)據(jù)量處理系統(tǒng)的進(jìn)一步優(yōu)化,在MCU控制器中加入流水結(jié)構(gòu),加快解析速度,提升數(shù)據(jù)處理頻率[2]。
對于無流水結(jié)構(gòu)來說,輸出延遲不會影響整個系統(tǒng)操作,但流水結(jié)構(gòu)電路,若輸出結(jié)果需要反饋,則延遲將會導(dǎo)致系統(tǒng)“數(shù)據(jù)相關(guān)”的出現(xiàn),成為系統(tǒng)不穩(wěn)定甚至錯誤的主要原因。因此流水結(jié)構(gòu)設(shè)計中,“數(shù)據(jù)相關(guān)”沖突是最關(guān)鍵的問題[3]。設(shè)計中實(shí)現(xiàn)了一種數(shù)據(jù)轉(zhuǎn)發(fā)電路,用以解決“數(shù)據(jù)相關(guān)”問題的出現(xiàn),并在驗(yàn)證時得到了較好的效果。數(shù)據(jù)轉(zhuǎn)發(fā)電路如圖2所示。
將產(chǎn)生數(shù)據(jù)相關(guān)的輸出結(jié)果提前轉(zhuǎn)發(fā)給相關(guān)模塊,然后再按流水順序輸出,完成該級流水操作。
編碼模塊包括幀內(nèi)預(yù)測、變換量化、熵編碼、殘差、重構(gòu)及CBP[4]。其結(jié)構(gòu)如圖3所示。
圖3 I幀編碼模塊結(jié)構(gòu)框圖
1)幀內(nèi)預(yù)測
以宏塊為基本單元進(jìn)行預(yù)測,主要完成參考值的選定和預(yù)測。預(yù)測時要先通過MCU控制器獲得原始數(shù)據(jù),再從上面相鄰宏塊獲得預(yù)測時用到的25個上邊界數(shù)據(jù)和左邊宏塊的16個右邊界數(shù)據(jù)。對于預(yù)測模式的選擇,采用多種模式并行的方式,每個時鐘對一個像素點(diǎn)進(jìn)行預(yù)測,同時計算SAD值[5]。當(dāng)所有預(yù)測模式的SAD值計算完后,將SAD值最小的預(yù)測模式作為最佳預(yù)測模式,并將其輸出給CBP。預(yù)測后的數(shù)據(jù)與原始數(shù)據(jù)相減再經(jīng)量化得到殘差量化數(shù)據(jù),反量化后與原始數(shù)據(jù)相加得到重構(gòu)數(shù)據(jù),將重構(gòu)數(shù)據(jù)中的邊界數(shù)據(jù)提取,作為下一塊預(yù)測的邊界輸入。該部分采用流水技術(shù)[6],處理速度快、工作效率高。
2)變換量化
主要實(shí)現(xiàn)DCT變換、量化、反量化、反 DCT變換[7]。DCT的實(shí)現(xiàn)采用蝶形算法,將運(yùn)算中涉及的乘法操作以移位和加法實(shí)現(xiàn),提高了運(yùn)算效率。由于該部分運(yùn)算量巨大,最耗費(fèi)時間資源,因此采用并行操作提高執(zhí)行速度。
對于色度來說,其算法與亮度相同,因此該部分不需做重復(fù)設(shè)計,只需將色度數(shù)據(jù)直接輸入計算,降低了資源的耗費(fèi),提高資源利用率。
3)熵編碼
該部分用于實(shí)現(xiàn)zig-zag掃描、游程編碼、碼表查詢、碼表切換、哥倫布編碼和碼流拼接[8]。對量化后的數(shù)據(jù)進(jìn)行zig-zag掃描,當(dāng)掃描后的結(jié)果全為0時,不對該塊采用熵編碼,不作處理等待下一次的掃描結(jié)果;當(dāng)掃描結(jié)果不全為0時,對該塊進(jìn)行熵編碼操作。
碼流拼接部分要將編碼結(jié)果以8位數(shù)據(jù)形式輸出。由于(level,run)編碼的碼字長度不定,因此需要根據(jù)前面碼字長度信息對當(dāng)前碼流拼接然后輸出。圖4給出實(shí)現(xiàn)碼流拼接的狀態(tài)轉(zhuǎn)移圖。code_num為已編碼字,numbits為碼字長度。
圖4 碼流拼接狀態(tài)轉(zhuǎn)移圖
I2C總線實(shí)現(xiàn)編碼后碼流上傳到PC終端,總線上只掛載MCU控制器(作為發(fā)送器)和PC終端(作為接收器),由MCU控制器激活I(lǐng)2C總線進(jìn)行數(shù)據(jù)的上傳。在本設(shè)計的基礎(chǔ)上設(shè)計了一種AVS解碼器,根據(jù)該解碼器同時基于DirectShow架構(gòu),實(shí)現(xiàn)了一種PC終端上的AVS播放器,用來驗(yàn)證本設(shè)計的編碼器編碼效果。
本設(shè)計采用ISE開發(fā)環(huán)境,運(yùn)用VHDL硬件描述語言實(shí)現(xiàn)編程,并在XST和ModelSim中進(jìn)行了邏輯綜合和功能仿真。選擇目標(biāo)器件為xc5vlx110t-1ff1136,頂層模塊綜合結(jié)果見表1。
表1 頂層模塊綜合資源表
綜合結(jié)果顯示,系統(tǒng)最高工作頻率可達(dá)170 MHz,對圖像實(shí)時編碼要求25 f/s(幀/秒),當(dāng)工作時鐘頻率為100 MHz時,對一個宏塊處理的周期數(shù)應(yīng)在10 101個周期之內(nèi),本設(shè)計的編碼系統(tǒng)工作在100 MHz時鐘頻率時,完成一個宏塊的編碼需要5 300個時鐘周期,達(dá)到了實(shí)時編碼的標(biāo)準(zhǔn),驗(yàn)證了系統(tǒng)的實(shí)時性與可靠性。
圖5給出VS編解碼軟件在qp=36時,I幀編碼后輸出的碼流,圖6為本設(shè)計在相同情況下,編碼后輸出的碼流。從圖中結(jié)果可以看出,2種實(shí)現(xiàn)方式的輸出結(jié)果相同,從而證明了本設(shè)計的正確性。
圖5 VS編解碼軟件輸出碼流結(jié)果(截圖)
圖6 AVS編碼器輸出碼流結(jié)果(截圖)
圖7給出了本設(shè)計完成一幀圖像編碼上傳至AVS播放器后的顯示圖像。
圖7 編碼圖像的顯示驗(yàn)證
設(shè)計實(shí)現(xiàn)了FPGA上AVS全I(xiàn)幀的實(shí)時編碼。以FPGA上實(shí)現(xiàn)的MCU為主控制器,完成視頻數(shù)據(jù)的調(diào)度與編碼,并將編碼后的數(shù)據(jù)發(fā)送至PC終端的AVS解碼播放器中完成顯示。系統(tǒng)加入流水線技術(shù)實(shí)現(xiàn)進(jìn)一步優(yōu)化,并在適當(dāng)?shù)墓δ軐?shí)現(xiàn)部分采用并行技術(shù),實(shí)現(xiàn)了系統(tǒng)的高效運(yùn)行,資源的最優(yōu)化利用。經(jīng)實(shí)驗(yàn)驗(yàn)證,系統(tǒng)可達(dá)到實(shí)時編碼要求,運(yùn)算速度快、編碼正確穩(wěn)定、可靠性高。同時系統(tǒng)的靈活性為設(shè)計的實(shí)際應(yīng)用提供了可行性。
:
[1]趙慧榮,張剛.AVS全I(xiàn)幀視頻編碼器的FPGA實(shí)時實(shí)現(xiàn)[J].電子技術(shù)應(yīng)用,2012,38(9):39-41.
[2]張剛,張博,常青.SoC系統(tǒng)設(shè)計[M].北京:國防工業(yè)出版社,2013.
[3]張杰.基于FPGA的八位RISC CPU的設(shè)計[J].微計算機(jī)信息,2006,12(2):155-157.
[4]杜娟,丁丹丹,虞露.基于FPGA的可重構(gòu)視頻編碼器設(shè)計[J].浙江大學(xué)學(xué)報:工學(xué)版,2012,46(5):905-911.
[5]劉暢,熊付榮.AVS解碼器幀內(nèi)預(yù)測并行自適應(yīng)硬件實(shí)現(xiàn)[J].電視技術(shù),2009,33(S2):51-53.
[6]鄒濤,楊秀芝,陳建.基于FPGA的AVS視頻解碼幀內(nèi)預(yù)測的設(shè)計和實(shí)現(xiàn)[J].電視技術(shù),2012,36(20):41-44.
[7]黃友文,陳詠恩.AVS反掃描、反量化和反變換模塊的一種優(yōu)化設(shè)計[J].計算機(jī)工程與應(yīng)用,2008,44(19):93-95.
[8]劉群鑫.AVS中可變長解碼器的硬件設(shè)計[J].現(xiàn)代電子技術(shù),2007,30(23):185-187.
Design of AVS Encoder Based on FPGA and MCU
WANG Yue,CHEN Tao,ZHANG Gang
(Laboratory of Communication and Embedded System,Taiyuan University of Technology,Taiyuan 030024,China)
The functions of video image data acquisition,scheduling,real-time coding,transmission and so forth are achieved in this design.With the MCU implemented on FPGA as the master controller,the video signals acquired are scheduled and the encoded data are sent to upper computer software through I2C bus,at the same time the readed code stream are decoded,and finally it is displayed on PC terminal.According to the structure characteristics of hardware platform,pipeline architecture is utilized in this design to optimize the system,which ensures the high efficiency of the system operation and the optimal utilization of resources.Implemented and verified on Xilinx Virtex-5 platform,the maximum frequency of the system can be up to 170 MHz,meeting the real-time encoding demand of I frame and achieving the AVS acquisition and encoding transmission system of high accuracy and high reliability.
AVS;MCU;encoding;pipeline;FPGA
TN919.8
B
【本文獻(xiàn)信息】王悅,陳濤,張剛.基于FPGA及MCU的AVS編碼器設(shè)計[J].電視技術(shù),2014,38(3).
國家自然科學(xué)基金項(xiàng)目(60372058;60772101)
王 悅(1988— ),女,碩士生,主研音視頻編碼算法AVS、嵌入式系統(tǒng);
陳 濤(1987— ),碩士生,主研嵌入式系統(tǒng)研究;
張 剛(1953— ),教授,博士生導(dǎo)師,主研音視頻編碼算法AVS、SoC集成電路設(shè)計、應(yīng)用系統(tǒng)快速開發(fā)方法。
責(zé)任編輯:魏雨博
2013-04-27