文/劉睿 姚勇
當(dāng)前GigE協(xié)議主要是作為一種基于UDP協(xié)議的傳輸標(biāo)準(zhǔn)向PC機(jī)傳輸圖像,它由GVSP協(xié)議和GVCP協(xié)議兩大協(xié)議構(gòu)成,它們的作用分別是傳輸數(shù)據(jù)流和獲取控制指令等信息。為了使該協(xié)議的圖像傳輸系統(tǒng)在局域網(wǎng)內(nèi)定點(diǎn)傳輸,本文設(shè)計(jì)和實(shí)現(xiàn)了網(wǎng)絡(luò)報(bào)文解析電路,使設(shè)備可以獲取主機(jī)的物理地址,申請本地IP地址,解析出GVCP報(bào)文以及為上位機(jī)提供PING服務(wù)。本文的設(shè)計(jì)在硬件FPGA(EP4CE15F22C8N)、千兆網(wǎng)口(RTL8211EG)和軟件小兵以太網(wǎng)測試儀、WIRESHARK抓包軟件、以及SIGNALTAP環(huán)境中通過了測試。
根據(jù)UDP協(xié)議,已知目的主機(jī)IP地址,數(shù)據(jù)流要能在局域網(wǎng)內(nèi)傳輸,還必須獲取目的主機(jī)的物理地址,并且向服務(wù)器申請本地IP地址;而本地的物理地址可以在調(diào)用三速以太網(wǎng)MAC ip核時(shí),通過接口配置本地物理地址。要實(shí)現(xiàn)以上功能必須用到ARP、DHCP以及ICMP協(xié)議。數(shù)據(jù)流中的其它協(xié)議頭信息則通過GVCP報(bào)文解析模塊從GVCP報(bào)文中提取后配置,gvsp數(shù)據(jù)流報(bào)文的信息要素來源示意圖,如圖1所示。
圖1:gvsp 數(shù)據(jù)流報(bào)文的信息要素來源示意圖
ARP與IP是搭載以太網(wǎng)幀的鏈路層協(xié)議;ICMP與UDP是基于IP的協(xié)議。而GVCP和DHCP是基于UDP的協(xié)議。以上三組協(xié)議在層次上是平行關(guān)系,可用代號區(qū)分。根據(jù)以上分析得出協(xié)議層次的框架,如圖2所示。
圖2:GigE協(xié)議網(wǎng)絡(luò)模塊層次
圖3:ARP請求、應(yīng)答、確認(rèn)報(bào)文通信過程
圖4:DHCP協(xié)議報(bào)文通信過程
圖5:FPGA獲取物理地址和本地IP地址
本模塊接收MAC ip核的數(shù)據(jù),報(bào)文必須與本地物理地址匹配或者是廣播報(bào)文才有效,ARP或IP報(bào)文根據(jù)協(xié)議代號區(qū)分,打上包頭包尾標(biāo)識傳至下游模塊。
ARP是根據(jù)IP地址獲取物理地址的協(xié)議。首先本模塊發(fā)送包含IP地址的ARP請求廣播報(bào)文到網(wǎng)絡(luò)上的所有主機(jī),等待接收應(yīng)答報(bào)文。含有該IP地址的主機(jī)在接收到請求報(bào)文后,發(fā)出攜帶著該主機(jī)的物理地址的ARP應(yīng)答報(bào)文,本模塊接收此報(bào)文后提取物理地址,用于配置GVSP數(shù)據(jù)流,并再次發(fā)送一個(gè)單播確認(rèn)報(bào)文。
本模塊區(qū)分ICMP和UDP報(bào)文,同時(shí)檢查以下四項(xiàng)是否符合,如果不符則報(bào)文無效:IP首部格式;目的IP與本機(jī)是否相同;檢查首部檢驗(yàn)和;提取出總長度并核對包文長度是否正確。
選擇實(shí)現(xiàn)ICMP協(xié)議中的Ping命令,用于探測本地設(shè)備是否暢通。
本模塊識別GVCP報(bào)文和DHCP報(bào)文,檢查UDP的校驗(yàn)和;若源端口號為68,目的端口號為67,將報(bào)文送到DHCP解析模塊。
如果端口號不是上述值,去掉UDP首部將其送到下游模塊;提取包文的源端口和目的端口號;檢查檢驗(yàn)和,如果檢驗(yàn)和錯誤。在報(bào)文尾處打上錯誤標(biāo)志。
簡化申請IP地址的流程,分解為以下步驟:首先發(fā)送discovery報(bào)文,等待接收offer報(bào)文,提取IP地址后,向DHCP服務(wù)器發(fā)出request報(bào)文請求使用該IP,DHCP服務(wù)器認(rèn)為可以使用則發(fā)出ack報(bào)文,否則發(fā)出nack報(bào)文。除此之外,根據(jù)工程需要提取出DHCP報(bào)文的子網(wǎng)掩碼、網(wǎng)關(guān)以及租約等信息。
使用小兵以太網(wǎng)測試儀編輯服務(wù)器或上位機(jī)向設(shè)備發(fā)送的報(bào)文,在軟件WIRESHARK上抓取報(bào)文,觀察報(bào)文通信往返情況;用SIGNALTAP查看FPGA對報(bào)文信息的提取。預(yù)先設(shè)定本地物理地址48‘h987654321012,目的IP地址32‘h12345678。
如圖3所示。
如圖4、圖5所示。
針對GigE協(xié)議中圖像在局域網(wǎng)內(nèi)靈活傳輸?shù)膽?yīng)用需求設(shè)計(jì)和實(shí)現(xiàn)了網(wǎng)絡(luò)報(bào)文解析模塊電路,能夠準(zhǔn)確獲取對方主機(jī)的物理地址,并申請本地IP地址。應(yīng)用本文的設(shè)計(jì)可以將圖像數(shù)據(jù)傳輸?shù)椒?wù)器,利用其強(qiáng)大的運(yùn)算能力,得出運(yùn)算結(jié)果返回設(shè)備;并且可以同時(shí)擴(kuò)展多部相機(jī)設(shè)備?;诒静糠蛛娐愤€可以進(jìn)一步設(shè)計(jì)出簡單易用的功能模塊電路IP核,只需輸入圖像數(shù)據(jù),其它協(xié)議信息頭,如UDP協(xié)議或GigE協(xié)議的信息頭由IP核添加,使得圖像在局域網(wǎng)內(nèi)傳輸。