基于千兆網(wǎng)的FPGA多通道數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)
3上位機(jī)軟件的功能
本文引用地址:http://2s4d.com/article/277032.htm由于本系統(tǒng)的硬件部分實(shí)現(xiàn)了UDP/IP協(xié)議棧的內(nèi)容,上位機(jī)軟件在開發(fā)時(shí)有了較多可利用的系統(tǒng)調(diào)用,主要是Socket(套接字)原語的使用。相對于硬件開發(fā)來說,軟件開發(fā)方便實(shí)現(xiàn)一些復(fù)雜的功能和計(jì)算,所以在系統(tǒng)構(gòu)想之初就刻意將一些較難實(shí)現(xiàn)的部分交由上位機(jī)軟件來處理,主要是圖像幀間隔的識別和重傳包的統(tǒng)計(jì)。
關(guān)于數(shù)據(jù)包重傳,硬件設(shè)備在傳送各個(gè)通道的圖像時(shí),只選取一個(gè)合適的點(diǎn)開始采集圖像,而不負(fù)責(zé)在數(shù)據(jù)包中添加圖像幀的開始和結(jié)束等信息,因?yàn)檫@樣不僅偏離了多通道圖像和數(shù)據(jù)兼容的初衷,而且給FPGA程序的實(shí)現(xiàn)增加了困難,尤其是采集的數(shù)據(jù)要進(jìn)出DDR2 SDRAM緩存,如果在這些純數(shù)據(jù)中添加額外的標(biāo)志數(shù)據(jù),可能會打亂整個(gè)緩存區(qū)的布局。所以上位機(jī)只能根據(jù)接收的數(shù)據(jù)量來判斷各個(gè)圖像幀之間的間隔,然后無論顯示或存儲,都以幀為單位進(jìn)行。
4系統(tǒng)設(shè)計(jì)注意事項(xiàng)
4.1 ARP包的響應(yīng)與抑制
上位機(jī)在向設(shè)備發(fā)送UDP數(shù)據(jù)包之前,可能會先發(fā)送一個(gè)ARP包,請求設(shè)備的MAC地址。所以在FPGA程序中要能響應(yīng)該數(shù)據(jù)包,并發(fā)送ARP回復(fù),否則設(shè)備與上位機(jī)將不能通信。得到設(shè)備的MAC地址后,上位機(jī)會暫時(shí)將其保存,建立一個(gè)ARP表項(xiàng);一段時(shí)間后,ARP表老化,會再次向設(shè)備發(fā)送ARP請求。
為了能正確響應(yīng)ARP請求和回復(fù),必須要清楚ARP數(shù)據(jù)包的格式。如圖5所示,如果以太網(wǎng)幀“幀類型”區(qū)域的值為0x0806,則表示該幀后面的數(shù)據(jù)填充為一個(gè)ARP包。至于是ARP請求還是ARP回復(fù),需要根據(jù)ARP首部的操作碼來辨別:操作碼為0x0001,則是ARP請求包;操作碼為0x0002,則是ARP回復(fù)包。ARP請求包填入一個(gè)廣播幀并發(fā)向網(wǎng)絡(luò)中的所有主機(jī),所以其以太網(wǎng)目的地址為廣播幀地址0xffffffffffff,并且由于它的目標(biāo)是請求目的主機(jī)的MAC地址,故圖中“接收方MAC地址”區(qū)域沒有確切值,可為任意6 Byte的填充;ARP回復(fù)包已經(jīng)得到了所需的MAC地址,但是要注意,此時(shí)的發(fā)送方和接收方已經(jīng)對調(diào),相應(yīng)區(qū)域的填寫也應(yīng)適當(dāng)改變。
圖4 用戶數(shù)據(jù)打包/解包示意圖
以太網(wǎng)協(xié)議規(guī)定的最短幀長為64Byte,這就要求其數(shù)據(jù)填充至少為46 Byte,如圖4所示,而圖5中的ARP字段共有28 Byte,所以無論是ARP請求還是回復(fù),均應(yīng)有18 Byte的填充數(shù)據(jù)。有些PC機(jī)會發(fā)送其他設(shè)備的ARP請求,即使此時(shí)只有一根直連線將設(shè)備與上位機(jī)相連。這時(shí)設(shè)備是不能響應(yīng)該請求的,應(yīng)當(dāng)在MAC層和IP層之間就將這樣的請求屏蔽,防止干擾正常的數(shù)據(jù)包傳輸。
圖5 ARP包格式
4.2 Jumbo幀的利弊
以太網(wǎng)標(biāo)準(zhǔn)規(guī)定的最大幀長度為1 518 Byte,這包括IP層和UDP層添加的首部,一般發(fā)送的數(shù)據(jù)包也都應(yīng)該限制在這一范圍內(nèi)。但千兆以太網(wǎng)有一種廠商標(biāo)準(zhǔn)的超長幀格式,目前還沒有獲得IEEE標(biāo)準(zhǔn)委員會的認(rèn)可,它規(guī)定的幀格式與普通以太網(wǎng)幀相同,只是其數(shù)據(jù)填充區(qū)域可以突破原有限制,整個(gè)幀長度為9 000~64 000 Byte不等,即Jumbo巨型幀。
在本系統(tǒng)中采用Jumbo幀的好處:(1)可以適當(dāng)提高網(wǎng)絡(luò)帶寬的利用率。這主要靠節(jié)省各層首部的添加得到。(2)減少操作系統(tǒng)因頻繁響應(yīng)網(wǎng)絡(luò)設(shè)備的中斷而帶來的CPU資源的過多占用。這可以說是采用Jumbo幀的主要原因,因?yàn)橐幚砬д滓蕴W(wǎng)較高的數(shù)據(jù)率,無論上位機(jī)軟件如何優(yōu)化,CPU的占用仍然很高,這時(shí)如果能減少其他地方的CPU開銷,將大幅增加軟件的處理能力。
但Jumbo幀在使用時(shí)也有一些不利的地方。首先,目前很多PC機(jī)的網(wǎng)絡(luò)適配器不支持Jumbo幀的傳輸,雖然Altera的以太網(wǎng)控制器IP核支持,但這不足以使兩個(gè)設(shè)備進(jìn)行通信;其次,Jumbo幀會長時(shí)間占用網(wǎng)絡(luò)通道,這會影響那些對數(shù)據(jù)延遲敏感的設(shè)備和應(yīng)用;第三,Jumbo幀的丟包意味著嚴(yán)重的災(zāi)難,一幀相當(dāng)于十多個(gè)正常幀,這會將處理能力弱的PC機(jī)迅速引入重傳的陷阱,丟包越來越多,直到網(wǎng)絡(luò)帶寬被全部占用,導(dǎo)致上位機(jī)軟件崩潰。所以在考慮支持Jumbo幀之前,應(yīng)先充分權(quán)衡這些優(yōu)勢與不足。
5結(jié)束語
系統(tǒng)硬件設(shè)備與上位機(jī)軟件配合工作,可以較好地完成雙路彩色PAL制數(shù)據(jù)流的采集任務(wù)。通過實(shí)際測試與分析,采用Jumbo幀進(jìn)行傳輸,有效地減少了軟件運(yùn)行過程中的系統(tǒng)中斷數(shù),從而最大限度地降低了CPU的占用。利用搭建起來的千兆以太網(wǎng)運(yùn)行環(huán)境,可以擴(kuò)展類似的高速數(shù)據(jù)傳輸應(yīng)用。
fpga相關(guān)文章:fpga是什么
評論