嚴(yán) 飛,劉銀萍,劉文娟,孔劍輝
(1.南京信息工程大學(xué) 信息與控制學(xué)院,江蘇 南京 210044;2.南京信息工程大學(xué) 大氣物理學(xué)院,江蘇 南京 210044)
隨著信息傳輸方式逐漸被視頻取代,視頻圖像信息具有內(nèi)容豐富,直觀方便等特點[1-3]。由于視頻傳輸要求的實時性高、圖像容量大,對傳輸通道的帶寬要求較高,因此傳統(tǒng)的數(shù)據(jù)接口已無法滿足高清視頻傳輸?shù)男枨?。而隨著片上系統(tǒng)的應(yīng)用,F(xiàn)PGA發(fā)揮著越來越重要的作用[4-5]。光纖視頻傳輸[6-8]被廣泛應(yīng)用于道路交通安全、監(jiān)控等方面。因此,在保證數(shù)據(jù)帶寬的同時,利用光纖進行高質(zhì)量的視頻圖像傳輸也顯得尤為重要。
2013年,唐清善等人提出了一種基于FPGA的DVI視頻光纖傳輸方案,在FPGA中實現(xiàn)了RGB和YUV的雙向轉(zhuǎn)換[9]。同年,廖加文針對大容量高清數(shù)字視頻通過電纜實現(xiàn)遠(yuǎn)距離傳輸比較困難的缺點,提出了非壓縮高清數(shù)字視頻光纖傳輸設(shè)計方案[10]。2014年,孫風(fēng)雷等人在研究視頻圖像傳輸技術(shù)的基本原理基礎(chǔ)上,采用一種以FPGA為核心的高清視頻圖像光纖傳輸系統(tǒng),通過HDMI接口輸出高清視頻圖像[11]。與此同時,曾鵬飛采用信源編碼技術(shù),將行、場同步信號以及像素時鐘信號編碼插入到行消隱信號中發(fā)送,解決了需要大容量的外部SDRAM緩存的問題[12]。
綜上所述,本文開展的基于FPGA的光纖視頻傳輸系統(tǒng)設(shè)計,對高清視頻的實時傳輸、信息顯示、工業(yè)生產(chǎn)、安保監(jiān)控等有著重要應(yīng)用前景[13]。
本系統(tǒng)硬件組成如圖1所示,主要包括帶有GTP功能的FPGA、DDR3存儲體、VGA接口、攝像頭接口和常用通訊接口等[14-15]。GTP參考時鐘為148.5 MHz,鏈路時鐘取其20倍。VGA接口采用ADI公司的ADV7123芯片,內(nèi)含3路10位D/A轉(zhuǎn)換器,對輸入的RGB數(shù)字信號進行模擬轉(zhuǎn)換并輸出VGA視頻信號,最高支持1 080 p@60 Hz輸出。
圖1 系統(tǒng)硬件框圖
光纖視頻傳輸系統(tǒng)程序框圖如圖2所示,主要有攝像頭選擇模塊,寄存器配置模塊,圖像采集模塊,DDR讀寫模塊,GTP數(shù)據(jù)發(fā)送收集模塊,VGA顯示模塊等組成,這些構(gòu)成了一個完整的光纖視頻傳輸體系。
視頻圖像從攝像頭傳入FPGA后,圖像先轉(zhuǎn)換成16位的數(shù)據(jù)寬度,再存入到一個16位進32位出的FIFO中。當(dāng)FIFO中的數(shù)據(jù)達(dá)到1行視頻數(shù)據(jù)時,從FIFO 中取出數(shù)據(jù)后使用GTP的IP發(fā)送給外部的光模塊1,光模1把電信號轉(zhuǎn)換成光信號通過光纖傳輸?shù)焦饽K2,光模塊2又把光信號轉(zhuǎn)換成電信號輸入到FPGA的GTP接收,GTP接收到的數(shù)據(jù)需要做一個32位數(shù)據(jù)對齊之后,并解析出視頻圖像部分的數(shù)據(jù),再把數(shù)據(jù)存入到32位進8位出的FIFO中。后面就是把圖像傳到DDR的緩存中,在DDR中經(jīng)過幀緩存后,通過VGA接口在顯示器上顯示。
圖2 光纖視頻傳輸系統(tǒng)程序框圖
攝像頭采用OV5640,該芯片有上電時序的要求,在FPGA上電后等待一段時間,再使能配置OV5640寄存器,從而來滿足OV5640這個時序的要求。OV5640的寄存器配置的程序在FPGA啟動后調(diào)用I2C的通信程序?qū)V5640芯片的寄存器的進行參數(shù)設(shè)置, OV5640芯片輸出為RGB565格式1280×720像素的圖像。攝像頭圖像采集程序?qū)腛V5640模組傳來的8位圖像轉(zhuǎn)化為16位數(shù)據(jù)寬度產(chǎn)生 FIFO 的寫信號。因為攝像頭RGB565格式輸出時,一個像數(shù)需要16位的數(shù)據(jù)(紅5位,綠色6位,藍(lán)色5位),需要分兩8 bit輸出,這樣占2個時鐘。所以如果是720 P的圖像,一行數(shù)據(jù)需要有1 280×2個PCLK時鐘。
圖3 單板攝像頭視頻采集與顯示框圖
在利用光纖傳輸之前,首先要驗證單板的視頻顯示程序,即從攝像頭采集圖像到VGA顯示的整個數(shù)據(jù)通道的順暢,如圖3所示。在存儲采集的視頻圖像到DDR之前或者從DDR讀出視頻圖像到VGA顯示模塊的時候,需要緩存數(shù)據(jù)。所以在FIFO控制模塊里實例化了兩個FIFO,一個數(shù)據(jù)寫FIFO,用來緩存從攝像頭采集的數(shù)據(jù);一個數(shù)據(jù)讀FIFO,用來存儲從DDR讀出的數(shù)據(jù)。本實驗中,向 DDR 寫入的數(shù)據(jù)首先存放在寫 FIFO中,從DDR中讀出的數(shù)據(jù)首先存放在讀FIFO中。
Xilinx公司的ARTIX-7系列FPGA(XC7A 100TFGG484)集成了四路GTP串行高速收發(fā)器,每通道的收發(fā)速度為500 Mbit·s-1~6.6 Gbit·s-1之間,本系統(tǒng)采用2.97 Gbit·s-1,經(jīng)計算單路GTP收發(fā)器滿足1 080 P高清視頻的傳輸。
攝像頭采集數(shù)據(jù)后,將接收到的視頻圖像存放到16位進,32位出的FIFO中,通過一個狀態(tài)機來發(fā)送視頻圖像的數(shù)據(jù)。首先一幀圖像開始傳輸前,GTP會發(fā)送幀同步信號;再判斷這個FIFO中的數(shù)據(jù)量,如果FIFO內(nèi)的數(shù)據(jù)還沒有一行的視頻數(shù)據(jù),GTP則發(fā)送無用的數(shù)據(jù),當(dāng)FIFO內(nèi)已經(jīng)有一行視頻的數(shù)據(jù)時,GTP會先發(fā)送行同步信號;然后再把這一行視頻的數(shù)據(jù)通過GTP發(fā)送出去。一行數(shù)據(jù)發(fā)送完成,再重新判斷FIFO內(nèi)的數(shù)據(jù)量,F(xiàn)IFO數(shù)據(jù)量達(dá)到一行視頻數(shù)據(jù)時,接著發(fā)送第二行視頻圖像。GTP數(shù)據(jù)發(fā)送一幀圖像的流程如圖4所示。
圖4 一幀圖像數(shù)據(jù)通過GTP發(fā)送的流程
所有的GTP發(fā)送的數(shù)據(jù)位數(shù)為32位,幀同步信號、行同步信號、無用數(shù)據(jù)定義如表1所示。
表1 GTP發(fā)送的數(shù)據(jù)定義
這些同步信號和無用數(shù)據(jù)的高24位數(shù)據(jù)是用戶自己定義的,低8位"BC"是K28.5碼控制字符。向GTP發(fā)送K28.5碼控制字符時,需要拉高發(fā)送端控制信號的對應(yīng)位,標(biāo)示發(fā)送數(shù)據(jù)里的某個字節(jié)位為K碼控制字。所以這里在向GTP發(fā)送同步信號和無用數(shù)據(jù)的時候,發(fā)送端控制信號信號設(shè)置為0001,發(fā)送視頻數(shù)據(jù)的時候則置為0000。
GTP 收發(fā)器外部用戶數(shù)據(jù)接口的寬度為32位,內(nèi)部數(shù)據(jù)寬度為20位(8 B/10 B轉(zhuǎn)換)。在實際測試過程中發(fā)現(xiàn),發(fā)送的32位數(shù)據(jù)會有可能出現(xiàn) 16位的數(shù)據(jù)的移位,就是說發(fā)送的數(shù)據(jù)和接收到的數(shù)據(jù)會有16位的錯位。因為在GTP發(fā)送同步信號和無用數(shù)據(jù)的時候加入了K碼控制字,并且設(shè)置發(fā)送端控制信號為0001, 如果出現(xiàn)16位數(shù)據(jù)移位的情況,接收到的同步信號和無用數(shù)據(jù)時,K 碼控制字也會跟著移位,發(fā)送端控制信號就會變成0100。所以在程序可以通過判斷發(fā)送端控制信號的值來判斷接收到的GTP數(shù)據(jù)是否移位,如果接收到的發(fā)送端控制信號為 0001,跟發(fā)送時一樣,說明數(shù)據(jù)沒有移位;如果接收到的為0100,說明存在數(shù)據(jù)移位,需要重新組合。
接收到的數(shù)據(jù)中只有一部分是視頻圖像的數(shù)據(jù),其它則是幀同步,行同步和無用的數(shù)據(jù),在解碼時需要把視頻圖像的數(shù)據(jù)解析出來存入到一個32位進8位出的FIFO中。程序的一個功能是檢測GTP數(shù)據(jù)中的行同步信號,如果接收到行同步信號,就把后面接收的一行視頻數(shù)據(jù)存放到 FIFO中。程序的另一個功能是恢復(fù)視頻圖像的幀同步信號,如果接收到幀同步信號,則置位視頻圖像的幀信號。另外模塊中會判斷FIFO中存入的視頻數(shù)據(jù),如果FIFO內(nèi)的數(shù)據(jù)量大于一行視頻的數(shù)據(jù),則產(chǎn)生FIFO的讀使能信號,把FIFO的一行視頻數(shù)據(jù)輸出給外部接口模塊。
系統(tǒng)驗證時采用一路OV5640攝像頭,F(xiàn)PGA為XC7A100T-2FGG484I,光模塊采用SFP接口的HYM-P121-LID,光纖長度5 m,采集圖像為攝像頭前端場景,硬件連接如圖5所示。視頻大小為1280×800@60Hz,理論帶寬B1約為1.025 Gbit·s-1,帶寬計算如式(1)
B1=1 280×800×16 bit×60 Hz=1.025 Gbit·s-1
(1)
本系統(tǒng)中的單路串行鏈路帶寬設(shè)置為2.97 Gbit·s-1,可以滿足要求。實驗結(jié)果如圖6所示,表明該系統(tǒng)能夠?qū)z像頭采集到的圖像,通過GTP高速收發(fā)器傳輸后在顯示器上正常顯示,滿足視頻圖像光纖傳輸?shù)囊蟆H魧⒁曨l分辨率提高至1 920×1 080@60 Hz,按照式(2)計算,得其帶寬B2約為1.99 Gbit·s-1,系統(tǒng)也滿足要求
B2=1 920×1 080×16 bit×60 Hz=1.99 Gbit·s-1
(2)
綜上所述,由于GTP高速收發(fā)器的最大帶寬可以達(dá)到6.6 Gbit·s-1,在24位全彩高清1 080 P@60 Hz視頻傳輸領(lǐng)域,該方案均可以滿足。因為是無損傳輸,因此圖像質(zhì)量取決于前端視頻采集的清晰度。
圖5 硬件連接圖
圖6 實驗結(jié)果
本文完成基于FPGA高速收發(fā)器的視頻傳輸系統(tǒng)設(shè)計,采用光纖作為視頻傳輸介質(zhì),將攝像頭采集到的圖像與視頻,利用ARTIX7系列的FPGA進行視頻的緩存、數(shù)據(jù)處理等操作,再通過FPGA的高速收發(fā)器進
行發(fā)送和接收,完成了將接收到的視頻在顯示器上顯示的功能。該系統(tǒng)是利用單板GTP發(fā)送與接收進行測試,其穩(wěn)定性還有待遠(yuǎn)距離的分離實驗來測定。另外,從整個圖像通道的傳輸質(zhì)量和視頻處理兩方面入手,以提高最終圖像的顯示效果。
[1] 范文晶,王召利,王惠娟,等.基于FPGA的無損圖像壓縮算法實現(xiàn)[J].電子科技, 2016, 29(11):126-128.
[2] 常立博,王琨.圖形處理器中圖像處理單元的設(shè)計與實現(xiàn)[J].電子科技,2017,30(2):16-21.
[3] 馬超,章明朝,李佩玥,等.基于FPGA的實時視頻采集預(yù)處理系統(tǒng)設(shè)計[J].半導(dǎo)體光電,2015, 36(3):518-521.
[4] 楊帆,張皓,馬新文,等.基于FPGA的圖像處理系統(tǒng)[J].華中科技大學(xué)學(xué)報:自然科學(xué)版,2015(2):119-123.
[5] 任勇峰,張凱華,程海亮.基于FPGA的高速數(shù)據(jù)采集存儲系統(tǒng)設(shè)計[J].電子器件, 2015(1):135-139.
[6] 李欣,管紹軍,胡曉天.基于FPGA的光纖通信系統(tǒng)的設(shè)計與實現(xiàn)[J].電子設(shè)計工程, 2012,20(8):85-87.
[7] 王亞.基于FPGA的光纖式高速串行同步通信[J].淮海工學(xué)院學(xué)報:自然科學(xué)版, 2016,25(2):24-28.
[8] 沙啟迪.基于FPGA的光纖通信數(shù)據(jù)傳輸技術(shù)研究[D].哈爾濱:哈爾濱工業(yè)大學(xué),2015.
[9] 唐清善,李亞捷,郭麗莉.基于FPGA的DVI/VGA光纖傳輸系統(tǒng)設(shè)計[J].測控技術(shù),2014,33(7):39-42.
[10] 廖加文.基于FPGA的高清視頻光纖傳輸系統(tǒng)的研究與實現(xiàn)[D].西安:西安光學(xué)精密機械研究所,2014.
[11] 孫風(fēng)雷,劉樹昌,劉鵬,等.基于FPGA高清視頻圖像的光纖傳輸系統(tǒng)研究[J].吉林大學(xué)學(xué)報:信息科學(xué)版, 2014,32(2):125-130.
[12] 曾鵬飛.基于FPGA的光纖高清數(shù)字視頻傳輸系統(tǒng)的研究[D].長沙:長沙理工大學(xué),2014.
[13] 潘磊,葛中芹,莊建軍,等.基于FPGA的HDMI視頻流圖像處理的系統(tǒng)設(shè)計[J].實驗室研究與探索,2015,34(10):76-80.
[14] 明庭良,施展,涂寧.基于以太網(wǎng)的自動測試系統(tǒng)設(shè)計[J].電子科技,2017,30(1):126-130.
[15] 那彥,底鵬.音視頻數(shù)據(jù)采集接口電路設(shè)計及實現(xiàn)[J].電子科技,2016,29(9):148-150.