顧青松,艾斯卡爾·艾木都拉,馬博陽,劉兆沛
(1.新疆大學(xué) 信息科學(xué)與工程學(xué)院,烏魯木齊 830000;2.清華大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)系,北京 100084)
機(jī)載網(wǎng)絡(luò)通信系統(tǒng)結(jié)構(gòu)的發(fā)展過程分為4個(gè)階段:分立式航電系統(tǒng)、聯(lián)合式航電系統(tǒng)、綜合模塊化航電系統(tǒng)和分布式集成模塊化航空電子系統(tǒng)(DIMA,distributed)[1]。DIMA通過將硬件資源分成幾個(gè)較小的單元,分布在整個(gè)飛機(jī)上,降低了綜合模塊化航電系統(tǒng)中央處理模塊的尺寸、重量和冷卻要求,并通過安全關(guān)鍵型通信系統(tǒng)連接,提供了更大的靈活性[2]。從航空電子系統(tǒng)和機(jī)載網(wǎng)絡(luò)的發(fā)展過程可以看出,機(jī)載電子系統(tǒng)的數(shù)據(jù)交互需求越來越大,導(dǎo)致網(wǎng)絡(luò)擁堵、線路間干擾和線纜重量等問題越來越嚴(yán)重,傳統(tǒng)的通信網(wǎng)絡(luò)已經(jīng)不能滿足航電系統(tǒng)的需求[3-5]。
時(shí)間觸發(fā)以太網(wǎng)(TTE,time-triggered Ethernet)以太網(wǎng)是一種實(shí)時(shí)通信協(xié)議,它為分布式實(shí)時(shí)系統(tǒng)提供確定性實(shí)時(shí)通信服務(wù),相比于集中式網(wǎng)絡(luò)系統(tǒng)的優(yōu)點(diǎn)在于:成本低,性能高[6]。IEEE標(biāo)準(zhǔn)委員會(huì)于 2002年提出了一種新的高精度時(shí)間同步標(biāo)準(zhǔn),專門針對(duì)測試和測量、工業(yè)自動(dòng)化、軍事系統(tǒng)、制造系統(tǒng)、電力公用系統(tǒng)等應(yīng)用領(lǐng)域測量和控制的需求,其時(shí)鐘同步精度可達(dá)亞微秒級(jí)別[7-9]。國外研究機(jī)構(gòu)和企業(yè)都致力于TTE技術(shù)研究和產(chǎn)品應(yīng)用,但這些核心技術(shù)基本上都掌握在TTTech公司手中,用作轎車、飛機(jī)和航天航空系統(tǒng)中關(guān)鍵的傳輸控制信號(hào)[10]。國內(nèi)對(duì)于時(shí)間觸發(fā)網(wǎng)絡(luò)的相關(guān)技術(shù)研究在各大航天科學(xué)院、研究所、高??蒲许?xiàng)目中仍處于研究探索階段。
本文針對(duì)確定性機(jī)載網(wǎng)絡(luò)通信系統(tǒng)實(shí)時(shí)性強(qiáng)、可靠性高的需求,使用IEEE 1588時(shí)間同步協(xié)議設(shè)計(jì)了一種基于MicroBlaze的TTE終端的實(shí)現(xiàn)方案并進(jìn)行了實(shí)驗(yàn)測試。文章主要分為5個(gè)部分:第一部分介紹了TTE終端設(shè)計(jì)的整體結(jié)構(gòu);第二部分介紹了實(shí)現(xiàn)時(shí)間同步的方法;第三部分介紹了四余度機(jī)制的可靠性設(shè)計(jì);第四部分進(jìn)行測試和驗(yàn)證;第五部分進(jìn)行總結(jié)和展望。
新一代綜合航電系統(tǒng)對(duì)機(jī)載網(wǎng)絡(luò)通信系統(tǒng)的實(shí)時(shí)性、可靠性和確定性等方面的性能需求較高,然而嵌入式系統(tǒng)有內(nèi)核占比小,實(shí)時(shí)性高,專用性能強(qiáng),響應(yīng)快等特點(diǎn),適合實(shí)時(shí)和多任務(wù)體系的要求[11]。在嵌入式系統(tǒng)中使用FPGA內(nèi)部的通用邏輯資源實(shí)現(xiàn)的 MicroBlaze軟核作為嵌入式處理器,外部搭建需要的相關(guān)IP核,可以實(shí)現(xiàn)可編程片上系統(tǒng)的設(shè)計(jì)。
硬件平臺(tái)以MicroBlaze為控制核心,主要由以下幾個(gè)模塊組成:電源模塊、時(shí)鐘模塊、定時(shí)器模塊、串口模塊、千兆以太網(wǎng)子系統(tǒng)通信模塊和片上搭載的外部存儲(chǔ)器DDR3 模塊,其功能如圖1所示。
圖1 硬件功能框圖
光通信功能由千兆以太網(wǎng)子系統(tǒng)通信模塊聯(lián)合光纖收發(fā)器完成,千兆以太網(wǎng)通信模塊在GTP的基礎(chǔ)上封裝以太網(wǎng)協(xié)議,而光纖收發(fā)器作為與外部設(shè)備連接的物理接口,內(nèi)部與GTP模塊相連,實(shí)現(xiàn)硬件平臺(tái)與上位機(jī)的數(shù)據(jù)交互。串口模塊基于Xilinx的UART IP 核完成,在外部使用USB轉(zhuǎn)串口模式與上位機(jī)相連,用于軟件程序debug。定時(shí)器模塊使用Timer IP核,主要用于記錄時(shí)間和實(shí)現(xiàn)定時(shí)器中斷,是完成時(shí)間同步的主要模塊。數(shù)據(jù)緩存模塊使用DDR3 IP核驅(qū)動(dòng)核心板上的外部存儲(chǔ)器DDR3,用于數(shù)據(jù)寫入和讀取。
相比于普通的網(wǎng)絡(luò)接口,使用“光纖接口 + SFP光模塊”設(shè)計(jì)適配性好,抗干擾能力強(qiáng),因此使用此模式實(shí)現(xiàn)硬件系統(tǒng)與上位機(jī)之間的通信。
硬件平臺(tái)與上位機(jī)之間的數(shù)據(jù)交互使用串行千兆介質(zhì)傳輸協(xié)議(SGMII)。光纖收發(fā)器集成了光電轉(zhuǎn)換電路和電光轉(zhuǎn)換電路,可以同時(shí)完成信號(hào)的接收和發(fā)送,避免用獨(dú)立原件搭建電路帶來的困難。SFP光電轉(zhuǎn)換模塊是可熱插拔的小封裝模塊,其體積是傳統(tǒng)的千兆位接口轉(zhuǎn)換器模塊的一半[12]。使用光纖收發(fā)器和SFP光電轉(zhuǎn)換模塊作為光纖通信的基礎(chǔ)硬件,可以提高系統(tǒng)的適配性,保證系統(tǒng)性能。
MicroBlaze軟核處理器通過四路光纖接口與四臺(tái)上位機(jī)通信的功能實(shí)現(xiàn),其系統(tǒng)平臺(tái)如圖2所示。
圖2 四通道網(wǎng)絡(luò)系統(tǒng)平臺(tái)框圖
在硬件平臺(tái)中使用單核MicroBlaze和4個(gè)以太網(wǎng)子系統(tǒng)IP核分別驅(qū)動(dòng)四路SFP光通道,通過千兆 RJ45網(wǎng)線與4個(gè)PC端相連,完成千兆以太網(wǎng)光通信硬件總體設(shè)計(jì)。PC端通過串口與硬件平臺(tái)相連,查看debug數(shù)據(jù)。其中,4個(gè)以太網(wǎng)子系統(tǒng)IP核需要通過配置共享邏輯功能實(shí)現(xiàn)硬件平臺(tái)的開發(fā)[13]。
時(shí)間同步是時(shí)間觸發(fā)通信的基礎(chǔ)。對(duì)于時(shí)間觸發(fā)網(wǎng)絡(luò),包含時(shí)間觸發(fā)網(wǎng)絡(luò)控制器、以太網(wǎng)控制器、TTE交換機(jī)和TTE交換機(jī)終端設(shè)備。TTE交換機(jī)終端與TTE交換機(jī)上的不同端口相接用做數(shù)據(jù)備份。
時(shí)間同步網(wǎng)絡(luò)系統(tǒng)是在四光口網(wǎng)絡(luò)基礎(chǔ)上加入了時(shí)間同步機(jī)制,系統(tǒng)框圖與四光口系統(tǒng)結(jié)構(gòu)大致相同。
本文采用的是端對(duì)端時(shí)鐘同步方案,主機(jī)與從機(jī)之間通過光口進(jìn)行數(shù)據(jù)交換,在 SFP光口中插入光電轉(zhuǎn)換模塊,用千兆以太網(wǎng) RJ45 網(wǎng)線相連。時(shí)間同步過程嚴(yán)格按照 IEEE 1588 協(xié)議主從式同步方案,最后由從機(jī)計(jì)算出時(shí)間同步延時(shí)和偏差。從機(jī)使用串口通信模塊與 PC 端相連,可以將時(shí)間同步結(jié)果通過串口發(fā)送給 PC 端,在PC端看到時(shí)間延時(shí)和時(shí)間偏差數(shù)據(jù),硬件系統(tǒng)如圖3所示。
圖3 時(shí)間同步硬件系統(tǒng)框圖
在時(shí)間同步硬件系統(tǒng)中,主從節(jié)點(diǎn)的時(shí)鐘都是由定時(shí)器模塊產(chǎn)生。通過使用定時(shí)器模塊的定時(shí)中斷功能設(shè)計(jì)時(shí)鐘。
IEEE-1588精密時(shí)間協(xié)議(PTP,precision time protocol)可以封裝為兩層協(xié)議或四層協(xié)議,具體的格式大致分為兩類:1)Ethernet+PTP;2)Ethernet+IPv4+UDP+PTP[14]。
二層以太網(wǎng)PTP報(bào)文不需要進(jìn)行IP報(bào)文和UDP報(bào)文封裝,直接將PTP報(bào)文加入到以太網(wǎng)幀的數(shù)據(jù)段中。這樣做的好處是鏈路中解析數(shù)據(jù)需要的時(shí)間減少了,可以提高時(shí)間的同步精度。缺點(diǎn)也很明顯,在整個(gè)以太網(wǎng)數(shù)據(jù)幀傳輸過程中,只進(jìn)行了一次CRC數(shù)據(jù)校驗(yàn),如果數(shù)據(jù)出錯(cuò),就沒有一個(gè)數(shù)據(jù)容錯(cuò)機(jī)制檢驗(yàn)數(shù)據(jù)的可靠性。雖然在通信鏈路中,四層以太網(wǎng) PTP 報(bào)文的復(fù)雜度高,數(shù)據(jù)解析時(shí)間相對(duì)較慢,時(shí)間同步精度會(huì)降低,但是保障了數(shù)據(jù)的可靠性和完整性,所以本文采用四層以太網(wǎng) PTP 報(bào)文協(xié)議。時(shí)間同步協(xié)議幀格式如圖4所示。
圖4 四層以太網(wǎng) PTP 報(bào)文
其中的 PTP 報(bào)文包含3個(gè)部分:報(bào)文頭部、報(bào)文主體和報(bào)文擴(kuò)展[15]。其中,報(bào)文頭部長度為 34 字節(jié),本文主要按照?qǐng)?bào)文類型字段進(jìn)行判斷,其余不用字節(jié)填充為 0x00;報(bào)文主體主要用于承載 PTP 報(bào)文時(shí)間戳,長度可變,本文設(shè)計(jì)長度為 7 字節(jié);報(bào)文擴(kuò)展是可選部分,可以不做填充。
采用主從同步方式,PTP 事件報(bào)文可以不用攜帶時(shí)間戳,將 PTP 事件報(bào)文定義為 34 個(gè)字節(jié),PTP 通用報(bào)文定義為 41 個(gè)字節(jié)。在 PTP 報(bào)文頭部定義類型字段,主機(jī)發(fā)送 PTP 消息,從機(jī)根據(jù)報(bào)文類型(messageType)字段來判斷 PTP 報(bào)文類型,將4種報(bào)文類型字段分別定義為以下格式:
1)同步報(bào)文類型:0x00。
2)跟隨報(bào)文類型:0x08。
3)延遲請(qǐng)求報(bào)文類型:0x01。
4)延遲請(qǐng)求應(yīng)答報(bào)文類型:0x09。
在嵌入式網(wǎng)絡(luò)設(shè)備中,由于硬件資源的限制,采用 LWIP(Lightweight IP)[16-17]輕量級(jí) TCP/IP 協(xié)議棧實(shí)現(xiàn)千兆以太網(wǎng) UDP 通信。在使用 UDP 通信過程中,由于一個(gè)通道設(shè)置一個(gè) MAC 地址、 IP 地址和端口號(hào)。即在建立四光口通信時(shí),需要設(shè)置4個(gè)不同的 MAC 地址、 IP 地址和端口號(hào),加入4個(gè)通信網(wǎng)絡(luò)和4個(gè)互不相關(guān)的 UDP 接收回調(diào)函數(shù),以便可以接收到4個(gè)端口同時(shí)發(fā)送過來的數(shù)據(jù),減少數(shù)據(jù)丟失現(xiàn)象,設(shè)計(jì)流程步驟如圖5所示。
圖5 UDP通信設(shè)計(jì)流程
主要分為以下5個(gè)步驟。
1)主函數(shù)中設(shè)置4個(gè)不同的 MAC 地址和 IP 地址。
2)調(diào)用 xemac_add()函數(shù)。 xemac_add()函數(shù)是 LWIP 中 netif_add()函數(shù)的封裝,其功能是將網(wǎng)絡(luò)接口加入網(wǎng)絡(luò)列表中。需要使用此函數(shù)把4個(gè)網(wǎng)口的網(wǎng)絡(luò)接口參數(shù)輸入網(wǎng)絡(luò)中。
3)在中斷初始化函數(shù)中,使用啟動(dòng)中斷函數(shù),將4個(gè)以太網(wǎng)子系統(tǒng)中斷 Id 寫入函數(shù)中。調(diào)用此函數(shù)后,將出現(xiàn)中斷 Id 的任何從屬控制器掛起,用于響應(yīng)中斷函數(shù)。
4)對(duì)于啟動(dòng)應(yīng)用程序 start_application()函數(shù),建立4個(gè) UDP 端口和 UDP連接。使用 udp_new()函數(shù),創(chuàng)建 UDP PCB 結(jié)構(gòu),用于UDP通信;udp_bind()函數(shù),將PCB與本地地址綁定;udp_connect()函數(shù),使UDP PCB與遠(yuǎn)程地址相關(guān)聯(lián)。
5)在接收數(shù)據(jù)方面,需要為UDP PCB設(shè)置接收回調(diào)函數(shù)。建立4個(gè)不同的udp_recv()回調(diào)函數(shù),防止在一個(gè)端口接收處理數(shù)據(jù)時(shí)占據(jù)所有進(jìn)程,使其余端口出現(xiàn)數(shù)據(jù)丟失的情況。當(dāng)接收pcb的數(shù)據(jù)報(bào)時(shí),將會(huì)調(diào)用此回調(diào)函數(shù)。
本文通過定時(shí)器中斷設(shè)計(jì)時(shí)鐘,將時(shí)鐘劃分為:時(shí)、分、秒、毫秒和微秒5個(gè)部分。時(shí)間同步流程如圖6所示。
圖6 時(shí)間同步流程圖
其大致步驟為:
1)主節(jié)點(diǎn)向從節(jié)點(diǎn)發(fā)送同步報(bào)文并記錄發(fā)送時(shí)間t1,從節(jié)點(diǎn)收到報(bào)文并判斷報(bào)文類型是否為同步報(bào)文。如果是同步報(bào)文,記錄報(bào)文到達(dá)時(shí)間為t2;如果不是,則丟棄數(shù)據(jù)并重新接收下一組數(shù)據(jù)。
2)主節(jié)點(diǎn)將時(shí)間t1加入到跟隨報(bào)文的時(shí)間戳中并發(fā)送給從節(jié)點(diǎn),從節(jié)點(diǎn)收到報(bào)文并判斷報(bào)文類型是否為跟隨報(bào)文。如果是跟隨報(bào)文,從節(jié)點(diǎn)提取時(shí)間戳得到時(shí)間t1并向主節(jié)點(diǎn)發(fā)送延時(shí)請(qǐng)求報(bào)文,記錄發(fā)送時(shí)間t3;如果不是,則丟棄數(shù)據(jù)并重新接收下一組數(shù)據(jù)。
3)主節(jié)點(diǎn)收到報(bào)文并判斷是否為延時(shí)請(qǐng)求報(bào)文。如果是,則記錄報(bào)文到達(dá)時(shí)間t4,并將時(shí)間t4加入到延時(shí)請(qǐng)求響應(yīng)報(bào)文中,然后發(fā)送給從節(jié)點(diǎn);如果不是,則將數(shù)據(jù)丟棄并重新進(jìn)行時(shí)間同步流程。
4)從節(jié)點(diǎn)接收到報(bào)文后判斷是否為延時(shí)請(qǐng)求響應(yīng)報(bào)文。如果是,則提取時(shí)間戳得到時(shí)間t4,并根據(jù)得到的4個(gè)時(shí)間計(jì)算出時(shí)間同步延時(shí)和偏差,修正從節(jié)點(diǎn)時(shí)鐘;如果不是,則將數(shù)據(jù)丟棄并重新進(jìn)行時(shí)間同步流程。
機(jī)載網(wǎng)絡(luò)作為航空電子系統(tǒng)的互聯(lián)通道,其可靠性直接影響航電系統(tǒng)的正常工作乃至飛行器的安全[12]。為保證整個(gè)網(wǎng)絡(luò)通信系統(tǒng)的任務(wù)可靠性,通常采用高可靠的設(shè)計(jì)方案以及有效的容錯(cuò)機(jī)制,保證在子系統(tǒng)出現(xiàn)故障時(shí)不會(huì)導(dǎo)致整個(gè)系統(tǒng)無法工作。本文在傳輸層采用 MD5(Message-Digest Algorithm 5)數(shù)據(jù)加密算法保證了數(shù)據(jù)的完整性,并采用四余度表決機(jī)制設(shè)計(jì)了一個(gè)容錯(cuò)通信層保證通信系統(tǒng)的可靠性。
MD5數(shù)據(jù)加密算法用于提供消息的完整性保護(hù),其基本原理是將數(shù)據(jù)信息壓縮成 128 位的 2 進(jìn)制數(shù),并且產(chǎn)生信息摘要[18]。根據(jù) MD5 算法計(jì)算方式,不可能生成具有相同消息摘要的兩條消息。雖然現(xiàn)在此算法被已有碰撞攻擊破解了不可逆性,但是由于其在32位機(jī)器上計(jì)算速度快和易壓縮性,作為嵌入式數(shù)據(jù)加密還是很有必要的。發(fā)送端程序設(shè)計(jì)流程如圖7所示。
圖7 發(fā)送端 MD5 數(shù)據(jù)加密設(shè)計(jì)流程圖
將開源的C語言MD5算法移植進(jìn)網(wǎng)絡(luò)中,發(fā)送端程序流程設(shè)計(jì)步驟如下:
1)需要發(fā)送的數(shù)據(jù)作為 MD5 算法輸入。
2)經(jīng)過 MD5 計(jì)算后得到32位16進(jìn)制數(shù)據(jù)。
3)將 MD5 加密數(shù)據(jù)加入到發(fā)送數(shù)據(jù)幀幀尾。
4)發(fā)送數(shù)據(jù)幀。
在接收端需要將傳輸數(shù)據(jù)進(jìn)行解析,提取數(shù)據(jù)幀后 32 位校驗(yàn)數(shù)據(jù),再將剩余數(shù)據(jù)經(jīng)過 MD5 計(jì)算后得到的加密數(shù)據(jù)與提取的 32 位校驗(yàn)數(shù)據(jù)進(jìn)行對(duì)比,判斷整個(gè)數(shù)據(jù)幀的完整性和有效性。程序設(shè)計(jì)流程如圖8所示。
圖8 接收端 MD5 數(shù)據(jù)校驗(yàn)設(shè)計(jì)流程圖
接收端程序流程設(shè)計(jì)步驟如下:
1)首先判斷接收到的數(shù)據(jù)包是否為空。
2)如果為空,將數(shù)據(jù)包丟棄,并釋放 pbuf 空間;不為空,將數(shù)據(jù)先提取出來放入數(shù)組緩存中。
3)提取數(shù)組的后32位16進(jìn)制數(shù)據(jù),放入校驗(yàn)數(shù)組中。
4)將提取后的數(shù)據(jù)作為 MD5 算法輸入。
5)得到的輸出數(shù)據(jù)與之前放入校驗(yàn)數(shù)組的數(shù)據(jù)進(jìn)行逐一對(duì)比,判斷兩組數(shù)據(jù)是否一致。如果相同,則數(shù)據(jù)正確;如果不同,就是數(shù)據(jù)出錯(cuò),將數(shù)據(jù)丟棄,清空數(shù)組緩存,準(zhǔn)備接收下一組數(shù)據(jù)幀。
容錯(cuò)通信層在通信系統(tǒng)的傳輸層和用戶服務(wù)程序的應(yīng)用層之間,為了提高系統(tǒng)可靠性,機(jī)載網(wǎng)絡(luò)通信系統(tǒng)中采用了多余度的設(shè)計(jì)方案,避免單通道系統(tǒng)故障后無法保證系統(tǒng)安全工作[19]。多個(gè)余度同時(shí)工作時(shí),如果多個(gè)信息來源的數(shù)據(jù)一致,直接將數(shù)據(jù)提交給上層服務(wù)程序即可;如果不一致,就需要進(jìn)行余度表決,再將表決模塊得到的輸出數(shù)據(jù)傳送給上層服務(wù)程序[20]。
四余度表決控制系統(tǒng)的輸入是上一層MD5數(shù)據(jù)校驗(yàn)層的輸出數(shù)據(jù)。單通道系統(tǒng)經(jīng)過數(shù)據(jù)校驗(yàn)層后還需通過四余度表決層進(jìn)行余度表決輸出,得到的最終數(shù)據(jù)便是正確傳輸數(shù)據(jù),程序設(shè)計(jì)流程如圖9所示。
圖9 四余度表決系統(tǒng)設(shè)計(jì)流程圖
四余度表決設(shè)計(jì)步驟如下:
1)4個(gè)通道分別判斷是否有數(shù)據(jù)傳輸進(jìn)來,如果有數(shù)據(jù)傳輸,將接收此數(shù)據(jù)的通道數(shù)據(jù)標(biāo)志位置為1;如果沒有數(shù)據(jù)傳輸,則通道數(shù)據(jù)標(biāo)志位置為0。
2)把得到的4個(gè)通道的數(shù)據(jù)標(biāo)志位相加,判斷其總和。如果總和值大于2,則采用比較表決,將各個(gè)通道的數(shù)據(jù)一一對(duì)比;如果總和值小于等于2,則說明通道數(shù)據(jù)不在同一時(shí)刻發(fā)送,或者在數(shù)據(jù)傳輸過程中出現(xiàn)丟包情況,此時(shí)將數(shù)據(jù)丟棄。
3)在數(shù)據(jù)對(duì)比過程中,定義4個(gè)相似度標(biāo)志位。若通道數(shù)據(jù)相同,相似度標(biāo)志位加一;若通道數(shù)據(jù)不同,相似度標(biāo)志位加零。此標(biāo)志位用來對(duì)各個(gè)通道的傳輸數(shù)據(jù)相同性和完整性判斷。
4)對(duì)相似度標(biāo)志位判斷,如果此通道的相似度數(shù)值最大且大于等于2,則把此通道的數(shù)據(jù)作為正確數(shù)據(jù)存入 DDR 中?;蛘咴O(shè)置回環(huán),把正確數(shù)據(jù)作為4個(gè)通道的發(fā)送數(shù)據(jù),發(fā)送給上位機(jī),在上位機(jī)中觀察此接收數(shù)據(jù)與上位機(jī)發(fā)送給硬件平臺(tái)的數(shù)據(jù)是否相同。如果此通道的相似度數(shù)值等于1,會(huì)出現(xiàn)兩種情況。一是只有兩個(gè)通道的數(shù)據(jù)相等且這兩個(gè)通道相似度為1,其余通道數(shù)據(jù)都不相同,則正確數(shù)據(jù)選擇相似度為1的通道數(shù)據(jù);二是所有的通道相似度都為1,代表4個(gè)數(shù)據(jù)通道兩兩相同,無法判斷正確數(shù)據(jù)是哪條通道的,則將所有通道的數(shù)據(jù)丟棄,重新接收下一組數(shù)據(jù)。如果相似度等于0,則說明數(shù)據(jù)出現(xiàn)錯(cuò)誤,需要把所有通道的數(shù)據(jù)丟棄,重新接收下一組數(shù)據(jù)。
硬件平臺(tái)采用 Xilinx 公司生產(chǎn)的AX7101 FPGA 開發(fā)板,其型號(hào)為 XC7A100T-2FGG484I,選用的 FPGA 芯片為 Xilinx 公司 Artix-7 系列的 XC7A100T。在通信接口方面,4 個(gè) GTP 收發(fā)器連接了最高可達(dá) 6.6 Gb/s,用于光纖通信,帶寬為1 Gbps,滿足高速數(shù)據(jù)傳輸和交換的要求。硬件開發(fā)平臺(tái)為 Xilinx 公司設(shè)計(jì)的軟件 Vivado 2017.4,軟件驅(qū)動(dòng)開發(fā)平臺(tái)為 Xilinx SDK 2017.4。本軟件開發(fā)中使用 C/C++ 進(jìn)行開發(fā)。
將光電轉(zhuǎn)換模塊插入 SFP 光口中,通過 RJ45 千兆以太網(wǎng)網(wǎng)線把硬件平臺(tái)與 PC 端相連。在 PC 端設(shè)置以太網(wǎng)本地連接適配器,將本地主機(jī) IPv4 地址設(shè)置為:192.168.1.100,與硬件平臺(tái)同一網(wǎng)段。打開網(wǎng)絡(luò)調(diào)試助手,配置本地主機(jī)端口號(hào)為:5101。遠(yuǎn)程主機(jī)地址設(shè)置為:192.168.1.10,端口號(hào)為:5001。本地主機(jī)向遠(yuǎn)程主機(jī)發(fā)送 20 個(gè)字節(jié)的十六進(jìn)制數(shù):0x68,0x74,0x74,0x70,0x3A,0x2F,0x2F,0x77,0x77,0x77,0x2E,0x63,0x6D,0x73,0x6F,0x66,0x74,0x2E,0x63,0x6E。PC 向硬件平臺(tái)發(fā)送數(shù)據(jù),硬件平臺(tái)收到數(shù)據(jù)后將數(shù)據(jù)再發(fā)還給上位機(jī),完成一個(gè)回環(huán)測試,通過數(shù)據(jù)日志可以看到發(fā)送數(shù)據(jù)與接收數(shù)據(jù)一致,硬件平臺(tái)與上位機(jī)可以正常通信。
使用 iperf 軟件測試連接速率,輸入命令“iperf-c 192.168.1.10-u-b1000M-t 60-I 5-l 64k-p5001”,指定 iperf 以客戶端啟動(dòng),使用 UDP 連接到 IPv4 地址為:192.168.1.10 ,端口號(hào)為:5001 的服務(wù)器上,傳輸帶寬為 1 000 M,緩沖區(qū)大小為 64 kB,測試時(shí)間為 60 s,每隔 5 s 打印輸出測試結(jié)果。如圖10所示。
圖10 UDP連接性能測試
Interval 是測試時(shí)間段,Transfer 表示該時(shí)間段內(nèi)傳輸?shù)臄?shù)據(jù)總量,Bandwidth 為該時(shí)間段內(nèi)的平均帶寬。從測試結(jié)果可以看出,UDP 連接在 5 s 內(nèi)的傳輸數(shù)據(jù)總量在 346~387 Mbytes,5 s 內(nèi)平均傳輸數(shù)據(jù)量約為 370.3 Mbytes,平均每秒傳輸數(shù)據(jù)量約為 74 Mbytes/s。雖然達(dá)不到理論上千兆以太網(wǎng)每秒傳輸數(shù)據(jù)的要求,但也遠(yuǎn)遠(yuǎn)高于百兆以太網(wǎng)的每秒傳輸數(shù)據(jù)量標(biāo)準(zhǔn)。其每分鐘傳輸數(shù)據(jù)總量可達(dá)4.34 GB,在這段時(shí)間內(nèi)帶寬穩(wěn)定在 600 Mbits/s 以上,平均帶寬約為 621 Mbits/s。
在硬件平臺(tái)間采用端對(duì)端的測試。從節(jié)點(diǎn)采用的是 AX7101 FPGA 通信板卡,主節(jié)點(diǎn)采用的是米聯(lián)客的 MA704FA-200T 開發(fā)板。此開發(fā)板的核心板使用 Xilinx Artix-7 FPGA 芯片,型號(hào)為 XC7A200T-2FBG676I。在通信接口方面,開發(fā)板上有 2 路 SFP 光口,速度高達(dá) 6.6 Gb/s。測試結(jié)果通過串口發(fā)送給 PC 端。兩個(gè)硬件平臺(tái)通過光纖接口插上 SFP 光電轉(zhuǎn)化模塊相連,通信鏈路采用 RJ45 千兆網(wǎng)線。從機(jī)將測試數(shù)據(jù)計(jì)算結(jié)果通過 UART 發(fā)送給上位機(jī),上位機(jī)在串口調(diào)試助手中觀察測試數(shù)據(jù)。
將時(shí)間同步周期設(shè)置為 1 s,測試 10 次時(shí)間同步后的鏈路傳輸延時(shí),延時(shí)數(shù)據(jù)如圖11所示。
經(jīng)過 10 次時(shí)間同步,其延時(shí)數(shù)據(jù)首先呈明顯下降然后平穩(wěn)的趨勢(shì)。由于定時(shí)器定時(shí)中斷時(shí)間是 100 μs 觸發(fā)一次,所以時(shí)鐘的最小單位是 100 μs。根據(jù)時(shí)間同步算法和得到的延時(shí)數(shù)據(jù)可以推算出延時(shí)區(qū)間在 150~250 μs,誤差區(qū)間在 100 μs。由于無法得到更精確的延時(shí)數(shù)值,且時(shí)間同步精度達(dá)到了微秒級(jí),所以誤差仍在可容受范圍。
將4個(gè)通道的本地主機(jī) IPv4 地址分別設(shè)置為:192.168.1.100、192.168.2.100、192.168.3.100、192.168.4.100。主機(jī)端口號(hào)修改至空閑端口,分別為:31777、32777、33777、34777。遠(yuǎn)程主機(jī) IPv4 地址分別設(shè)置為:192.168.1.10、192.168.2.10、192.168.3.10、192.168.4.10。遠(yuǎn)程主機(jī)端口號(hào)分別設(shè)置為:317、32769、33769、34769。使用網(wǎng)絡(luò)調(diào)試助手進(jìn)行測試。
首先使用MD5校驗(yàn)工具將測試數(shù)據(jù)進(jìn)行計(jì)算,得到的MD5加密數(shù)據(jù)為32位16進(jìn)制數(shù):0xC20AD4D76FE97759AA27A0C99BFF6710,測試數(shù)據(jù)為4位16進(jìn)制數(shù)(0x31,0x32),發(fā)送數(shù)據(jù)為測試數(shù)據(jù)加上MD5加密數(shù)據(jù)。
為了測試設(shè)計(jì)的四余度表決機(jī)制和 MD5 數(shù)據(jù)校驗(yàn)的可靠性,對(duì)整個(gè)系統(tǒng)進(jìn)行了3個(gè)方面的測試:
1)發(fā)送相同的測試數(shù)據(jù)和 MD5 校驗(yàn)值,測試了工程的完整性和準(zhǔn)確性。
2)修改 MD5 加密數(shù)據(jù),測試了傳輸層數(shù)據(jù)校驗(yàn)的可靠性。
3)對(duì)四余度表決系統(tǒng)進(jìn)行測試:首先對(duì)雙通道發(fā)送兩個(gè)不同的數(shù)據(jù),其余通道數(shù)據(jù)與其中一個(gè)通道數(shù)據(jù)相同,測試余度表決機(jī)制符合設(shè)計(jì)。其次,對(duì)三通道發(fā)送不同數(shù)據(jù),剩余通道與其中一個(gè)通道數(shù)據(jù)相同,分析了測試結(jié)果符合設(shè)計(jì)。最后,將四通道分成兩組,兩組數(shù)據(jù)不同但組內(nèi)通道數(shù)據(jù)相同。經(jīng)過測試,得到的結(jié)果符合設(shè)計(jì),如圖12所示。
圖12 最終測試結(jié)果圖
本文設(shè)計(jì)了一種基于 MicroBlaze 的時(shí)間觸發(fā)光以太網(wǎng)終端的方案,可以滿足航電系統(tǒng)的高帶寬、強(qiáng)實(shí)時(shí)、高可靠的要求。實(shí)現(xiàn)了以單核 MicroBlaze為核心的四光口千兆以太網(wǎng)光通信方案,提出了一種使用 MicroBlaze 實(shí)現(xiàn)時(shí)間同步功能方法。針對(duì)機(jī)載網(wǎng)絡(luò)的可靠性問題,在傳輸層使用 MD5 數(shù)據(jù)加密算法,提高數(shù)據(jù)的完整性。設(shè)計(jì)了一種四余度表決機(jī)制解決數(shù)據(jù)一致性問題,提高機(jī)載網(wǎng)絡(luò)系統(tǒng)可靠性。但仍有許多不足之處,由于在時(shí)間同步過程中沒有設(shè)計(jì)合適的時(shí)間補(bǔ)償機(jī)制,時(shí)間同步誤差區(qū)間仍然不小,需要設(shè)計(jì)時(shí)間補(bǔ)償機(jī)制增加時(shí)間同步精度。