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