1 概述
GigE Vision是一個比較復雜的協(xié)議,要在FPGA中完全實現(xiàn)具有較大的難度。如果FPGA作為接收端希望實現(xiàn)GigE Vision相機的配置和圖像采集功能,則只需要實現(xiàn)其中小部分功能即可。本文對原有GigE Vision協(xié)議的結(jié)構(gòu)進行了裁剪,僅保留設(shè)備搜索、寄存器配置和圖像采集三個主要功能。并在FPGA中成功實現(xiàn)了對Basler GIGE相機的配置和圖像實時采集。
2 GigE Vision協(xié)議
GigE Vision協(xié)議包含GVCP(GigE Vision Control Protocol)和GVSP(GigE Vision Streaming Protocol)兩部分。其中,GVCP負責對相機進行配置,GVSP負責控制圖像數(shù)據(jù)的傳輸。
2.1 GVCP協(xié)議
GVCP協(xié)議規(guī)定了應(yīng)用程序通過以太網(wǎng)配置和控制外部設(shè)備的準則,設(shè)備的配置過程采用了指令(CMD)和應(yīng)答(ACK)的方式。以外部主機和相機為例,首先,主機通過以太網(wǎng)向相機發(fā)送指令包,然后等待相機返回當前指令的應(yīng)答包;相機接收到指令包后執(zhí)行相應(yīng)的操作,而后向主機返回應(yīng)答包。主機收到應(yīng)答包后,根據(jù)應(yīng)答包中的狀態(tài)信息判斷指令是否執(zhí)行成功,若執(zhí)行成功則繼續(xù)發(fā)送下一個指令包,否則重新發(fā)送當前指令包。該方式彌補了UDP協(xié)議面向無連接的缺點,保證了數(shù)據(jù)傳輸?shù)耐暾院涂煽啃浴?/p>
GVCP包含兩種格式的數(shù)據(jù)包:指令包和應(yīng)答包,指令包首部為:
在指令包首部中,0x42為GVCP指令包的固定字段,flag字段包含了不同指令的特定信息,command字段代表指令的類型,length字段代表指令包中除首部外,載荷數(shù)據(jù)的長度(單位:字節(jié)),req_id代表指令包的序號。
應(yīng)答包首部為:
在應(yīng)答包首部中,status字段代表指令包的執(zhí)行狀態(tài),acknowledge字段代表應(yīng)答包的類型,length字段代表應(yīng)答包中除首部外,載荷數(shù)據(jù)的長度(單位:字節(jié)),ack_id代表應(yīng)答包的序號。
設(shè)計中使用了兩種指令包:設(shè)備搜索(DISCOVERY)和寫寄存器(WRITEREG)。
2.1.1 設(shè)備搜索(DISCOVERY)
設(shè)備搜索指令用于接收端(FPGA)尋找所在的子網(wǎng)中的GIGE發(fā)送設(shè)備(相機)。通過搜索指令DISCOVERY_CMD實現(xiàn)。
搜索指令包格式:
設(shè)計中的搜索指令包格式為:
對應(yīng)的搜索應(yīng)答包DISCOVERY_ACK為格式:
在搜索應(yīng)答包中,包含了相機的各個主要參數(shù),包括相機的生產(chǎn)商、版本、名稱、序列號、IP地址、MAC地址等信息,載荷數(shù)據(jù)的長度為248字節(jié)。設(shè)計中所關(guān)心的是相機的IP地址和MAC地址信息,其中MAC地址位于載荷數(shù)據(jù)的第11~16字節(jié)部分,IP地址位于第37~40字節(jié)部分。
2.1.2 寫寄存器(WRITEREG)
寫寄存器指令用于配置相機的參數(shù),通過WRITEREG_CMD指令實現(xiàn)。
寫寄存器指令包格式:
在寫寄存器指令包中,register_address字段代表32位的寄存器地址,register_data字段代表所要寫入的32位寄存器值。在設(shè)計中,每次只配置一個寄存器,因此只包含一個register_address和register_data字段。
因此,設(shè)計中的寫寄存器包格式如下:
對應(yīng)的寫寄存器應(yīng)答包WRITEREG_ACK格式:
在應(yīng)答包中,status字段的值為0x0000,代表寫寄存器指令執(zhí)行成功,index字段代表配置成功的寄存器個數(shù),對于每次配置1個寄存器而言,該字段的值為0x0001。
因此,設(shè)計中的寫寄存器應(yīng)答包格式如下:
2.2 GVSP協(xié)議
GVSP協(xié)議規(guī)定了GVSP發(fā)送方向GVSP接收方傳輸圖像數(shù)據(jù)和圖像信息的一系列準則。GVSP協(xié)議以數(shù)據(jù)塊(Data Block)為單位進行數(shù)據(jù)傳輸,通常使用標準傳輸模式。該模式包含3種格式的數(shù)據(jù)包:頭數(shù)據(jù)包(Data Leader Packet)、載荷數(shù)據(jù)包(Data Payload Packet)和尾數(shù)據(jù)包(Data Trailer Packet),頭數(shù)據(jù)包和尾數(shù)據(jù)包作為每個數(shù)據(jù)塊的首尾界定,不包含圖像數(shù)據(jù);載荷數(shù)據(jù)包則作為數(shù)據(jù)塊中數(shù)據(jù)的傳輸載體,包含了有效的圖像數(shù)據(jù)。
3種數(shù)據(jù)包具有相同的GVSP首部,格式如下:
在GVSP首部中,status字段代表數(shù)據(jù)包的狀態(tài),block_id代表數(shù)據(jù)塊的序號,packet_id代表當前數(shù)據(jù)塊中數(shù)據(jù)包的序號(頭數(shù)據(jù)包的packet_id總為0),packet_format字段代表數(shù)據(jù)包的類型(頭數(shù)據(jù)包、載荷數(shù)據(jù)包、尾數(shù)據(jù)包)。EI字段代表擴展block_id和packet_id的標志位,當EI=0時,block_id為16bit,packet_id為24bit,此時的首部長度為8字節(jié);當EI=1時,block_id為64bit,packet_id為32bit,此時的首部長度為20字節(jié)。
設(shè)計中不對頭數(shù)據(jù)包和尾數(shù)據(jù)包進行處理,僅根據(jù)packet_format字段從數(shù)據(jù)流中提取包含圖像數(shù)據(jù)的載荷數(shù)據(jù)包,并由EI位判斷首部的長度,準確剝除載荷數(shù)據(jù)包的首部后,便可得到有效的圖像數(shù)據(jù)。為了保證圖像傳輸?shù)膶崟r性,不對status字段進行判斷,對于傳輸錯誤的圖像數(shù)據(jù)仍作為有效數(shù)據(jù)輸出。
3 UDP IP協(xié)議
GigE Vision是基于UDP協(xié)議進行數(shù)據(jù)傳輸?shù)摹R虼耍獙崿F(xiàn)FPGA與相機間的GVCP和GVSP通信,還需要設(shè)計網(wǎng)絡(luò)通信協(xié)議。按照GigE Vision協(xié)議的要求,需要設(shè)計的網(wǎng)絡(luò)協(xié)議還是比較多的。從FPGA與相機之間實現(xiàn)點對點數(shù)據(jù)傳輸?shù)慕嵌瘸霭l(fā),只要實現(xiàn)基本的UDP 、IP和MAC三種協(xié)議即可。由于相機可以設(shè)置為固定IP地址,而且相機的IP地址和MAC地址都可以通過FPGA發(fā)送DISCOVERY指令獲取。所以ARP協(xié)議可以不在FPGA中實現(xiàn)。
對于UDP和IP協(xié)議,只需要實現(xiàn)UDP和IP首部的添加和移除功能,其他功能可以不做。MAC協(xié)議在FPGA廠商的開發(fā)環(huán)境中均提供了IP。當然自己也可以設(shè)計一個MAC,只需要實現(xiàn)基本的MAC首部移除、添加以及CRC32校驗功能即可。
4 FPGA工作流程
從相機的配置到圖像的采集整個流程為:
可分為5個步驟,具體過程如下:
(1)FPGA向其所屬子網(wǎng)發(fā)送UDP廣播包搜尋所連接的相機。GVCP的UDP端口號為3956,除此之外,F(xiàn)PGA和相機的IP地址必須屬于同一個子網(wǎng)段,否則相機將無法應(yīng)答搜索包。
(2)FPGA等待相機返回應(yīng)答包,并從中提取相機的IP地址和MAC地址,作為發(fā)送數(shù)據(jù)包的IP首部和MAC首部中的目的地址。
(3)FPGA發(fā)送寫寄存器指令包,依次配置相機的各功能寄存器,對其工作參數(shù)進行設(shè)置。
(4)FPGA發(fā)送寫采集使能寄存器指令包,觸發(fā)相機進行圖像采集和傳輸。
(5)FPGA從相機接收GVSP數(shù)據(jù)包,從中提取出有效的圖像數(shù)據(jù)。
原文鏈接:
https://gitcode.csdn.net/66c6dc510bfad230b8ae756b.html
-
FPGA
+關(guān)注
關(guān)注
1629文章
21754瀏覽量
604230 -
圖像采集
+關(guān)注
關(guān)注
2文章
301瀏覽量
41295 -
相機
+關(guān)注
關(guān)注
4文章
1358瀏覽量
53705 -
Vision
+關(guān)注
關(guān)注
1文章
199瀏覽量
18210
原文標題:基于FPGA的GigE Vision相機圖像采集方案設(shè)計
文章出處:【微信號:gh_9d70b445f494,微信公眾號:FPGA設(shè)計論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論