王康景,陳衛(wèi)松,方立軍
(安徽師范大學 物理與電子信息學院,安徽 蕪湖241000)
一種基于FPGA的多路視頻合成及傳輸方法
王康景,陳衛(wèi)松,方立軍
(安徽師范大學 物理與電子信息學院,安徽 蕪湖241000)
針對大型監(jiān)控系統(tǒng)中實現多路視頻數據合成單路的傳輸問題,提出了一種基于FPGA的多路視頻合成及傳輸的設計方案。根據以太網協(xié)議,將不同視頻流作相應的封裝,緩存在各路對應的包FIFO中,通過采用輪詢機制讀取包FIFO中的視頻數據幀,暫存在總的包FIFO中,并通過千兆以太網發(fā)送,實現多路視頻數據流合成單路傳輸。實驗結果表明,該設計方案可實現視頻數據快速準確的傳輸,極大地提高了傳輸效率和可靠性。
FPGA;包FIFO;高速緩存;視頻監(jiān)控;輪詢
近年來,隨著視頻傳輸和網絡監(jiān)控技術的發(fā)展,視頻監(jiān)控在工業(yè)和安防等領域得到了廣泛的應用。在視頻監(jiān)控系統(tǒng)中,監(jiān)控攝像頭的數量越來越多,覆蓋的區(qū)域也越來越大。傳統(tǒng)的視頻傳輸方式將單個攝像頭采集到的數據通過單根線路進行傳輸,對于龐大的監(jiān)控網絡來說,極其浪費資源[1]。如何在保證視頻數據傳輸可靠性的前提下,降低線路傳輸的數量、提高傳輸的效率成為一個關鍵的問題。
針對以上問題,本文先給出了系統(tǒng)的總體設計方案,并詳細地分析包FIFO的設計和多路數據合成的原理。通過對FPGA靈活快速地操作,實現多路數據合成單路,并進行可靠的遠程傳輸,本設計方案適用于大型視頻監(jiān)控系統(tǒng)[2]。
圖1為系統(tǒng)總體框架圖。FPGA采集多路輸入的視頻數據[3],并根據IEEE802.3以太網協(xié)議分別對視頻數據進行封裝[4]。將封裝后的數據幀快速緩存在包FIFO中,采用輪詢機制[5],檢測并判斷各路包FIFO中empty信號的狀態(tài),以幀為單位讀取包FIFO中的數據,緩存至下一級總的包FIFO內。發(fā)送模塊讀取包FIFO內部的數據幀,進行CRC校驗碼的計算[6],并添加至數據幀中,同時在數據幀前加入前導碼和幀定界符,通過千兆以太網物理芯片發(fā)送出去[7]。
圖1 系統(tǒng)總體框架圖
每路封裝的視頻數據幀中加入了數據流號的標志,使得在接收端能夠解析出視頻數據[8],根據標志送入不同的終端處理。只要各路數據帶寬的總和不大于千兆以太網[9]傳輸帶寬,就不會產生視頻圖像的突變現象,從而提高了傳輸效率和傳輸的可靠性。
視頻數據流的時鐘速率要遠低于發(fā)送時鐘的頻率,實現數據流的合并必須進行異步時鐘域處理[10]。一般異步處理采用異步字節(jié)FIFO或者包FIFO,而異步字節(jié)FIFO[11]只適用于數據量較少、單字節(jié)讀寫的情況,對于以數據幀為單位的讀寫及高速的數據幀緩存[12]操作,需要采用包FIFO。
將包FIFO分為4個塊,每塊的存儲大小相等,其中地址的高2位表示塊地址。圖2是該設計中的包FIFO,它是由異步字節(jié)FIFO、RAM以及其他邏輯單元組成。
圖2 包FIFO內部結構
圖2中,異步FIFO用于緩存塊地址、視頻數據流的參數及數據包的長度,RAM用于緩存視頻數據幀。對包FIFO的讀寫操作如下:
當一幀數據寫入時,先把視頻數據幀寫入RAM中,同時將視頻數據流的參數及數據幀的長度計算出來,暫存于參數寄存器中。一幀數據幀寫完后,檢測完成指示信號是否有效。若完成信號有效,把該信號作為異步FIFO寫使能信號,將視頻數據流的參數及塊地址寫入異步FIFO中,并對塊地址進行加1處理;若完成信號無效,則不對異步FIFO及塊地址進行操作,之前寫入RAM中的數據會被下一次的數據寫入覆蓋。當讀取包FIFO中的數據幀時,先讀取異步FIFO中的數據(包括數據幀的塊地址、參數及其長度)。根據讀取的數據的長度,發(fā)出對RAM[13]讀取的使能和地址信號。將塊地址作為高位,與讀地址進行位合并,讀取RAM中緩存的視頻數據。
通過以上對包FIFO的讀寫控制,既能夠對視頻數據幀進行緩存,又能夠進行異步時鐘域的處理,從而大大提高了數據傳輸的可靠性。
經封裝的各路視頻數據幀緩存在各路對應的包FIFO中,合并的目的是采用時分復用[14]的思想及輪詢機制,將各路的視頻數據幀合并成單路,進行相應傳輸。狀態(tài)機[15]具有高效穩(wěn)定的特點,能夠將復雜的控制邏輯分解成有限個穩(wěn)定狀態(tài),因此對于高速信號處理十分適用。在本設計中,采用三段式狀態(tài)機實現合并的功能,并通過參數來設置合并的路數,其結構原理圖如圖3所示。
圖3 多路合并實現原理
初始狀態(tài)通過循環(huán)對各路包FIFO的empty進行檢測,若檢測到empty信號為0,說明該路包FIFO中至少有一幀數據,則暫存對應的序列號,并跳轉至下一狀態(tài)。向對應包FIFO中的異步FIFO發(fā)出有效的讀使能信號,讀取視頻數據幀的塊地址、數據幀長度及參數,完成該狀態(tài)之后,跳轉至下一狀態(tài)。根據視頻數據幀的長度信息,向包FIFO中的RAM發(fā)出有效的讀使能及讀地址信號,將塊地址與讀地址進行位合并,作為RAM讀地址,讀取暫存其中的視頻數據幀,并輸入下一級的包FIFO中。讀取完成之后,向下一級包FIFO給出完成信號,同時將序列號加1跳轉至empty信號檢測狀態(tài),繼續(xù)執(zhí)行以上的狀態(tài)。
各路視頻數據流的帶寬總和低于千兆以太網的發(fā)送帶寬,輪詢機制使得各路包FIFO中視頻數據能夠有效及時地發(fā)送出去,包FIFO不會出現滿狀態(tài),即數據不會存在丟失現象。同時也不會產生延時,從而能夠保證高可靠性傳輸。
本實驗通過像素為30 W的2個攝像頭OV7670采集視頻數據,將封裝完成之后視頻數據流合并成單路,并通過千兆以太網物理芯片發(fā)送出去;接收端對接收的視頻數據幀進行解析校驗,并根據數據幀中的數據流號標志傳輸至相應的終端系統(tǒng),通過VGA實時顯示[16],其硬件電路如圖4所示,經接收端解析校驗后的單路視頻圖像如圖5所示。
圖4 視頻傳輸的硬件系統(tǒng)
圖5 接收實時顯示的圖像
該實驗結果表明視頻數據流在合并的過程中并未丟失,對視頻圖像顯示的質量沒有造成影響。同時,在該系統(tǒng)中,噪聲對視頻圖像影響較小,相對于一般道路上的視頻監(jiān)控圖像,清晰度有所改善。
本文基于FPGA實現了千兆以太網多路視頻合成及傳輸的系統(tǒng),對具有異步處理及緩存功能的包FIFO和多路視頻數據幀合成單路傳輸的實現進行了詳細的闡述及分析,并通過實驗結果很好地論證了系統(tǒng)的性能。多路視頻合成及傳輸方法在視頻傳輸系統(tǒng)中的應用,不僅提高視頻圖像傳輸的可靠性,而且對視頻傳輸的效率也有很大的提高。該方法提高了產品的質量,同時降低了產品設計和維護成本,對多種視頻傳輸和監(jiān)控系統(tǒng)等更多領域的應用與研究具有重要意義。
[1] 黃凱奇,陳曉棠,康運鋒,等.智能視頻監(jiān)控技術綜述[J].計算機學報,2015,38(6):1093-1118.
[2] 邵應昭,任愛鋒,初秀琴.基于FPGA的視頻監(jiān)控系統(tǒng)[J].電子技術應用,2008,34(5):20-22.
[3] 張龍濱,黎福海.一種基于FPGA的實時視頻采集與遠程傳輸系統(tǒng)[J].電視技術,2011,35(17):45-47.
[4] 馮永茂,徐秀知,陳 宇,等.基于快速以太網物理層的實時高速數字視頻傳輸[J].電子器件,2007,30(1):144-147,151.
[5] 柳虔林,趙東風,丁洪偉,等.輪詢系統(tǒng)的演進及發(fā)展[J].無線電通信技術,2013,39(2):55-59.
[6] 楊利娟,陳多觀.循環(huán)冗余校驗CRC的分析及硬件實現[J].蘇州科技學院學報:自然科學版,2010,27(4):51-53.
[7] 王立瑩,王俊芳,曹 琨,等.VLAN及在千兆以太網MAC中的實現[J].無線電工程,2013,43(1): 1-3.
[8] 李前進,張 熙,王寅龍,等.基于直接線性變換法的視頻圖像解析[J].無線電工程,2013,43(3): 47-50.
[9] 韋 宏,付友濤,孔凡鵬,等.基于FPGA的千兆以太網設計[J].現代電子技術,2012,35(18):56-59.
[10]王曉婷.跨時鐘域設計方法研究[D].西安:西安電子科技大學,2012.
[11]黃忠朝,趙于前.一種實現高速異步FIFO的FPGA方法[J].計算機工程與應用,2010,46(3):13-15.
[12]向厚振,張志杰,王 鵬.基于FPGA視頻和圖像處理系統(tǒng)的FIFO緩存技術[J].電視技術,2012,36(9):41-43.
[13]孫培燕,李克儉,蔡啟仲,等.FPGA數據總線寬度不相等的雙口RAM的設計[J].科學技術與工程,2014,14(35):249-253.
[14]孔繁青.時分復用設備動態(tài)幀結構技術研究[J].無線電通信技術,2005,31(4):12-14.
[15]孔 昕,吳武臣,侯立剛,等.基于Verilog的有限狀態(tài)機設計與優(yōu)化[J].微電子學與計算機,2010,27(2):180-183.
[16]魏曉輝.基于FPGA的實時視頻圖像采集與VGA顯示系統(tǒng)設計研究[D].西安:西安電子科技大學,2015.
A Method of Multi-channel Video Synthesis and Transmission Based on FPGA
WANG Kang-jing,CHEN Wei-song,FANG Li-jun
(Anhui Normal University,College of Physics and Electronic Information,Wuhu Anhui 241000,China)
In view of the transmission problem of multi-channel video data synthesis in large-scale monitoring system,a kind of multi-channel video synthesis and transmission method based on FPGA is proposed to achieve multi-channel video data synthesized in single channel.Different video streams are encapsulated correspondingly according to Ethernet protocol.The encapsulated data is cached in the package FIFO of corresponding channel.A polling mechanism is used to control the reading of the data in packet FIFO.The data is temporarily stored in the total package FIFO and sent through the Gigabit Ethernet.Accordingly synthesis of multi-channel video data stream is achieved.Experiment results show that this design scheme can achieve rapid and accurate transmission of video data.It also greatly improves the transmission efficiency and reliability.
FPGA;package FIFO;caching;video surveillance;polling
10.3969/j.issn.1003-3114.2017.01.11
王康景,陳衛(wèi)松,方立軍.一種基于FPGA的多路視頻合成及傳輸方法[J].無線電通信技術,2017,43(1):44-46.
2016-09-23
國家自然科學基金項目(61401004)
王康景(1992—),男,本科,主要研究方向:通信工程。陳衛(wèi)松(1973—),男,博士,副教授,主要研究方向:視頻及音頻信號處理。
TP393
A
1003-3114(2017)01-44-3