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