文獻(xiàn)標(biāo)識(shí)碼: A
DOI:10.16157/j.issn.0258-7998.2016.01.028
中文引用格式: 閆夢(mèng)婷,安軍社,龔泉銘. 基于RMAP機(jī)制的SpaceWire星載高速總線設(shè)計(jì)與實(shí)現(xiàn)[J].電子技術(shù)應(yīng)用,2016,42(1):108-110,114.
英文引用格式: Yan Mengting,An Junshe,Gong Quanming. Design and implement of SpaceWire on-board high speed bus based on RMAP protocol[J].Application of Electronic Technique,2016,42(1):108-110,114.
0 引言
SpaceWire高速總線標(biāo)準(zhǔn)是ESA(European Space Agency)于2003年正式通過的一種總線標(biāo)準(zhǔn)。ESA基于IEEE 1355-1995和IEEE 1596.3(LVDS)兩個(gè)商用總線標(biāo)準(zhǔn),并且根據(jù)航天應(yīng)用的特點(diǎn),在可靠性、功耗等方面進(jìn)行了改進(jìn),實(shí)現(xiàn)了一種串行、高速、點(diǎn)對(duì)點(diǎn)、全雙工的專用于空間高速數(shù)據(jù)傳輸?shù)目偩€標(biāo)準(zhǔn)。該標(biāo)準(zhǔn)提供了一種統(tǒng)一用來連接傳感器、數(shù)據(jù)處理單元、大容量存儲(chǔ)器的基礎(chǔ)架構(gòu),具有很好的EMC特性,并且在錯(cuò)誤檢測(cè)、異常處理、故障保護(hù)和故障恢復(fù)及時(shí)間確定性方面也做了相應(yīng)加強(qiáng)。使得SpaceWire能夠滿足新一代航天器電子系統(tǒng)對(duì)總線結(jié)構(gòu)的性能要求,具有獨(dú)特優(yōu)勢(shì)。
SpaceWire由節(jié)點(diǎn)、鏈路和路由3部分組成,在基礎(chǔ)協(xié)議簇中對(duì)這3個(gè)重要單元進(jìn)行了定義和功能設(shè)計(jì),目前已有成熟的IP核、軟件支持和測(cè)試設(shè)備等研究成果,使得SpaceWire應(yīng)用于多個(gè)空間任務(wù)中。SpaceWire能夠在物理層和數(shù)據(jù)鏈接層滿足空間航天器中標(biāo)準(zhǔn)化的高速率網(wǎng)絡(luò)交互需求,SpaceWire工作組目前致力于高層協(xié)議的研究,擬定首個(gè)SpaceWire高層協(xié)議,即RMAP(Remote Memory Access Protocol)。
國(guó)際上擁有SpaceWire協(xié)議IP核產(chǎn)品的公司與科研機(jī)構(gòu)主要包括STAR-dundee和ESA等,相關(guān)產(chǎn)品主要包括Codec和Router IP核,不同型號(hào)FPGA的實(shí)現(xiàn)性能則差異明顯,GRSPW2 IP核集成的Codec模塊在Xilinx基于SRAM的Virtex2系列FPGA中實(shí)現(xiàn)的收發(fā)數(shù)據(jù)率可達(dá)200 Mb/s,但在Actel公司的反熔絲RTAX系列FPGA實(shí)現(xiàn)性能僅為100 Mb/s[1]。目前基于flash技術(shù)FPGA可實(shí)現(xiàn)的性能為180 Mb/s,該性能指標(biāo)為ESA的Codec IP核在速度等級(jí)為-2的ProASIC3 系列FPGA中的實(shí)現(xiàn)結(jié)果[2]。
目前我國(guó)已對(duì)SpaceWire開展研究并取得一定成果。文獻(xiàn)[3]完成了SpaceWire鏈路接口IP核和SpaceWire與PCI總線之間的接口卡設(shè)計(jì),SpaceWire鏈路接口工作速度可達(dá)100 Mb/s。文獻(xiàn)[4-5]對(duì)SpaceWire在運(yùn)載火箭中的應(yīng)用以及實(shí)時(shí)分布式中斷系統(tǒng)設(shè)計(jì)進(jìn)行了研究。文獻(xiàn)[6]主要對(duì)SpaceWire CODEC IP核進(jìn)行了設(shè)計(jì),鏈路速度可達(dá)80 Mb/s。本文在SpaceWire節(jié)點(diǎn)、鏈路和路由3個(gè)重要單元的基礎(chǔ)上,設(shè)計(jì)了基于RMAP的SpaceWire路由工作機(jī)制。為SpaceWire總線中各節(jié)點(diǎn)間的功能提供了標(biāo)準(zhǔn)化工作機(jī)制。
1 SpaceWire總線整體架構(gòu)設(shè)計(jì)
SpaceWire總線網(wǎng)絡(luò)由節(jié)點(diǎn)、鏈路和路由器三種基本單元組成。SpaceWire節(jié)點(diǎn)是指?jìng)鬏敯牧鞒鲈O(shè)備或者流向設(shè)備,一般是處理器、存儲(chǔ)單元、傳感器或連接在SpaceWire網(wǎng)絡(luò)上的其它單元。SpaceWire鏈路是指?jìng)魉蛿?shù)據(jù)包的傳輸路徑,連接在各個(gè)節(jié)點(diǎn)之間,數(shù)據(jù)包通過鏈路進(jìn)行傳輸通信。SpaceWire路由則實(shí)現(xiàn)了節(jié)點(diǎn)通過鏈路進(jìn)行數(shù)據(jù)交換機(jī)制。本設(shè)計(jì)中基于RMAP高層協(xié)議的SpaceWire總線整體架構(gòu)如圖1所示。
圖中節(jié)點(diǎn)(Note)、鏈路(Link)和路由器(Router)是構(gòu)成SpaceWire總線的基本單元。節(jié)點(diǎn)用于連接外接設(shè)備和總線,節(jié)點(diǎn)模塊包括RMAP外設(shè)控制模塊(Ctr_RMAP)和編解碼器模塊(CODEC)。外接設(shè)備數(shù)據(jù)接口連接到節(jié)點(diǎn)中RMAP外設(shè)控制模塊里的FIFO(First-In-First-Out)中,數(shù)據(jù)經(jīng)過RMAP外設(shè)控制模塊處理為符合RMAP傳輸要求的數(shù)據(jù)包后,通過編解碼器進(jìn)行編碼,鏈路傳輸至SpaceWire總線路由器。圖1中內(nèi)部包含8個(gè)編解碼器,編解碼器接收到數(shù)據(jù)包后,通過接收模塊(Re_part)進(jìn)行譯碼,然后通過RMAP路由器進(jìn)行路由,送至目的地址,通過目的地址接口的編解碼器進(jìn)行編碼,輸出總線路由器。編解碼器同時(shí)在節(jié)點(diǎn)和路由器中調(diào)用,主要包括接收模塊、發(fā)送模塊以及控制模塊。接收模塊實(shí)現(xiàn)接收數(shù)據(jù)包及譯碼功能,發(fā)送模塊實(shí)現(xiàn)發(fā)送數(shù)據(jù)包及編碼功能??刂颇K則實(shí)現(xiàn)了編解碼器執(zhí)行收發(fā)數(shù)據(jù)包功能的狀態(tài)機(jī)。
2 SpaceWire編解碼器優(yōu)化設(shè)計(jì)
SpaceWire基礎(chǔ)協(xié)議定義了信號(hào)層、字符層和交換層,這幾個(gè)低層協(xié)議定義的功能由編解碼器實(shí)現(xiàn)。SpaceWire總線的信號(hào)層定義了SpaceWire總線中傳輸信號(hào)的電壓水平、噪聲幅度和編碼方式。指定采用低壓差分信號(hào)(LVDS)作為信令技術(shù),這是由于LVDS是一種高速數(shù)據(jù)傳輸、省電、抑制噪聲、成本低以及可以采用較高集成度的技術(shù),能夠滿足供電電流低、功率低的要求,有助于降低系統(tǒng)成本。
2.1 DS解碼電路的優(yōu)化設(shè)計(jì)
SpaceWire總線的信號(hào)編碼采用DS(Data-Strobe)編碼。DS編碼如式(1)和式(2)定義:
根據(jù)上述公式,搭建門電路時(shí)若用簡(jiǎn)單的組合邏輯實(shí)現(xiàn)異或,容易產(chǎn)生競(jìng)爭(zhēng)冒險(xiǎn),導(dǎo)致接收到的數(shù)據(jù)異常。為了對(duì)該現(xiàn)象進(jìn)行改進(jìn),探討DS信號(hào)變化的內(nèi)在規(guī)律。從圖2中左圖可見,DS信號(hào)的每次轉(zhuǎn)換有且只變換其中的1位信號(hào),通過2次變換后DS數(shù)據(jù)都將發(fā)生翻轉(zhuǎn)。
從DS編碼規(guī)律可知,有且只有當(dāng)時(shí)鐘信號(hào)為上升沿時(shí),D和S信號(hào)發(fā)生從同相至反相的跳變;同理,有且只有當(dāng)時(shí)鐘信號(hào)為下降沿時(shí),D和S信號(hào)發(fā)生從反相至同相的跳變。根據(jù)上述分析結(jié)論設(shè)計(jì)的DS數(shù)據(jù)時(shí)鐘恢復(fù)電路如圖3所示。圖3電路是由異或門、鎖存器以及觸發(fā)器構(gòu)成。當(dāng)時(shí)鐘信號(hào)為上升沿時(shí),同相狀態(tài)的data數(shù)據(jù)將保持不變,如圖3中上方電路;當(dāng)時(shí)鐘信號(hào)為下降沿時(shí),反相狀態(tài)的data數(shù)據(jù)將保持不變,如圖3中下方電路。
2.2 SpaceWire的數(shù)據(jù)字符與控制字符
SpaceWire總線標(biāo)準(zhǔn)的字符層定義了數(shù)據(jù)字符、控制字符和控制碼、奇偶校驗(yàn)以及時(shí)間碼等內(nèi)容,此外為了更好地支持路由和網(wǎng)絡(luò)協(xié)議,還提供了Time-Code來支持在網(wǎng)絡(luò)層傳播系統(tǒng)時(shí)間。字符層定義有數(shù)據(jù)字符和控制字符。數(shù)據(jù)字符包含8位有效數(shù)據(jù)位,一位奇偶校驗(yàn)位、一位為0的標(biāo)志位??刂谱址?個(gè),分別是FCT、EOP、EEP和ESC,編碼由4個(gè)位構(gòu)成,包含一位奇偶校驗(yàn)位,一位為1的標(biāo)志位和兩位控制數(shù)據(jù)。協(xié)議中還有兩個(gè)重要的控制碼NULL和Time-Code,其中NULL是由控制字符ESC加上FCT組成的。當(dāng)鏈接不傳送數(shù)據(jù)或控制字符時(shí),SpaceWire端口通過傳送NULL字符維持鏈路連接。
3 SpaceWire路由器設(shè)計(jì)
本設(shè)計(jì)中的8口基于RMAP的SpaceWire路由器如圖4所示,8個(gè)編解碼器用于接收和發(fā)送數(shù)據(jù)包,與上述介紹的編解碼器模塊一致。
基于RMAP的SpaceWire路由器中核心模塊為RMAP路由控制器,路由矩陣實(shí)現(xiàn)了各個(gè)接口之間的鏈路搭建。RMAP路由管理器實(shí)現(xiàn)功能控制和工作協(xié)調(diào),路由表用于地址索引,Time-Code管理模塊用于Time-Code碼的廣播,減少時(shí)間誤差。配置端口模塊用于實(shí)現(xiàn)對(duì)路由表配置等工作。SpaceWire的路由地址表用于配合邏輯地址的索引,使用路徑地址來表示目的地址時(shí),目的地址由一系列路由器的輸出端口標(biāo)識(shí)符組成,通過這一系列路由標(biāo)識(shí)符來決定包在網(wǎng)絡(luò)中的傳播路徑,將包從發(fā)送端傳輸?shù)侥康牡刂贰?/p>
RMAP協(xié)議提供了一個(gè)標(biāo)準(zhǔn)化的方案,使得一個(gè)SpaceWire節(jié)點(diǎn)能夠?qū)α硪粋€(gè)SpaceWire節(jié)點(diǎn)進(jìn)行讀寫操作、傳輸數(shù)據(jù)。協(xié)議中包含3種操作,即寫操作、讀操作以及讀改寫操作。
寫操作包括非數(shù)據(jù)校驗(yàn)非應(yīng)答寫、非數(shù)據(jù)校驗(yàn)應(yīng)答寫、數(shù)據(jù)校驗(yàn)非應(yīng)答寫、數(shù)據(jù)校驗(yàn)應(yīng)答寫4種不同的寫操作。數(shù)據(jù)校驗(yàn)類寫操作為了實(shí)現(xiàn)對(duì)數(shù)據(jù)的檢查校驗(yàn),需要在寫操作之前在目的節(jié)點(diǎn)將數(shù)據(jù)緩存。但由于存儲(chǔ)單元數(shù)量有限,無法滿足大量的緩存需求,因此此類寫操作應(yīng)該用于相對(duì)短的數(shù)據(jù)。非數(shù)據(jù)校驗(yàn)可用于數(shù)據(jù)量較長(zhǎng)的寫操作,目的節(jié)點(diǎn)接到寫操作指令后立即執(zhí)行寫數(shù)據(jù)的動(dòng)作,無需緩存數(shù)據(jù)進(jìn)行校驗(yàn)。
讀操作機(jī)制提供了一個(gè)策略給源節(jié)點(diǎn),源節(jié)點(diǎn)根據(jù)該策略去讀取目的節(jié)點(diǎn)存儲(chǔ)區(qū)域內(nèi)的一個(gè)或者多個(gè)字節(jié)的數(shù)據(jù)。讀取的數(shù)據(jù)將被封裝在一個(gè)數(shù)據(jù)包中返回到源節(jié)點(diǎn)。當(dāng)它到達(dá)源節(jié)點(diǎn)時(shí),源節(jié)點(diǎn)用戶將從數(shù)據(jù)包中得到所讀取的數(shù)據(jù)。
讀改寫指令讀取一個(gè)寄存器或者存儲(chǔ)器的數(shù)據(jù),返回它的值,并對(duì)寄存器寫入一個(gè)新的值,新的值被確定在指令中。RMAP讀修改寫操作的發(fā)起方能夠?qū)⒕W(wǎng)絡(luò)中其它節(jié)點(diǎn)指定存儲(chǔ)區(qū)域的數(shù)據(jù)讀出,并進(jìn)行修改后重新寫入該存儲(chǔ)區(qū)。1次最大可實(shí)現(xiàn)4 B數(shù)據(jù)的讀改寫。
4 仿真與總結(jié)
在Modelsim6.2g下,通過Xilinx Virtex-4 FPGA開發(fā)平臺(tái)上搭建仿真平臺(tái),對(duì)SpaceWire總線進(jìn)行仿真測(cè)試,波形如圖6所示。圖中顯示優(yōu)化后的DS編碼波形圖,D和S信號(hào)能夠精確跳變實(shí)現(xiàn)DS編解碼功能。通過仿真波形可以看出,RMAP SpaceWire總線在工作時(shí),能夠進(jìn)行連續(xù)大數(shù)據(jù)量的時(shí)間碼與數(shù)據(jù)包收發(fā),運(yùn)行正常。數(shù)據(jù)發(fā)送的起始時(shí)間Tstart與接收完成時(shí)間Tend分別為40 μs和6 581 μs,可以得出傳輸速率為:
由此可以看出,本設(shè)計(jì)基于RMAP這一先進(jìn)的高層通信協(xié)議設(shè)計(jì)實(shí)現(xiàn)的SpaceWire總線平臺(tái)能夠完成數(shù)據(jù)包的路由通信,傳輸速率達(dá)到高速總線的使用需求。
參考文獻(xiàn)
[1] WORSFOLD P.Evolution of the MARC SpaceWire and power disstribution architecture from concept to tested hardware[C].International SpaceWire Conference,2010.
[2] WALKER P.IEEE 1394 compared with SpaceWire.4Links Ltd.,Milton Keynes,2004.
[3] Asaf Baron.Benchmarking SpaceWire Networks[C].International SpaceWire Conference,2007.
[4] Philippe Fourtier.Simulation of a SpaceWire Network[C].International SpaceWire Conference,2010.
[5] WOLFRAM K D.A new radiation-hardened satellite on board LAN based on IEEE Std 1394,AIAA 2004-5869,2004.
[6] 楊志,李國(guó)軍,李芳,等.SpaceWire星載網(wǎng)絡(luò)通信協(xié)議設(shè)計(jì)[J].宇航學(xué)報(bào),2012,33(2):200-209.
[7] 田園,張杰.基于SpaceWire的鏈路狀態(tài)算法研究與設(shè)計(jì)[J].計(jì)算機(jī)工程,2011,37(23):113-115.