姜 宏,劉淑芬,陳 龍
近年來(lái),星載電子系統(tǒng)呈現(xiàn)出分布式和網(wǎng)絡(luò)化的發(fā)展趨勢(shì),互聯(lián)網(wǎng)絡(luò)和總線作為數(shù)據(jù)交互的通道,其重要性日益顯現(xiàn).由于航天器任務(wù)復(fù)雜度的持續(xù)增加,控制計(jì)算機(jī)系統(tǒng)的計(jì)算量不斷增大,從而導(dǎo)致系統(tǒng)中各個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)的數(shù)據(jù)量迅速增長(zhǎng).與此相對(duì)照,以1553B[1-2]為代表的傳統(tǒng)總線技術(shù),數(shù)據(jù)傳輸率低、支持的節(jié)點(diǎn)數(shù)量有限,成為制約系統(tǒng)性能和規(guī)模進(jìn)一步提高的瓶頸.針對(duì)傳統(tǒng)技術(shù)的不足,國(guó)內(nèi)外學(xué)者提出了一些替代技術(shù),例如:FC(Fiber Channel)[3]、TTE(Time-Triggered Ethernet)[4]和SpaceWire[5-6]等.
FC的協(xié)議標(biāo)準(zhǔn)最早制定于1988年,由ANSI X3T11標(biāo)準(zhǔn)委員會(huì)負(fù)責(zé)開(kāi)發(fā)和協(xié)調(diào).FC技術(shù)最初主要應(yīng)用于商業(yè)數(shù)據(jù)中心的存儲(chǔ)局域網(wǎng)(Storage Area Networks, SAN),隨后被應(yīng)用于航空領(lǐng)域,形成了FC-AE協(xié)議族.FC-AE協(xié)議主要包含F(xiàn)C-AE-1553、FC-AE-ASM、FC-AE-RDMA、FC-AE-FCLP及FC-AEVI協(xié)議,可用于航空電子環(huán)境下各設(shè)備之間的數(shù)據(jù)通信.在航天領(lǐng)域,美國(guó)NASA于2003年將FC技術(shù)運(yùn)用到了其地面超級(jí)計(jì)算機(jī)Columbia,我國(guó)則在空間站型號(hào)上進(jìn)行了FC-AE-1553產(chǎn)品的搭載試驗(yàn).
TTE是由TTTech公司提出的,在IEEE802.3協(xié)議的基礎(chǔ)上實(shí)現(xiàn)SAE AS6802的時(shí)間觸發(fā)機(jī)制,能夠兼容普通以太網(wǎng)和AFDX,支持以太網(wǎng)、AFDX(Avionics Full-Douplex Switched Ethernet)和TTE三種報(bào)文通信.TTE技術(shù)在工業(yè)控制領(lǐng)域已成功應(yīng)用于汽車(chē)的車(chē)聯(lián)網(wǎng)中;在航空領(lǐng)域,已在波音787和空客A380上得到應(yīng)用;在航天領(lǐng)域,應(yīng)用于NASA的獵戶(hù)座載人探索飛行器(計(jì)劃于2021年正式發(fā)射).
SpaceWire標(biāo)準(zhǔn)是由歐空局和英國(guó)的STAR-Dundee公司于2000年共同制定的.經(jīng)過(guò)十幾年的發(fā)展,SpaceWire標(biāo)準(zhǔn)不斷豐富和完善,近年來(lái)衍生出了光纖版的SpaceFibre[7]協(xié)議.由于SpaceWire協(xié)議主要面向航天,因此自誕生不久的2003年起就開(kāi)始應(yīng)用于型號(hào),目前已有幾十個(gè)航天器使用了該技術(shù).
在上述三種技術(shù)中,SpaceWire在航天器上的應(yīng)用最為廣泛,因此引起了眾多國(guó)內(nèi)外學(xué)者的關(guān)注.但是,在這些相關(guān)的研究工作中,標(biāo)準(zhǔn)SpaceWire傳輸速率一般只能達(dá)到200Mbps,很難滿(mǎn)足星上新型傳感器的實(shí)時(shí)圖像傳輸需求;SpaceFibre協(xié)議的性能指標(biāo)雖然很高,但是核心技術(shù)被國(guó)外機(jī)構(gòu)所掌握,目前國(guó)內(nèi)還未能實(shí)現(xiàn)自主化.因此,本文在前期工作[8-10]的基礎(chǔ)上開(kāi)展高速SpaceWire系統(tǒng)的設(shè)計(jì)和驗(yàn)證工作是非常必要的.
本文提出的高速SpaceWire系統(tǒng)對(duì)標(biāo)準(zhǔn)SpaceWire的物理層和信號(hào)層進(jìn)行了改進(jìn)(如圖1所示),以提高總線系統(tǒng)性能.在改進(jìn)中的主要設(shè)計(jì)思路是:保持信號(hào)層以上的協(xié)議與標(biāo)準(zhǔn)協(xié)議的一致性.
圖1 高速SpaceWire的協(xié)議層Fig.1 Protocol levels of high-speed SpaceWire
本文高速SpaceWire系統(tǒng)的設(shè)計(jì)目標(biāo)是構(gòu)造一個(gè)由1個(gè)路由節(jié)點(diǎn)、4個(gè)終端節(jié)點(diǎn)和兩臺(tái)監(jiān)視主機(jī)(如圖2所示)組成的簡(jiǎn)單而完整的總線系統(tǒng).其中,終端節(jié)點(diǎn)1和2位于終端板卡1上,終端節(jié)點(diǎn)3和4位于終端板卡2上.終端板卡1通過(guò)光模塊1和2接路由端口1和2,終端板卡2通過(guò)光模塊3和4接路由端口3和4.終端節(jié)點(diǎn)和路由節(jié)點(diǎn)之間通過(guò)1米長(zhǎng)光纖鏈路進(jìn)行互聯(lián),最大物理帶寬超過(guò)10 Gbps.
不論是路由節(jié)點(diǎn)還是終端節(jié)點(diǎn),核心功能都通過(guò)FPGA(Field Programmable Gated Array)實(shí)現(xiàn).其中,終端節(jié)點(diǎn)的FPGA實(shí)現(xiàn)了高速SpaceWire的Codec(Coding and Decoding) IP(Intellectual Property),路由節(jié)點(diǎn)FPGA實(shí)現(xiàn)了高速SpaceWire的Router IP.
圖2中的終端節(jié)點(diǎn)除了要執(zhí)行高速SpaceWire協(xié)議處理外,還要頻繁與后端系統(tǒng)進(jìn)行交互,而路由節(jié)點(diǎn)主要進(jìn)行不同端口間的數(shù)據(jù)轉(zhuǎn)發(fā).本文根據(jù)這兩種節(jié)點(diǎn)的工作特點(diǎn),開(kāi)展設(shè)計(jì)工作.
本文在傳統(tǒng)SpaceWire協(xié)議IP的基礎(chǔ)上,對(duì)終端節(jié)點(diǎn)的物理接口、片上總線技術(shù)進(jìn)行了改進(jìn),并設(shè)計(jì)了DMA(direct memory access)模塊以進(jìn)一步提高系統(tǒng)性能(如圖3所示).
(1) 物理接口
傳統(tǒng)SpaceWire是一種全雙工、雙向、串行、點(diǎn)到點(diǎn)的數(shù)據(jù)總線.在每個(gè)方向上,它使用一對(duì)差分信號(hào)線傳輸編碼后的數(shù)據(jù).從而在每個(gè)方向上都會(huì)有四根信號(hào)線(D+、D-、S+、S-).SpaceWire物理層傳輸介質(zhì)是電纜,其內(nèi)部包含4組獨(dú)立的屏蔽雙絞線,物理帶寬一般只有幾百兆,很難達(dá)到吉比特級(jí).為了提高網(wǎng)絡(luò)帶寬,在物理接口設(shè)計(jì)中采用高速光模塊,并用光纖鏈路取代電纜.
由于光模塊的傳輸速率通常可超過(guò)10 Gbps,因此需要在其后端配備高速收發(fā)器.本文的收發(fā)器采用Xilinx Virtex-7 FPGA內(nèi)部的GTx(Gigabit Transceiver,包括:GTP、GTX、GTH等),具體類(lèi)型為GTH,最大傳輸速率可達(dá)到13.1 Gbps.通過(guò)GTH實(shí)現(xiàn)串行信號(hào)與并行信號(hào)的相互轉(zhuǎn)換:在接收方向,將高速的8B/10B串行信號(hào)轉(zhuǎn)換為低速并行信號(hào),便于FPGA內(nèi)部邏輯執(zhí)行復(fù)雜的協(xié)議處理;在發(fā)送方向,將低速的并行信號(hào)轉(zhuǎn)換為高速的8B/10B串行信號(hào),便于數(shù)據(jù)的高速傳輸.
(2) 片上總線
傳統(tǒng)SpaceWire終端節(jié)點(diǎn)在協(xié)議IP與CPU間通過(guò)AMBA2.0標(biāo)準(zhǔn)下的AHB(Advanced High-performance Bus)總線進(jìn)行互聯(lián),單位時(shí)間的數(shù)據(jù)吞吐量較低.
本文采用服從AMBA4.0標(biāo)準(zhǔn)的AXI4片上總線,最長(zhǎng)可支持512位寬度的數(shù)據(jù)訪問(wèn),而且利用AXI4 burst transfer(突發(fā)傳輸)中一個(gè)地址對(duì)應(yīng)多個(gè)數(shù)據(jù)的特點(diǎn),明顯提高了片上總線利用率.
圖2 高速SpaceWire系統(tǒng)架構(gòu)Fig.2 Components of high-speed SpaceWire
圖3 終端節(jié)點(diǎn)的功能結(jié)構(gòu)Fig.3 Function structure of terminal node
圖4和圖5(陰影部分為無(wú)效信號(hào))繪制了AXI4和AHB這兩種片上總線在進(jìn)行突發(fā)寫(xiě)操作時(shí)的時(shí)序.AXI4信號(hào)包括:
ACLK為AXI的時(shí)鐘,AWADDR是寫(xiě)地址,AWVALID是地址有效信號(hào)、WDATA是寫(xiě)數(shù)據(jù)、WVALID是寫(xiě)地址有效信號(hào)、WLAST是寫(xiě)數(shù)據(jù)結(jié)束標(biāo)志.當(dāng)AHB對(duì)連續(xù)遞增的地址進(jìn)行寫(xiě)數(shù)據(jù)操作時(shí)(如圖5),它和AXI4的執(zhí)行效果類(lèi)似,但是由于AHB每個(gè)時(shí)鐘周期都要發(fā)布遞增的地址到HADDR上,因此要執(zhí)行寫(xiě)數(shù)據(jù)必須先等待HREADY信號(hào)有效且地址更新完成,兩次數(shù)據(jù)之間的間隔時(shí)間明顯變長(zhǎng),從而AHB總線的時(shí)鐘周期相應(yīng)延長(zhǎng),最終導(dǎo)致總線帶寬的無(wú)效浪費(fèi).在極端情況下,當(dāng)對(duì)相同的地址進(jìn)行寫(xiě)操作時(shí),AXI4允許數(shù)據(jù)連續(xù)不斷地執(zhí)行寫(xiě)數(shù)據(jù),而AHB必須在每次寫(xiě)數(shù)據(jù)操作前插入類(lèi)型為NONSEQ的HTRANS,以及對(duì)應(yīng)的HADDR,在這種情況下AHB的總線利用率大約相當(dāng)于AXI4的一半.
(3) DMA模塊
DMA控制模塊分為DMA發(fā)送和DMA接收兩個(gè)子模塊.
1) DMA發(fā)送
DMA發(fā)送子模塊的核心是DMA發(fā)送狀態(tài)機(jī),包含7個(gè)狀態(tài):空閑、讀描述符、檢查描述符、讀內(nèi)存、寫(xiě)FIFO(First Input First Output)、寫(xiě)標(biāo)志、寫(xiě)描述符(如圖6所示).
圖4 AXI4突發(fā)寫(xiě)操作時(shí)序Fig.4 Time sequence of AXI4 Burst writing
圖5 AHB不定長(zhǎng)突發(fā)寫(xiě)操作時(shí)序Fig.5 Time sequence of AHB Burst writing in random length
圖6 DMA發(fā)送狀態(tài)機(jī)Fig.6 The State Machine of DMA Transmission
系統(tǒng)復(fù)位時(shí),狀態(tài)機(jī)處于空閑狀態(tài),當(dāng)鏈路建立連接且DMA_TxStart為1時(shí)狀態(tài)機(jī)進(jìn)入讀描述符狀態(tài);讀描述符狀態(tài)主要執(zhí)行讀發(fā)送描述符的動(dòng)作,然后進(jìn)入檢查描述符狀態(tài);在檢查描述符狀態(tài),控制器會(huì)檢查DMA發(fā)送使能位DescEn是否有效,如果有效則當(dāng)?shù)却l(fā)送的數(shù)據(jù)長(zhǎng)度TxLen大于0時(shí)進(jìn)入讀內(nèi)存狀態(tài),否則進(jìn)入寫(xiě)標(biāo)志狀態(tài),如果DescEn無(wú)效則返回空閑狀態(tài);在讀內(nèi)存狀態(tài),控制器通過(guò)AXI(Advanced eXtensible Interface)總線接口讀取存儲(chǔ)器中(地址由發(fā)送描述符指定)的128位數(shù)據(jù),然后進(jìn)入寫(xiě)FIFO狀態(tài);寫(xiě)FIFO狀態(tài)的主要操作是檢查發(fā)送FIFO是否已滿(mǎn)以及發(fā)送是否完成,如果發(fā)送FIFO已滿(mǎn)則停留在當(dāng)前狀態(tài),如果發(fā)送已完成則進(jìn)入寫(xiě)標(biāo)志狀態(tài),否則將數(shù)據(jù)寫(xiě)入發(fā)送FIFO后繼續(xù)進(jìn)入讀數(shù)據(jù)狀態(tài);在寫(xiě)標(biāo)志狀態(tài),控制器會(huì)判斷發(fā)送FIFO是否已滿(mǎn),如果未滿(mǎn)則將數(shù)據(jù)包結(jié)束標(biāo)志寫(xiě)入發(fā)送FIFO,然后進(jìn)入寫(xiě)描述符狀態(tài);寫(xiě)描述符狀態(tài)的主要操作是將發(fā)送狀態(tài)寫(xiě)入描述符表,接著將當(dāng)前描述符的DMA發(fā)送使能位改寫(xiě)為無(wú)效,然后重新回到讀描述符狀態(tài),開(kāi)始下一輪發(fā)送.
2) DMA接收
DMA接收子模塊的核心是DMA接收狀態(tài)機(jī),包含6個(gè)狀態(tài):空閑、讀描述符、檢查描述符、讀FIFO、寫(xiě)內(nèi)存和寫(xiě)描述符(如圖7所示).
圖7 DMA接收狀態(tài)機(jī)Fig.7 The State Machine of DMA Reception
當(dāng)系統(tǒng)處于復(fù)位狀態(tài)時(shí)DMA控制器處于空閑狀態(tài),當(dāng)鏈路建立連接且DMA_RxStart為1時(shí)進(jìn)入讀描述符狀態(tài);在讀描述符狀態(tài),控制器讀取描述符信息,然后進(jìn)入檢查描述符狀態(tài);檢查描述符狀態(tài)的主要操作是檢查DMA接收使能位DescEn是否有效,若無(wú)效則返回空閑狀態(tài),否則進(jìn)入讀FIFO狀態(tài);在讀FIFO狀態(tài),控制器首先判斷已接收的數(shù)據(jù)長(zhǎng)度RxLen是否大于等于描述符中規(guī)定的最大長(zhǎng)度或者已經(jīng)接收到了數(shù)據(jù)包結(jié)束標(biāo)志EOP(End of Packet)或EEP(End of Error Packet),若是則跳轉(zhuǎn)到寫(xiě)描述符狀態(tài),否則檢查接收FIFO是否為空,當(dāng)不為空時(shí)從接收FIFO中讀取數(shù)據(jù),然后進(jìn)入寫(xiě)內(nèi)存狀態(tài),否則停留在當(dāng)前狀態(tài);在寫(xiě)內(nèi)存狀態(tài),控制器通過(guò)AXI總線接口將數(shù)據(jù)寫(xiě)入存儲(chǔ)器中的規(guī)定地址(由接收描述符指定),然后回到讀FIFO狀態(tài);在寫(xiě)描述符狀態(tài),控制器會(huì)將接收狀態(tài)寫(xiě)入當(dāng)前描述符,接著將當(dāng)前描述符的接收使能位改寫(xiě)為無(wú)效并寫(xiě)入內(nèi)存,最后回到讀描述符狀態(tài),開(kāi)始下一輪的接收.
3.2.1 工作原理
本文路由節(jié)點(diǎn)的FPGA設(shè)計(jì)原理是:當(dāng)接收到數(shù)據(jù)包的包頭時(shí)將會(huì)檢測(cè)輸出端口.若輸出端口空閑,則會(huì)打開(kāi)輸入端口和輸出端口之間的交換陣列開(kāi)關(guān),建立連接通道,數(shù)據(jù)通過(guò)該連接通道源源不斷地進(jìn)行傳輸.當(dāng)接收到結(jié)束字符時(shí),表明一個(gè)完整的數(shù)據(jù)包傳輸完成,此時(shí)將會(huì)斷開(kāi)交換陣列開(kāi)關(guān),關(guān)閉連接通道,釋放目的端口給下一個(gè)從其它輸入端口進(jìn)入的數(shù)據(jù).FPGA邏輯在對(duì)數(shù)據(jù)包的包頭完成識(shí)別后包頭已經(jīng)沒(méi)有任何作用和意義,因此會(huì)采用包頭刪除技術(shù)將其丟棄.圖8是在FPGA中實(shí)現(xiàn)的一個(gè)四端口路由節(jié)點(diǎn)的功能結(jié)構(gòu).
圖8一共包含4個(gè)Codec模塊,1個(gè)交換陣列模塊及1個(gè)路由控制模塊.Codec模塊是高速SpaceWire協(xié)議的處理單元,用于建立和維護(hù)SpaceWire鏈路連接并負(fù)責(zé)數(shù)據(jù)包的接收和發(fā)送;交換陣列是路由器轉(zhuǎn)發(fā)的物理路徑,通常采用mesh結(jié)構(gòu);路由控制模塊是路由器的核心單元,包含目的端口仲裁模塊和組尋址路由轉(zhuǎn)發(fā)模塊兩個(gè)最主要的子模塊.
3.2.2 子模塊設(shè)計(jì)
(1) 目的端口仲裁模塊
目的端口仲裁子模塊的核心部分是轉(zhuǎn)發(fā)仲裁狀態(tài)機(jī).該狀態(tài)機(jī)在初始時(shí)處于空閑等待狀態(tài),當(dāng)進(jìn)入工作狀態(tài)后首先判斷數(shù)據(jù)包轉(zhuǎn)發(fā)端口的狀態(tài),如果目的端口斷開(kāi)或未運(yùn)行,則數(shù)據(jù)包被丟棄;然后判斷目的端口的發(fā)送緩沖隊(duì)列是否已滿(mǎn),如果是則將數(shù)據(jù)包丟棄,否則判斷是否具有相同目的端口的其他數(shù)據(jù)包;如果多個(gè)數(shù)據(jù)包的目的端口相同,則按照優(yōu)先級(jí)進(jìn)行排隊(duì),如果優(yōu)先級(jí)也相同,則按照先后順序進(jìn)行排隊(duì).
圖8 路由節(jié)點(diǎn)的功能結(jié)構(gòu)Fig.8 Function structure of Router
(2) 組尋址路由轉(zhuǎn)發(fā)模塊
組尋址路由轉(zhuǎn)發(fā)子模塊支持單播和組播,主要功能是通過(guò)路由信息查找數(shù)據(jù)包的目的端口,并在適當(dāng)時(shí)機(jī)轉(zhuǎn)發(fā)數(shù)據(jù)包.在設(shè)計(jì)過(guò)程中,本文實(shí)現(xiàn)了路由轉(zhuǎn)發(fā)狀態(tài)機(jī).該狀態(tài)機(jī)包含的6個(gè)狀態(tài),分別為:等待地址、生成請(qǐng)求、請(qǐng)求被應(yīng)答、刪除頭部、等待結(jié)束、數(shù)據(jù)包丟棄.
在等待地址狀態(tài),轉(zhuǎn)發(fā)模塊判斷源端口緩沖區(qū)是否非空,若滿(mǎn)足條件則對(duì)地址進(jìn)行解析后進(jìn)入生成請(qǐng)求狀態(tài),否則停留在當(dāng)前狀態(tài);在生成請(qǐng)求狀態(tài),等待目的端口的應(yīng)答,若收到應(yīng)答則進(jìn)入請(qǐng)求被應(yīng)答狀態(tài),若超時(shí)無(wú)應(yīng)答則進(jìn)入數(shù)據(jù)包丟棄狀態(tài),否則停留在當(dāng)前狀態(tài);在請(qǐng)求被應(yīng)答狀態(tài),若刪除使能信號(hào)為1,則進(jìn)入刪除頭部狀態(tài),否則進(jìn)入等待結(jié)束狀態(tài);在刪除頭部狀態(tài),執(zhí)行刪除頭部操作,然后進(jìn)入等待結(jié)束狀態(tài);在等待結(jié)束狀態(tài),若源端口緩沖區(qū)和目的端口緩沖區(qū)狀態(tài)正常且未收到數(shù)據(jù)包結(jié)束標(biāo)志,則停留在當(dāng)前狀態(tài)并執(zhí)行數(shù)據(jù)傳輸,若收到了數(shù)據(jù)包結(jié)束標(biāo)志則回到等待地址狀態(tài),否則禁止數(shù)據(jù)傳輸,并在等待了一段時(shí)間后進(jìn)入數(shù)據(jù)包丟棄狀態(tài);在數(shù)據(jù)包丟棄狀態(tài),轉(zhuǎn)發(fā)模塊會(huì)清空源端口緩沖區(qū)然后返回等待地址狀態(tài),開(kāi)始新一輪的路由轉(zhuǎn)發(fā).
(1) 硬件平臺(tái)
圖2中的終端板卡和路由器的硬件都采用Xilinx公司的VC709評(píng)估板,對(duì)評(píng)估板FPGA加載不同的配置使之實(shí)現(xiàn)不同的功能,監(jiān)視主機(jī)則采用HP Z800工作站.
(2) 軟件平臺(tái)
嵌入式處理器采用Xilinx公司的Microblaze軟核.嵌入式軟件開(kāi)發(fā)和調(diào)試工具采用Xilinx SDK.
監(jiān)視主機(jī)的操作系統(tǒng)是Windows7.在Windows7下,利用VisualStudio2010開(kāi)發(fā)了測(cè)試軟件.該軟件可通過(guò)PCI-E接口與VC709評(píng)估板上的嵌入式處理器軟件進(jìn)行通信,發(fā)起功能測(cè)試和性能測(cè)試.
(3) 測(cè)試環(huán)境
測(cè)試在實(shí)驗(yàn)室條件下開(kāi)展,溫度約為25°.
為了對(duì)高速SpaceWire系統(tǒng)的設(shè)計(jì)進(jìn)行驗(yàn)證,本文開(kāi)展了功能和性能測(cè)試,具體包括:
(1) 數(shù)據(jù)傳輸功能測(cè)試;
(2) 性能測(cè)試
1)誤碼率測(cè)試;
2)數(shù)據(jù)傳輸速率測(cè)試.
4.2.1 數(shù)據(jù)傳輸功能測(cè)試
測(cè)試方法是:以圖2中的終端節(jié)點(diǎn)1為源節(jié)點(diǎn),再分別以終端節(jié)點(diǎn)1,2,3,4為目的節(jié)點(diǎn),開(kāi)展數(shù)據(jù)包大小為1000個(gè)字節(jié)的數(shù)據(jù)傳輸測(cè)試,若目的節(jié)點(diǎn)正確接收到數(shù)據(jù)則測(cè)試通過(guò).
圖9中,左側(cè)顯示的是源節(jié)點(diǎn)1的發(fā)送緩沖區(qū)內(nèi)容,右側(cè)顯示的是目的節(jié)點(diǎn)分別為1、2、3、4時(shí)的接收緩沖區(qū)內(nèi)容.為了便于區(qū)分,終端節(jié)點(diǎn)1和2使用了不同的光模塊,由于每個(gè)光模塊對(duì)應(yīng)不同的接收緩沖區(qū),從而圖9右側(cè)顯示的四個(gè)起始地址也不同,分別為:0x70000000、0x70001000、0x70002000和0x70003000.通過(guò)比較發(fā)送緩沖區(qū)和接收緩沖區(qū)的內(nèi)容可以發(fā)現(xiàn)數(shù)據(jù)是完全一致的,因此測(cè)試通過(guò).
4.2.2 性能測(cè)試
(1) 誤碼率測(cè)試
誤碼率測(cè)試的方法是:首先將終端板卡1上的光模塊1與光模塊2進(jìn)行連接,然后設(shè)計(jì)FPGA內(nèi)部的處理器軟件,生成偽隨機(jī)測(cè)試序列[11],接著由終端節(jié)點(diǎn)2將數(shù)據(jù)發(fā)送出去,再經(jīng)過(guò)光纖鏈路回到終端節(jié)點(diǎn)1,最后由處理器軟件對(duì)發(fā)送和接收的數(shù)據(jù)進(jìn)行比對(duì),檢查是否存在誤碼.
在實(shí)際測(cè)試過(guò)程中,基于上述方法連續(xù)測(cè)試了58個(gè)小時(shí),共發(fā)送和接收了3476823008000 bit數(shù)據(jù),對(duì)發(fā)送和接收數(shù)據(jù)進(jìn)行比對(duì)后未發(fā)現(xiàn)1位誤碼,因此由文獻(xiàn)[12]可估計(jì)得到誤碼率以大于95%的置信度等于1×10-12(圖10和圖11是發(fā)送數(shù)據(jù)存儲(chǔ)區(qū)和接收數(shù)據(jù)存儲(chǔ)區(qū)的比對(duì)情況).
圖9 數(shù)據(jù)傳輸測(cè)試結(jié)果Fig.9 Results of data transmission testing
圖10 發(fā)送存儲(chǔ)區(qū)數(shù)據(jù)Fig.10 Transmitting data in memory
圖11 接收存儲(chǔ)區(qū)數(shù)據(jù)Fig.11 Received data in memory
比較圖10和圖11可發(fā)現(xiàn),發(fā)送和接收存儲(chǔ)區(qū)中的數(shù)據(jù)是完全相同的,并且都是沒(méi)有規(guī)律的隨機(jī)數(shù).
(2) 數(shù)據(jù)傳輸速率測(cè)試
數(shù)據(jù)傳輸速率測(cè)試細(xì)分為兩部分,第一部分是協(xié)議鏈路層傳輸速率測(cè)試,第二部分是應(yīng)用層傳輸速率測(cè)試.
第一部分的測(cè)試方法是:在協(xié)議IP與GTH收發(fā)器之間設(shè)計(jì)一個(gè)64位的計(jì)數(shù)器,每次傳輸后計(jì)數(shù)器加1,計(jì)數(shù)器的數(shù)值被寫(xiě)入寄存器供處理器訪問(wèn).處理器上運(yùn)行的測(cè)試軟件由主程序持續(xù)進(jìn)行數(shù)據(jù)傳輸,然后啟動(dòng)一個(gè)定時(shí)器,在每次定時(shí)器中斷處理函數(shù)中讀取傳輸計(jì)數(shù)器的數(shù)值Ci,接著取相鄰兩次數(shù)值的差值ΔC=(Ci+Δt-Ci),最后由ΔC/Δt計(jì)算出的結(jié)果即為協(xié)議鏈路層傳輸速率.在測(cè)試軟件運(yùn)行過(guò)程中,實(shí)際測(cè)得的結(jié)果約為2 Gb/s.
第二部分的測(cè)試方法是:由測(cè)試軟件的主程序發(fā)起連續(xù)的數(shù)據(jù)傳輸并啟動(dòng)1個(gè)定時(shí)器(每10 ms觸發(fā)1次中斷),每次傳輸?shù)臄?shù)據(jù)包大小為1 000個(gè)字節(jié),并在每次傳輸后將傳輸計(jì)數(shù)器值TxCnt加1,每執(zhí)行一次定時(shí)器中斷處理函數(shù)對(duì)時(shí)間值TmCnt加1,當(dāng)傳輸達(dá)到規(guī)定的時(shí)間后,按照公式8×105×TxCnt/TmCnt進(jìn)行計(jì)算即可求得應(yīng)用層傳輸速率.在測(cè)試軟件運(yùn)行過(guò)程中,實(shí)際測(cè)得的結(jié)果約為413.4 Mb/s.
綜合以上實(shí)驗(yàn)情況,可得到如表1所示的測(cè)試結(jié)果.
表1 測(cè)試結(jié)果Tab.1 Testing results
在表1中,數(shù)據(jù)傳輸測(cè)試由于是功能性,因此當(dāng)通過(guò)路由轉(zhuǎn)發(fā)進(jìn)行數(shù)據(jù)傳輸都滿(mǎn)足測(cè)試要求后可得出測(cè)試正確通過(guò)的結(jié)論,誤碼率和數(shù)據(jù)傳輸率都是性能測(cè)試,利用測(cè)試軟件開(kāi)展測(cè)試驗(yàn)證后分別得到表中的數(shù)值.需要說(shuō)明的是,應(yīng)用層最大數(shù)據(jù)傳輸率是加上軟件運(yùn)行開(kāi)銷(xiāo)后測(cè)得的結(jié)果,因此在數(shù)值上明顯小于鏈路層最大數(shù)據(jù)傳輸率.
本文在對(duì)國(guó)內(nèi)外研究現(xiàn)狀進(jìn)行歸納總結(jié)的基礎(chǔ)上,指出了傳統(tǒng)SpaceWire總線技術(shù)雖然在航天器上應(yīng)用廣泛,但是存在傳輸速率低的弱點(diǎn).針對(duì)這一不足,本文首先提出了高速SpaceWire系統(tǒng)架構(gòu).在此基礎(chǔ)上開(kāi)展了高速SpaceWire終端節(jié)點(diǎn)和路由節(jié)點(diǎn)的FPGA設(shè)計(jì).其中,關(guān)于終端節(jié)點(diǎn)部分對(duì)物理接口、片上總線和DMA設(shè)計(jì)進(jìn)行了著重論述;路由節(jié)點(diǎn)部分重點(diǎn)解決了目的端口仲裁模塊和組尋址路由模塊的設(shè)計(jì)問(wèn)題.在測(cè)試驗(yàn)證部分,開(kāi)展了數(shù)據(jù)傳輸測(cè)試、誤碼率測(cè)試和數(shù)據(jù)傳輸率測(cè)試,測(cè)試結(jié)果表明高速光纖SpaceWire系統(tǒng)不僅數(shù)據(jù)傳輸功能正確,而且誤碼率以大于95%的置信度等于1×10-12,在鏈路層最大數(shù)據(jù)傳輸率2 Gbps的前提下應(yīng)用層軟件的傳輸速率最大可達(dá)到413.4 Mb/s.本文的研究工作已經(jīng)設(shè)計(jì)實(shí)現(xiàn)了可成功組網(wǎng)的吉比特級(jí)終端節(jié)點(diǎn)和路由節(jié)點(diǎn),具備主要功能且技術(shù)指標(biāo)較先進(jìn),從而為高速SpaceWire技術(shù)在航天器上的工程應(yīng)用創(chuàng)造了良好的條件.