當(dāng)然,UDP協(xié)議與IP協(xié)議在實(shí)現(xiàn)時(shí)也有不同的地方,主要體現(xiàn)在校驗(yàn)和的計(jì)算方法上。UDP協(xié)議的校驗(yàn)和是將首部和數(shù)據(jù)一起校驗(yàn),而且這個(gè)首部不僅是8 Byte的UDP首部,還包括12Byte的偽首部。在UDP層計(jì)算校驗(yàn)和還用到了IP層的地址,但這違背了網(wǎng)絡(luò)分層模型的理念。IP協(xié)議的校驗(yàn)和只計(jì)算IP數(shù)據(jù)包的頭部,一般情況下只有固定的20 Byte。
2.3 應(yīng)用層協(xié)議處理
不同通道采集的數(shù)據(jù)按照規(guī)定的數(shù)據(jù)包長(zhǎng)度進(jìn)行打包,然后再發(fā)送到上面的以太網(wǎng)控制模塊,需要專門的模塊進(jìn)行組織和調(diào)度,并添加對(duì)應(yīng)通道的標(biāo)簽。同時(shí),網(wǎng)絡(luò)中也不只是設(shè)備到上位機(jī)方向的采集數(shù)據(jù)包,也有反方向的用于控制的命令包:首先要考慮的問題是設(shè)備從何時(shí)開始采集數(shù)據(jù),何時(shí)停止采集,這都是要上位機(jī)發(fā)送命令來控制的;其次,對(duì)于丟失包的統(tǒng)計(jì)與處理,這一部分工作稍微有些困難,但無(wú)論是設(shè)備和上位機(jī)都可以完成,顯然交給上位機(jī)處理比較適宜,然后上位機(jī)向設(shè)備發(fā)送帶丟失包序號(hào)的短數(shù)據(jù)包,設(shè)備優(yōu)先從DDR2緩存中找到該丟失的數(shù)據(jù)包,發(fā)往上位機(jī)。
系統(tǒng)中完成這些功能的模塊相當(dāng)于一個(gè)位于UDP/IP層之上的應(yīng)用層協(xié)議,而這個(gè)協(xié)議的內(nèi)容是由系統(tǒng)設(shè)計(jì)者所規(guī)定的,但必須為FPGA開發(fā)人員和上位機(jī)軟件程序開發(fā)人員所共享,這樣在不同機(jī)器上的對(duì)應(yīng)層就有了一個(gè)可以互相通信的對(duì)等體(Peer)。這樣制定應(yīng)用層協(xié)議,不但增加了系統(tǒng)相關(guān)功能的保密性,還可以由開發(fā)人員自行裁剪應(yīng)用層功能,靈活地協(xié)調(diào)軟硬件應(yīng)該負(fù)責(zé)的細(xì)節(jié),最后敲定最簡(jiǎn)潔的實(shí)現(xiàn)方案。
3 上位機(jī)軟件的功能
由于本系統(tǒng)的硬件部分實(shí)現(xiàn)了UDP/IP協(xié)議棧的內(nèi)容,上位機(jī)軟件在開發(fā)時(shí)有了較多可利用的系統(tǒng)調(diào)用,主要是Socket(套接字)原語(yǔ)的使用。相對(duì)于硬件開發(fā)來說,軟件開發(fā)方便實(shí)現(xiàn)一些復(fù)雜的功能和計(jì)算,所以在系統(tǒng)構(gòu)想之初就刻意將一些較難實(shí)現(xiàn)的部分交由上位機(jī)軟件來處理,主要是圖像幀間隔的識(shí)別和重傳包的統(tǒng)計(jì)。