, ,
(北京空間飛行器總體設(shè)計(jì)部,北京 100094)
隨著航天技術(shù)的發(fā)展及高分辨率對地觀測、深空探測等衛(wèi)星的牽引,為滿足航天器各系統(tǒng)之間高速數(shù)據(jù)多路傳輸?shù)男枨螅珽SA基于IEEE1355-1995和IEEE1596.3提出了專用于航天器的SpaceWire高速數(shù)據(jù)總線標(biāo)準(zhǔn)[1],SpaceWire總線的工作速率是2~400 Mb/s,支持點(diǎn)到點(diǎn)、全雙工的連接和基于路由開關(guān)的交換式網(wǎng)絡(luò)拓?fù)?。該?biāo)準(zhǔn)具有通信速率高、容錯(cuò)性強(qiáng)、實(shí)現(xiàn)簡單、可靠性高等特點(diǎn),并且宇航器件支持的碼速率已達(dá)到200Mbps以上,符合空間抗輻照環(huán)境應(yīng)用要求。
目前,從公開的文獻(xiàn)中還未有專門針對航天器上通用的SpaceWire總線路由設(shè)備的設(shè)計(jì)方案。本文設(shè)計(jì)一種航天器通用SpaceWire總線路由設(shè)備,對外提供多路標(biāo)準(zhǔn)SpaceWire接口,實(shí)現(xiàn)SpaceWire數(shù)據(jù)包按照配置參數(shù)在任意SpaceWire端口間的一對一路由傳輸、一對多組播傳輸,路由單元提供的通用功能能夠滿足大部分航天器SpaceWire網(wǎng)絡(luò)的需求。
SpaceWire網(wǎng)絡(luò)數(shù)據(jù)鏈路接口協(xié)議遵循ECSS-E-ST-50-12C標(biāo)準(zhǔn):《SpaceWire - Links, nodes, routers and networks》的規(guī)定。各結(jié)點(diǎn)設(shè)備的SpaceWire鏈路接口特性應(yīng)符合此標(biāo)準(zhǔn)的各項(xiàng)要求。
SpaceWire數(shù)據(jù)鏈路協(xié)議包括物理層、信號層、字符層、交換層、數(shù)據(jù)包層和網(wǎng)絡(luò)層共6層規(guī)范,其中信號層、字符層、交換層由SpaceWire鏈路接口芯片實(shí)現(xiàn),而物理層、數(shù)據(jù)包層和網(wǎng)絡(luò)層與SpaceWire網(wǎng)絡(luò)系統(tǒng)的軟硬件設(shè)計(jì)相關(guān),以下對系統(tǒng)應(yīng)用相關(guān)的主要內(nèi)容進(jìn)行說明。
SpaceWire電纜選用須滿足ESCC 3902/003規(guī)范或國內(nèi)兼容規(guī)范,電纜結(jié)構(gòu)如圖1所示,由4對帶獨(dú)立屏蔽層的雙絞線組成,同時(shí)包含一個(gè)整體屏蔽層,以及絕緣材料和填充物等。電纜中每對雙絞線構(gòu)成一組差分信號線對。
SpaceWire信號在PCB板上傳輸時(shí),要求每對差分信號通過差分阻抗為(100±6)Ω的平行緊鄰PCB線傳輸,每對差分信號的正、負(fù)信號線之間以及同向兩對信號線之間的布線長度差異小于5%且不超過5 mm。
圖1 電纜結(jié)構(gòu)
SpaceWire連接器采用帶有焊接觸點(diǎn)或壓接觸點(diǎn)的9針微D形連接器,連接器規(guī)格滿足ESCC 3401/071規(guī)范或國內(nèi)兼容規(guī)范。整個(gè)電纜為對稱結(jié)構(gòu),電纜內(nèi)部信號線在兩端連接器之間交叉連接,實(shí)現(xiàn)全雙工傳輸。兩組輸出差分對(Dout+與Dout-,Sout+與Sout-)的屏蔽層與連接器的第3腳共同連接在一起,單端接地。
SpaceWire信號層采用適合高速數(shù)據(jù)傳輸?shù)牡碗妷翰罘中盘?LVDS)電平標(biāo)準(zhǔn),保證數(shù)據(jù)的長距離、低功耗傳輸。信號傳輸方式采用Data-Strobe編碼,提高在高速、長距離傳輸情況下的數(shù)據(jù)位同步容限。在DS編碼中,Data信號的電平變化與要發(fā)送的數(shù)據(jù)比特流保持一致, Strobe信號在相鄰的2個(gè)Data信號比特位保持不變時(shí)改變狀態(tài),否則保持不變。DS編碼示意圖如圖2所示。
圖2 Data-Strobe編碼
SpaceWire數(shù)據(jù)鏈路層與物理層間的傳輸通過兩種類型的字符:數(shù)據(jù)字符和控制字符。數(shù)據(jù)字符用于在鏈路上傳輸數(shù)據(jù)信息,控制字符用于在鏈路上傳輸控制信息。
1.3.1 數(shù)據(jù)字符
數(shù)據(jù)字符編碼為10bit,由1bit校驗(yàn)位、1bit字符類型標(biāo)志和8bit數(shù)據(jù)組成。字符類型標(biāo)志位為“0”表示為數(shù)據(jù)字符,8bit數(shù)據(jù)應(yīng)按最低有效位先輸出的方式進(jìn)行。數(shù)據(jù)字符的格式如圖3所示。
圖3 數(shù)據(jù)字符格式
1.3.2 控制字符
控制字符編碼為4bit,其中包括1bit校驗(yàn)位、1bit字符類型標(biāo)志和2bit控制類型信息。字符類型標(biāo)志位為“1”代表為控制字符,字符傳輸時(shí)低位在前??刂谱址袷饺鐖D4所示。
圖4 控制字符格式
FCT為流控制字符,即當(dāng)控制符合中的2bit控制類型為0b00時(shí);流控制字符控制鏈路傳輸數(shù)據(jù)過程中的數(shù)據(jù)流;
當(dāng)控制符合中的2bit控制類型為0b01時(shí),表示正常包結(jié)束符(EOP), 當(dāng)控制符合中的2bit控制類型為0b10時(shí),表示錯(cuò)誤包結(jié)束符(EEP);在數(shù)據(jù)包正確傳輸時(shí),數(shù)據(jù)包結(jié)束符采用EOP,在數(shù)據(jù)包傳輸過程中發(fā)生錯(cuò)誤時(shí),數(shù)據(jù)包結(jié)束標(biāo)志采用EEP。
1.3.3 控制碼
控制碼的第一個(gè)字符為ESC,即輔助控制字符。
由控制字符和數(shù)據(jù)字符可以組合為2個(gè)控制碼,分別為NULL控制碼和BC廣播碼。在ESC字符后連接FCT字符構(gòu)成空碼(NULL),用于在沒有數(shù)據(jù)發(fā)送時(shí),維持?jǐn)?shù)據(jù)鏈路的連接活動(dòng)狀態(tài)。
在ESC字符后連接一個(gè)數(shù)據(jù)字符構(gòu)成廣播碼(BC),可以用于在SpaceWire網(wǎng)絡(luò)中廣播系統(tǒng)時(shí)間。數(shù)據(jù)字符的低6位包含系統(tǒng)時(shí)間信息,數(shù)據(jù)字符的高2位為保留位。2個(gè)控制碼格式如圖5所示。
圖5 控制碼格式
1.3.4 校驗(yàn)規(guī)則
數(shù)據(jù)或者控制字符中包含1bit校驗(yàn)位,用于傳輸過程中的錯(cuò)誤檢驗(yàn),每個(gè)字符的最低位為校驗(yàn)位,采用奇校驗(yàn)方式生成。校驗(yàn)位覆蓋的范圍包括位于前面的已編碼數(shù)據(jù)字符的8bit或者控制字符的2bit、當(dāng)前校驗(yàn)位以及當(dāng)前類型標(biāo)志[2]。奇校驗(yàn)方式如圖6所示。
圖6 奇校驗(yàn)方式示意圖
每條全雙工、雙向、串行的Spacewire鏈路可提供2Mbps~400Mbps的數(shù)據(jù)速率,鏈路上的信息以串行比特流方式發(fā)送/接收,每個(gè)方向包括數(shù)據(jù)(Data)和選通(Strobe)2個(gè)信號。依據(jù)標(biāo)準(zhǔn),Data和Strobe信號均按照LVDS電平在鏈路上傳輸,每個(gè)信號使用一對差分信號線,因此一條Spacewire電纜中包括4組屏蔽雙絞線。
Spacewire鏈路采用發(fā)送串行數(shù)據(jù)的同時(shí)發(fā)送時(shí)鐘信號來實(shí)現(xiàn)位同步,為了降低對時(shí)鐘與數(shù)據(jù)之間偏斜的要求,將時(shí)鐘信號編碼為Strobe信號,Data信號仍采用數(shù)據(jù)與控制字符原碼傳輸。字符同步僅在鏈路啟動(dòng)時(shí)完成一次,之后如果發(fā)生同步失效,則會引起校驗(yàn)錯(cuò)誤,鏈路檢測到后會重啟鏈路。
SpaceWire鏈路上采用獨(dú)立的包傳送信息,包在鏈路的2個(gè)方向均可發(fā)送,但發(fā)送時(shí)需要相應(yīng)的接收器中提供緩存空間。包起始部分 “目的地址”包含目的節(jié)點(diǎn)的標(biāo)識或包通過SpaceWire網(wǎng)絡(luò)傳送到目的節(jié)點(diǎn)的路徑信息。對于2個(gè)節(jié)點(diǎn)之間點(diǎn)對點(diǎn)直接連接的情況,可不使用目的地址。一個(gè)SpaceWire包中的內(nèi)容可傳輸任意字節(jié)長度的數(shù)據(jù)。 包尾部最后一個(gè)字符為“包結(jié)束符”,包括正常包結(jié)束符EOP和異常包結(jié)束符EEP兩種情況。
在包結(jié)束符之后傳輸?shù)牡谝粋€(gè)數(shù)據(jù)字符為下一個(gè)包的起始字符。SpaceWire包的大小無限制。
Spacewire總線網(wǎng)絡(luò)可將航天器上的科學(xué)載荷、大數(shù)據(jù)存儲器、各系統(tǒng)計(jì)算單元、天地鏈路數(shù)據(jù)處理器等以及其他子系統(tǒng)設(shè)備連接成一個(gè)統(tǒng)一的網(wǎng)絡(luò)系統(tǒng)。Spacewire采用高速、雙向、全雙工的數(shù)據(jù)鏈路傳輸,基于包交換技術(shù)的路由機(jī)理,能夠支持各種航天器應(yīng)用需求的數(shù)據(jù)網(wǎng)絡(luò)架構(gòu)。
本設(shè)計(jì)借鑒以太網(wǎng)標(biāo)準(zhǔn)接口的路由器設(shè)計(jì)方法[3],提供一種“黑盒”裝置,用戶可以實(shí)現(xiàn)SpaceWire總線接口設(shè)備的即插即用[4],任意兩者之間可實(shí)現(xiàn)動(dòng)態(tài)鏈接,建立數(shù)據(jù)包的一對一、一對多傳輸通道。SpaceWire網(wǎng)絡(luò)以路由單元為中心,建立星型拓?fù)浣Y(jié)構(gòu),如圖7所示。各節(jié)點(diǎn)設(shè)備SpaceWire鏈路接口特性應(yīng)符合ECSS-E-ST-50-12C標(biāo)準(zhǔn):《SpaceWire - Links, nodes, routers and networks》的規(guī)定。這樣的設(shè)計(jì)可以隨時(shí)接受外圍的SpaceWire節(jié)點(diǎn)設(shè)備的接入或者拔出,支持SpaceWire接口的自適應(yīng)路由功能,實(shí)現(xiàn)高速SpaceWire總線接口組網(wǎng)設(shè)備的便利操作。
圖7 Spacewire網(wǎng)絡(luò)拓?fù)鋱D
SpaceWire總線路由單元是以Xinlinx FPGA為控制核心的基本系統(tǒng),選用ATMEL公司的高速SpaceWire路由芯片AT7910E實(shí)現(xiàn)SpaceWire路由協(xié)議處理,同時(shí)輔以LVDS標(biāo)準(zhǔn)收發(fā)芯片SNJ55LVDS32W和SNJ55LVDS31W實(shí)現(xiàn)標(biāo)準(zhǔn)的SpaceWire總線接口功能[5]。主要功能包括:
1)數(shù)據(jù)路由功能:通過各SpaceWire總線接口接收SpaceWire結(jié)點(diǎn)設(shè)備發(fā)送的數(shù)據(jù)包,根據(jù)包頭路由地址信息進(jìn)行傳輸控制支持路徑尋址和邏輯尋址兩種方式,當(dāng)采用路徑尋址方式時(shí),將數(shù)據(jù)包導(dǎo)向包頭指定的物理端口,并刪除包頭地址信息;當(dāng)采用邏輯尋址方式時(shí),根據(jù)包頭路由地址信息查詢內(nèi)部路由表,并將完整的數(shù)據(jù)包導(dǎo)向路由表中指定物理端口;
2)路由表配置功能:支持通過SpaceWire鏈路接口配置路由單元內(nèi)部全部路由表,配置協(xié)議支持遠(yuǎn)程存儲訪問協(xié)議(RMAP)。
SpaceWire總線路由單元的邏輯及控制功能都是由中央控制器FPGA來完成的,包括AT7910E協(xié)議芯片的復(fù)位、配置和初始化等,同時(shí)所有AT7910E的收發(fā)FIFO接口(9,10)端口均連接到FPGA上,且AT7910E的內(nèi)部端口組成內(nèi)部冗余鏈[6]。由圖8所示,三片路由芯片的外部端口組成了一個(gè)閉合的鏈路,內(nèi)部也構(gòu)成了一個(gè)冗余鏈路,因此從一片AT7910E外部任意一個(gè)端口均可以到達(dá)其他兩片AT7910E的內(nèi)部端口和外部端口。
圖8 路由單元原理框圖
AT7910E芯片包含8個(gè)SpaceWire接口和2個(gè)FIFO端口。在設(shè)計(jì)中AT7910E芯片采用級聯(lián)的連接方式,各芯片通過鏈路1和8端口串聯(lián)在一起,3片AT7910E芯片形成一個(gè)環(huán)形的連接方式。每個(gè)芯片對外輸出6路端口,分別是端口2至端口7,共計(jì)18路端口。芯片通過2路FIFO端口與FPGA相連,F(xiàn)PGA通過本地FIFO端口完成對AT7910E的管理和控制。每個(gè)FIFO的讀寫都與系統(tǒng)時(shí)鐘同步。每個(gè)端口提供了一個(gè)8bit的數(shù)據(jù)口和1bit的控制口用于標(biāo)識包的結(jié)束。到達(dá)外部端口的數(shù)據(jù)包根據(jù)數(shù)據(jù)包的目的地址可以被路由到配置寄存器、其他的SpaceWire鏈路或另一個(gè)外部端口。如果一個(gè)數(shù)據(jù)包的目的地址是無效的,該數(shù)據(jù)包將會被路由器拋掉。
同時(shí),如圖8所示,為了完成在軌可升級的功能,路由單元專門設(shè)計(jì)了重構(gòu)電路,由一個(gè)“可寫”的存儲器作為FPGA的配置存儲器,通過在軌更換配置存儲器內(nèi)的程序數(shù)據(jù),重新對FPGA內(nèi)邏輯進(jìn)行配置,實(shí)現(xiàn)算法的在軌重構(gòu)。FPGA的配置數(shù)據(jù)存儲在外部的存儲器內(nèi),通過加載配置數(shù)據(jù)來實(shí)現(xiàn)所需的邏輯功能。FPGA的邏輯配置過程就是將配置數(shù)據(jù)通過專用的配置接口寫到FPGA內(nèi)配置寄存器的過程。這一過程包括一系列的控制命令字、特定格式的配置數(shù)據(jù)寫入、配置過程數(shù)據(jù)校驗(yàn)、芯片管腳電平控制等工作,需要按照Xilinx FPGA芯片內(nèi)部的專用接口時(shí)序,設(shè)計(jì)專門的配置電路和程序來實(shí)現(xiàn)。
中央控制器FPGA軟件一方面實(shí)現(xiàn)AT7910E芯片的讀寫操作的接口時(shí)序,另一方面實(shí)現(xiàn)AT7910E協(xié)議芯片的寄存器配置和初始化操作,以及AT7910E的上電復(fù)位和時(shí)鐘配置。路由單元軟件配置流程如圖9所示。
圖9 軟件配置流程圖
同時(shí)FPGA軟件主要實(shí)現(xiàn)各鏈路節(jié)點(diǎn)間的數(shù)據(jù)包路由邏輯控制,實(shí)現(xiàn)分布式網(wǎng)絡(luò)中斷傳輸控制功能和網(wǎng)絡(luò)時(shí)間同步功能,完成各鏈路節(jié)點(diǎn)的數(shù)據(jù)流監(jiān)測以及錯(cuò)誤檢測和恢復(fù),保證SpaceWire鏈路接口之間能夠正常的進(jìn)行數(shù)據(jù)通信。中央控制器FPGA內(nèi)部邏輯處理框圖如圖10所示。
圖10 中央控制器FPGA內(nèi)部處理框圖
FPGA軟件將三片路由協(xié)議芯片的FIFO端口連接,實(shí)現(xiàn)各路由芯片的開關(guān)和數(shù)據(jù)交互。各SpaceWire節(jié)點(diǎn)間路由采用動(dòng)態(tài)方式,結(jié)點(diǎn)和結(jié)點(diǎn)之間以及結(jié)點(diǎn)和路由器之間無固定的數(shù)據(jù)通道,數(shù)據(jù)包在網(wǎng)絡(luò)中傳輸時(shí),根據(jù)包頭中包含的路由地址進(jìn)行動(dòng)態(tài)路由,實(shí)時(shí)確定傳輸路徑,不同源結(jié)點(diǎn)和目的結(jié)點(diǎn)之間的通信數(shù)據(jù)可以通過動(dòng)態(tài)路由方式共用一條鏈路完成交叉?zhèn)鬏?,從而通過有限的物理鏈路建立起大量的節(jié)點(diǎn)之間的“虛擬信道”。
通過上文設(shè)計(jì)方案,路由單元實(shí)現(xiàn)的主要功能如下:
每個(gè)SpaceWire鏈路均有相應(yīng)的鏈路寄存器及路由控制邏輯進(jìn)行控制。到達(dá)鏈路的數(shù)據(jù)包根據(jù)數(shù)據(jù)包的目的地址可以被路由到配置寄存器、其他的SpaceWire鏈路或外部端口。如果一個(gè)數(shù)據(jù)包的目的地址是無效的,該數(shù)據(jù)包將會被路由器拋掉。SpaceWire鏈路的狀態(tài)將會被記錄在鏈路寄存器中,錯(cuò)誤狀態(tài)也將一直被保留,直到通過配置命令將其清除。
每個(gè)端口提供了一個(gè)8bit的數(shù)據(jù)口和1bit的控制口用于標(biāo)識包的結(jié)束。到達(dá)外部端口的數(shù)據(jù)包根據(jù)數(shù)據(jù)包的目的地址可以被路由到配置寄存器、其他的SpaceWire鏈路或另一個(gè)外部端口。如果一個(gè)數(shù)據(jù)包的目的地址是無效的,該數(shù)據(jù)包將會被路由器拋掉[6]。
路由控制邏輯用來控制開關(guān)、仲裁以及群適應(yīng)路由。當(dāng)有2個(gè)或更多的端口要訪問同一個(gè)目的端口時(shí)需要根據(jù)端口的優(yōu)先級進(jìn)行仲裁。無阻塞開關(guān)用來連接輸入輸出端口,使數(shù)據(jù)從入口傳送到出口。多個(gè)輸入端口可以同時(shí)與多個(gè)輸出端口連接都傳輸數(shù)據(jù)而互不影響。2個(gè)或多個(gè)輸入端口不能與同一個(gè)輸出端口連接。每一對輸入輸出的連接與其他一對不會產(chǎn)生影響。
在路由器中采用了一個(gè)內(nèi)部時(shí)間碼寄存器。該寄存器可以配置路由器為時(shí)間主或時(shí)間從模式。在主模式下,時(shí)間碼接口用來提供“tick_in”信號到SpaceWire路由器,來驅(qū)動(dòng)時(shí)間碼通過整個(gè)網(wǎng)絡(luò)傳遞。在主模式操作下支持兩種操作模式:自動(dòng)模式和常規(guī)模式。在自動(dòng)模式下,時(shí)間碼依據(jù)“tick_in”信號來進(jìn)行傳遞;在常規(guī)模式下,時(shí)間碼要依據(jù)外部的“time_in”信號進(jìn)行傳遞。在從模式下,接收到一個(gè)有效的時(shí)間碼后,路由器將會有效“tick_out”信號并將其發(fā)送到SpaceWire鏈路和外部時(shí)間碼接口[7]。
某衛(wèi)星平臺采用了該方案SpaceWire總線網(wǎng)絡(luò)路由單元,已成功地實(shí)現(xiàn)了平臺數(shù)據(jù)業(yè)務(wù)與載荷數(shù)據(jù)業(yè)務(wù)的路由功能,完成了衛(wèi)星中高速業(yè)務(wù)數(shù)據(jù)和控制數(shù)據(jù)的路由傳輸業(yè)務(wù),同時(shí)支持全網(wǎng)絡(luò)時(shí)間碼廣播,提供網(wǎng)絡(luò)同步功能。根據(jù)測試結(jié)果,每路接口工作速率最大可達(dá)到200Mbps,路由單元提供的通用功能能夠滿足大部分航天器SpaceWire網(wǎng)絡(luò)的需求。測試結(jié)果如表1所示,能夠滿足未來星船高速數(shù)據(jù)路由需求。
表1 路由器性能表
基于Spacewire高速總線實(shí)現(xiàn)的路由單元可以提高衛(wèi)星平臺及載荷數(shù)據(jù)業(yè)務(wù)的傳輸效率,簡化衛(wèi)星數(shù)據(jù)流的設(shè)計(jì)。該設(shè)計(jì)采用標(biāo)準(zhǔn)化接口,實(shí)現(xiàn)了組網(wǎng)設(shè)備的即插即用功能,支持?jǐn)?shù)據(jù)包的自適應(yīng)路由,同時(shí)該路由單元支持在軌可重構(gòu)功能,可應(yīng)用于不同型號的星載SpaceWire總線網(wǎng)絡(luò)構(gòu)建,符合未來航天器的發(fā)展需求。