王康景,陳衛(wèi)松,方立軍
(安徽師范大學(xué) 物理與電子信息學(xué)院,安徽 蕪湖241000)
一種基于FPGA的多路視頻合成及傳輸方法
王康景,陳衛(wèi)松,方立軍
(安徽師范大學(xué) 物理與電子信息學(xué)院,安徽 蕪湖241000)
針對(duì)大型監(jiān)控系統(tǒng)中實(shí)現(xiàn)多路視頻數(shù)據(jù)合成單路的傳輸問題,提出了一種基于FPGA的多路視頻合成及傳輸?shù)脑O(shè)計(jì)方案。根據(jù)以太網(wǎng)協(xié)議,將不同視頻流作相應(yīng)的封裝,緩存在各路對(duì)應(yīng)的包FIFO中,通過采用輪詢機(jī)制讀取包FIFO中的視頻數(shù)據(jù)幀,暫存在總的包FIFO中,并通過千兆以太網(wǎng)發(fā)送,實(shí)現(xiàn)多路視頻數(shù)據(jù)流合成單路傳輸。實(shí)驗(yàn)結(jié)果表明,該設(shè)計(jì)方案可實(shí)現(xiàn)視頻數(shù)據(jù)快速準(zhǔn)確的傳輸,極大地提高了傳輸效率和可靠性。
FPGA;包FIFO;高速緩存;視頻監(jiān)控;輪詢
近年來(lái),隨著視頻傳輸和網(wǎng)絡(luò)監(jiān)控技術(shù)的發(fā)展,視頻監(jiān)控在工業(yè)和安防等領(lǐng)域得到了廣泛的應(yīng)用。在視頻監(jiān)控系統(tǒng)中,監(jiān)控?cái)z像頭的數(shù)量越來(lái)越多,覆蓋的區(qū)域也越來(lái)越大。傳統(tǒng)的視頻傳輸方式將單個(gè)攝像頭采集到的數(shù)據(jù)通過單根線路進(jìn)行傳輸,對(duì)于龐大的監(jiān)控網(wǎng)絡(luò)來(lái)說(shuō),極其浪費(fèi)資源[1]。如何在保證視頻數(shù)據(jù)傳輸可靠性的前提下,降低線路傳輸?shù)臄?shù)量、提高傳輸?shù)男食蔀橐粋€(gè)關(guān)鍵的問題。
針對(duì)以上問題,本文先給出了系統(tǒng)的總體設(shè)計(jì)方案,并詳細(xì)地分析包FIFO的設(shè)計(jì)和多路數(shù)據(jù)合成的原理。通過對(duì)FPGA靈活快速地操作,實(shí)現(xiàn)多路數(shù)據(jù)合成單路,并進(jìn)行可靠的遠(yuǎn)程傳輸,本設(shè)計(jì)方案適用于大型視頻監(jiān)控系統(tǒng)[2]。
圖1為系統(tǒng)總體框架圖。FPGA采集多路輸入的視頻數(shù)據(jù)[3],并根據(jù)IEEE802.3以太網(wǎng)協(xié)議分別對(duì)視頻數(shù)據(jù)進(jìn)行封裝[4]。將封裝后的數(shù)據(jù)幀快速緩存在包FIFO中,采用輪詢機(jī)制[5],檢測(cè)并判斷各路包FIFO中empty信號(hào)的狀態(tài),以幀為單位讀取包FIFO中的數(shù)據(jù),緩存至下一級(jí)總的包FIFO內(nèi)。發(fā)送模塊讀取包FIFO內(nèi)部的數(shù)據(jù)幀,進(jìn)行CRC校驗(yàn)碼的計(jì)算[6],并添加至數(shù)據(jù)幀中,同時(shí)在數(shù)據(jù)幀前加入前導(dǎo)碼和幀定界符,通過千兆以太網(wǎng)物理芯片發(fā)送出去[7]。
圖1 系統(tǒng)總體框架圖
每路封裝的視頻數(shù)據(jù)幀中加入了數(shù)據(jù)流號(hào)的標(biāo)志,使得在接收端能夠解析出視頻數(shù)據(jù)[8],根據(jù)標(biāo)志送入不同的終端處理。只要各路數(shù)據(jù)帶寬的總和不大于千兆以太網(wǎng)[9]傳輸帶寬,就不會(huì)產(chǎn)生視頻圖像的突變現(xiàn)象,從而提高了傳輸效率和傳輸?shù)目煽啃浴?/p>
視頻數(shù)據(jù)流的時(shí)鐘速率要遠(yuǎn)低于發(fā)送時(shí)鐘的頻率,實(shí)現(xiàn)數(shù)據(jù)流的合并必須進(jìn)行異步時(shí)鐘域處理[10]。一般異步處理采用異步字節(jié)FIFO或者包FIFO,而異步字節(jié)FIFO[11]只適用于數(shù)據(jù)量較少、單字節(jié)讀寫的情況,對(duì)于以數(shù)據(jù)幀為單位的讀寫及高速的數(shù)據(jù)幀緩存[12]操作,需要采用包FIFO。
將包FIFO分為4個(gè)塊,每塊的存儲(chǔ)大小相等,其中地址的高2位表示塊地址。圖2是該設(shè)計(jì)中的包FIFO,它是由異步字節(jié)FIFO、RAM以及其他邏輯單元組成。
圖2 包FIFO內(nèi)部結(jié)構(gòu)
圖2中,異步FIFO用于緩存塊地址、視頻數(shù)據(jù)流的參數(shù)及數(shù)據(jù)包的長(zhǎng)度,RAM用于緩存視頻數(shù)據(jù)幀。對(duì)包FIFO的讀寫操作如下:
當(dāng)一幀數(shù)據(jù)寫入時(shí),先把視頻數(shù)據(jù)幀寫入RAM中,同時(shí)將視頻數(shù)據(jù)流的參數(shù)及數(shù)據(jù)幀的長(zhǎng)度計(jì)算出來(lái),暫存于參數(shù)寄存器中。一幀數(shù)據(jù)幀寫完后,檢測(cè)完成指示信號(hào)是否有效。若完成信號(hào)有效,把該信號(hào)作為異步FIFO寫使能信號(hào),將視頻數(shù)據(jù)流的參數(shù)及塊地址寫入異步FIFO中,并對(duì)塊地址進(jìn)行加1處理;若完成信號(hào)無(wú)效,則不對(duì)異步FIFO及塊地址進(jìn)行操作,之前寫入RAM中的數(shù)據(jù)會(huì)被下一次的數(shù)據(jù)寫入覆蓋。當(dāng)讀取包FIFO中的數(shù)據(jù)幀時(shí),先讀取異步FIFO中的數(shù)據(jù)(包括數(shù)據(jù)幀的塊地址、參數(shù)及其長(zhǎng)度)。根據(jù)讀取的數(shù)據(jù)的長(zhǎng)度,發(fā)出對(duì)RAM[13]讀取的使能和地址信號(hào)。將塊地址作為高位,與讀地址進(jìn)行位合并,讀取RAM中緩存的視頻數(shù)據(jù)。
通過以上對(duì)包FIFO的讀寫控制,既能夠?qū)σ曨l數(shù)據(jù)幀進(jìn)行緩存,又能夠進(jìn)行異步時(shí)鐘域的處理,從而大大提高了數(shù)據(jù)傳輸?shù)目煽啃浴?/p>
經(jīng)封裝的各路視頻數(shù)據(jù)幀緩存在各路對(duì)應(yīng)的包FIFO中,合并的目的是采用時(shí)分復(fù)用[14]的思想及輪詢機(jī)制,將各路的視頻數(shù)據(jù)幀合并成單路,進(jìn)行相應(yīng)傳輸。狀態(tài)機(jī)[15]具有高效穩(wěn)定的特點(diǎn),能夠?qū)?fù)雜的控制邏輯分解成有限個(gè)穩(wěn)定狀態(tài),因此對(duì)于高速信號(hào)處理十分適用。在本設(shè)計(jì)中,采用三段式狀態(tài)機(jī)實(shí)現(xiàn)合并的功能,并通過參數(shù)來(lái)設(shè)置合并的路數(shù),其結(jié)構(gòu)原理圖如圖3所示。
圖3 多路合并實(shí)現(xiàn)原理
初始狀態(tài)通過循環(huán)對(duì)各路包FIFO的empty進(jìn)行檢測(cè),若檢測(cè)到empty信號(hào)為0,說(shuō)明該路包FIFO中至少有一幀數(shù)據(jù),則暫存對(duì)應(yīng)的序列號(hào),并跳轉(zhuǎn)至下一狀態(tài)。向?qū)?yīng)包FIFO中的異步FIFO發(fā)出有效的讀使能信號(hào),讀取視頻數(shù)據(jù)幀的塊地址、數(shù)據(jù)幀長(zhǎng)度及參數(shù),完成該狀態(tài)之后,跳轉(zhuǎn)至下一狀態(tài)。根據(jù)視頻數(shù)據(jù)幀的長(zhǎng)度信息,向包FIFO中的RAM發(fā)出有效的讀使能及讀地址信號(hào),將塊地址與讀地址進(jìn)行位合并,作為RAM讀地址,讀取暫存其中的視頻數(shù)據(jù)幀,并輸入下一級(jí)的包FIFO中。讀取完成之后,向下一級(jí)包FIFO給出完成信號(hào),同時(shí)將序列號(hào)加1跳轉(zhuǎn)至empty信號(hào)檢測(cè)狀態(tài),繼續(xù)執(zhí)行以上的狀態(tài)。
各路視頻數(shù)據(jù)流的帶寬總和低于千兆以太網(wǎng)的發(fā)送帶寬,輪詢機(jī)制使得各路包FIFO中視頻數(shù)據(jù)能夠有效及時(shí)地發(fā)送出去,包FIFO不會(huì)出現(xiàn)滿狀態(tài),即數(shù)據(jù)不會(huì)存在丟失現(xiàn)象。同時(shí)也不會(huì)產(chǎn)生延時(shí),從而能夠保證高可靠性傳輸。
本實(shí)驗(yàn)通過像素為30 W的2個(gè)攝像頭OV7670采集視頻數(shù)據(jù),將封裝完成之后視頻數(shù)據(jù)流合并成單路,并通過千兆以太網(wǎng)物理芯片發(fā)送出去;接收端對(duì)接收的視頻數(shù)據(jù)幀進(jìn)行解析校驗(yàn),并根據(jù)數(shù)據(jù)幀中的數(shù)據(jù)流號(hào)標(biāo)志傳輸至相應(yīng)的終端系統(tǒng),通過VGA實(shí)時(shí)顯示[16],其硬件電路如圖4所示,經(jīng)接收端解析校驗(yàn)后的單路視頻圖像如圖5所示。
圖4 視頻傳輸?shù)挠布到y(tǒng)
圖5 接收實(shí)時(shí)顯示的圖像
該實(shí)驗(yàn)結(jié)果表明視頻數(shù)據(jù)流在合并的過程中并未丟失,對(duì)視頻圖像顯示的質(zhì)量沒有造成影響。同時(shí),在該系統(tǒng)中,噪聲對(duì)視頻圖像影響較小,相對(duì)于一般道路上的視頻監(jiān)控圖像,清晰度有所改善。
本文基于FPGA實(shí)現(xiàn)了千兆以太網(wǎng)多路視頻合成及傳輸?shù)南到y(tǒng),對(duì)具有異步處理及緩存功能的包FIFO和多路視頻數(shù)據(jù)幀合成單路傳輸?shù)膶?shí)現(xiàn)進(jìn)行了詳細(xì)的闡述及分析,并通過實(shí)驗(yàn)結(jié)果很好地論證了系統(tǒng)的性能。多路視頻合成及傳輸方法在視頻傳輸系統(tǒng)中的應(yīng)用,不僅提高視頻圖像傳輸?shù)目煽啃?,而且?duì)視頻傳輸?shù)男室灿泻艽蟮奶岣摺T摲椒ㄌ岣吡水a(chǎn)品的質(zhì)量,同時(shí)降低了產(chǎn)品設(shè)計(jì)和維護(hù)成本,對(duì)多種視頻傳輸和監(jiān)控系統(tǒng)等更多領(lǐng)域的應(yīng)用與研究具有重要意義。
[1] 黃凱奇,陳曉棠,康運(yùn)鋒,等.智能視頻監(jiān)控技術(shù)綜述[J].計(jì)算機(jī)學(xué)報(bào),2015,38(6):1093-1118.
[2] 邵應(yīng)昭,任愛鋒,初秀琴.基于FPGA的視頻監(jiān)控系統(tǒng)[J].電子技術(shù)應(yīng)用,2008,34(5):20-22.
[3] 張龍濱,黎福海.一種基于FPGA的實(shí)時(shí)視頻采集與遠(yuǎn)程傳輸系統(tǒng)[J].電視技術(shù),2011,35(17):45-47.
[4] 馮永茂,徐秀知,陳 宇,等.基于快速以太網(wǎng)物理層的實(shí)時(shí)高速數(shù)字視頻傳輸[J].電子器件,2007,30(1):144-147,151.
[5] 柳虔林,趙東風(fēng),丁洪偉,等.輪詢系統(tǒng)的演進(jìn)及發(fā)展[J].無(wú)線電通信技術(shù),2013,39(2):55-59.
[6] 楊利娟,陳多觀.循環(huán)冗余校驗(yàn)CRC的分析及硬件實(shí)現(xiàn)[J].蘇州科技學(xué)院學(xué)報(bào):自然科學(xué)版,2010,27(4):51-53.
[7] 王立瑩,王俊芳,曹 琨,等.VLAN及在千兆以太網(wǎng)MAC中的實(shí)現(xiàn)[J].無(wú)線電工程,2013,43(1): 1-3.
[8] 李前進(jìn),張 熙,王寅龍,等.基于直接線性變換法的視頻圖像解析[J].無(wú)線電工程,2013,43(3): 47-50.
[9] 韋 宏,付友濤,孔凡鵬,等.基于FPGA的千兆以太網(wǎng)設(shè)計(jì)[J].現(xiàn)代電子技術(shù),2012,35(18):56-59.
[10]王曉婷.跨時(shí)鐘域設(shè)計(jì)方法研究[D].西安:西安電子科技大學(xué),2012.
[11]黃忠朝,趙于前.一種實(shí)現(xiàn)高速異步FIFO的FPGA方法[J].計(jì)算機(jī)工程與應(yīng)用,2010,46(3):13-15.
[12]向厚振,張志杰,王 鵬.基于FPGA視頻和圖像處理系統(tǒng)的FIFO緩存技術(shù)[J].電視技術(shù),2012,36(9):41-43.
[13]孫培燕,李克儉,蔡啟仲,等.FPGA數(shù)據(jù)總線寬度不相等的雙口RAM的設(shè)計(jì)[J].科學(xué)技術(shù)與工程,2014,14(35):249-253.
[14]孔繁青.時(shí)分復(fù)用設(shè)備動(dòng)態(tài)幀結(jié)構(gòu)技術(shù)研究[J].無(wú)線電通信技術(shù),2005,31(4):12-14.
[15]孔 昕,吳武臣,侯立剛,等.基于Verilog的有限狀態(tài)機(jī)設(shè)計(jì)與優(yōu)化[J].微電子學(xué)與計(jì)算機(jī),2010,27(2):180-183.
[16]魏曉輝.基于FPGA的實(shí)時(shí)視頻圖像采集與VGA顯示系統(tǒng)設(shè)計(jì)研究[D].西安:西安電子科技大學(xué),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].無(wú)線電通信技術(shù),2017,43(1):44-46.
2016-09-23
國(guó)家自然科學(xué)基金項(xiàng)目(61401004)
王康景(1992—),男,本科,主要研究方向:通信工程。陳衛(wèi)松(1973—),男,博士,副教授,主要研究方向:視頻及音頻信號(hào)處理。
TP393
A
1003-3114(2017)01-44-3