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