文獻(xiàn)標(biāo)識(shí)碼: A
DOI:10.16157/j.issn.0258-7998.180529
中文引用格式: 柳萌,,安軍社,,史毅龍,等. SpaceWire高速總線節(jié)點(diǎn)控制器的設(shè)計(jì)與實(shí)現(xiàn)[J].電子技術(shù)應(yīng)用,,2018,,44(11):1-4.
英文引用格式: Liu Meng,An Junshe,,Shi Yilong,,et al. The design and implementation of SpaceWire high speed bus interface controller[J]. Application of Electronic Technique,2018,,44(11):1-4.
0 引言
隨著空間探測(cè)領(lǐng)域的逐漸擴(kuò)大,航天器上的載荷設(shè)備對(duì)系統(tǒng)的數(shù)據(jù)通信需求也相應(yīng)的越來(lái)越高,。同時(shí)星載電子設(shè)備產(chǎn)生和待處理的數(shù)據(jù)總量迅猛增長(zhǎng),,對(duì)數(shù)據(jù)總線處理能力提出更高的要求。數(shù)據(jù)總線的速度,、可靠性和靈活性直接影響航天器的整體性能,。歐洲航天局(European Space Agency,ESA)為滿(mǎn)足航空航天應(yīng)用提出了一種專(zhuān)門(mén)用于空間高速數(shù)據(jù)傳輸的點(diǎn)對(duì)點(diǎn)串行總線標(biāo)準(zhǔn)SpaceWire[1],。它具有數(shù)據(jù)率高,,便于擴(kuò)展,方便重復(fù)利用的特點(diǎn),,有利于航天器,、衛(wèi)星快速整合總裝,這為航天器和衛(wèi)星載荷的設(shè)計(jì)帶來(lái)極大方便,,應(yīng)用前景廣闊,。
本文研究該標(biāo)準(zhǔn)下節(jié)點(diǎn)控制器IP[2]的實(shí)現(xiàn)方法,通過(guò)FPGA進(jìn)行原型驗(yàn)證,,最后在專(zhuān)用集成芯片龍芯1E300中實(shí)現(xiàn)了該節(jié)點(diǎn)控制器,,實(shí)際測(cè)試信號(hào)傳輸率可達(dá)200 Mb/s~260 Mb/s。
1 系統(tǒng)總體設(shè)計(jì)
1.1 系統(tǒng)結(jié)構(gòu)框圖
SpaceWire是一種點(diǎn)對(duì)點(diǎn)全雙工串行數(shù)據(jù)傳輸協(xié)議,,節(jié)點(diǎn)控制器在協(xié)議中主要負(fù)責(zé)解決數(shù)據(jù)包點(diǎn)對(duì)點(diǎn)傳輸問(wèn)題,。本文設(shè)計(jì)的SpaceWire IP核使用FIFO作為用戶(hù)數(shù)據(jù)接口,并將數(shù)據(jù)發(fā)送和接收緩存包括在內(nèi),。系統(tǒng)主要功能包括節(jié)點(diǎn)配置,、鏈路狀態(tài)控制和數(shù)據(jù)收發(fā)功能,,總體設(shè)計(jì)如圖1所示。
1.2 系統(tǒng)時(shí)鐘域劃分
本設(shè)計(jì)必須使用到不同的時(shí)鐘,,系統(tǒng)時(shí)鐘域的劃分[3]是設(shè)計(jì)的重點(diǎn)之一,。如圖2所示,clk_sys是本設(shè)計(jì)中的頻率最高的時(shí)鐘域,,同步系統(tǒng)控制器,,并為系統(tǒng)提供定時(shí)功能。clk_main是來(lái)自上位機(jī)的時(shí)鐘,,同步發(fā)送緩存的寫(xiě)入和接收緩存的讀取操作,。clk_tx指的是發(fā)送時(shí)鐘域,是同步發(fā)送端對(duì)發(fā)送數(shù)據(jù)的相關(guān)操作,。clk_rx指的是恢復(fù)時(shí)鐘域,,是由鏈路數(shù)據(jù)進(jìn)行時(shí)鐘數(shù)據(jù)恢復(fù)所得到的時(shí)鐘,用來(lái)同步接收端對(duì)恢復(fù)數(shù)據(jù)的相關(guān)操作,。根據(jù)SpaceWire協(xié)議,,接收端在接收到首位數(shù)據(jù)以前還沒(méi)有產(chǎn)生恢復(fù)時(shí)鐘,而鏈路斷開(kāi)檢測(cè)在首位數(shù)據(jù)接收時(shí)就已經(jīng)開(kāi)始,,這里采用系統(tǒng)時(shí)鐘進(jìn)行鏈路斷開(kāi)檢測(cè)。
2 系統(tǒng)原理實(shí)現(xiàn)
2.1 系統(tǒng)狀態(tài)機(jī)
SpaceWire進(jìn)行數(shù)據(jù)通信前要求兩端的節(jié)點(diǎn)先通過(guò)NULL字符和FCT字符交換完成鏈路建立過(guò)程,,鏈路在運(yùn)行過(guò)程中可能由于鏈路主動(dòng)或被動(dòng)斷開(kāi),、數(shù)據(jù)傳輸錯(cuò)誤等原因?qū)е骆溌窢顟B(tài)變化。鏈路運(yùn)行的狀態(tài)機(jī)如圖3所示,,圖中實(shí)線表示鏈路初始化的過(guò)程,,鏈路正確初始化后處于Run狀態(tài)。在應(yīng)用中,,鏈路兩端節(jié)點(diǎn)都可以被配置為主動(dòng)或者被動(dòng)模式[4],,有如下條件:
Link_Enabled=(Not[Link_Disabled])And
([LinkStart] Or ([AutoStart] And gotNull))
2.2 發(fā)送端
鏈路在初始化過(guò)程中,可能發(fā)送NULL字符和FCT字符,,鏈路從初始化到運(yùn)行的各個(gè)狀態(tài)轉(zhuǎn)換中,,需要不間斷發(fā)送字符。SpaceWire協(xié)議規(guī)定的鏈路初始化速率為10 Mb/s,,而運(yùn)行速率可以是2 Mb/s~400 Mb/s,,故要求發(fā)送時(shí)鐘速率可切換,發(fā)送端發(fā)送的比特流在數(shù)據(jù)發(fā)送頻率變化的時(shí)候保持不間斷,,一種可用的時(shí)鐘切換[5]電路圖如圖4所示,。
DFF_2和DFF_4保證clk_a和clk_b時(shí)鐘選擇輸出的變化都只發(fā)生在下降沿處,同時(shí)可以使得輸出變化為某一時(shí)鐘時(shí),,另一時(shí)鐘的輸出已經(jīng)關(guān)閉,,該方法可避免時(shí)鐘切換時(shí)候產(chǎn)生毛刺,。DFF_1和DFF_3分別加到and_1和and_3后面,防止sel,、DFF_2輸出和DFF_4輸出的信號(hào)同時(shí)變化可能造成的DFF_2和DFF_4輸出的亞穩(wěn)態(tài),。
2.3 接收端
SpaceWire鏈路層采用DS編碼方案,選通信號(hào)伴隨著串行數(shù)據(jù)信號(hào)發(fā)送,,接收端簡(jiǎn)單地通過(guò)異或數(shù)據(jù)和選通信號(hào)可以提取出時(shí)鐘信號(hào),。該方法將接收偏差(skew)裕量從傳統(tǒng)的時(shí)鐘、數(shù)據(jù)方式的0.5比特時(shí)間提高到接近1比特時(shí)間,,具有更好的抖動(dòng)(jitter)容差,。但由于接收數(shù)據(jù)的時(shí)鐘是由接收的DS編碼信號(hào)異或得到的,造成接收器的數(shù)據(jù)時(shí)鐘信號(hào)不同步,,恢復(fù)困難,。
為實(shí)現(xiàn)數(shù)據(jù)時(shí)鐘恢復(fù),一種方法是基于Xilinx FPGA,,選擇采用可編程絕對(duì)延遲單元iodelay實(shí)現(xiàn)對(duì)DS異或后的信號(hào)執(zhí)行指定的延遲,,可以正確地恢復(fù)出時(shí)鐘,根據(jù)圖5分析DS信號(hào)的特點(diǎn)[6]后,,得到一種更通用的方法:
DS編碼如式(1)和式(2)定義:
發(fā)送端的邏輯公式為:
式中D為數(shù)據(jù)信號(hào),,S為選通信號(hào),CLK為數(shù)據(jù)時(shí)鐘,。根據(jù)DS信號(hào)變化的特點(diǎn)可以發(fā)現(xiàn)DS信號(hào)的每次轉(zhuǎn)換有且只變換其中的1位信號(hào),,通過(guò)2次變換后則DS數(shù)據(jù)都將發(fā)生翻轉(zhuǎn),右圖能夠更清楚說(shuō)明這一現(xiàn)象,。
從圖5可知,,當(dāng)且僅當(dāng)時(shí)鐘信號(hào)為上升沿時(shí),data和strobe信號(hào)發(fā)生從同相至反相的跳變,,如圖5右半部分中右象限,;同理,當(dāng)且僅當(dāng)時(shí)鐘信號(hào)為下降沿時(shí),,data和strobe信號(hào)發(fā)生從反相至同相的跳變,,如圖5右半部分中左象限。根據(jù)上述分析結(jié)論設(shè)計(jì)的DS數(shù)據(jù)時(shí)鐘恢復(fù)電路[7]如圖6所示,。
圖6中電路由異或門(mén),、鎖存器、觸發(fā)器構(gòu)成,,當(dāng)時(shí)鐘信號(hào)為上升沿時(shí),,同相狀態(tài)的data數(shù)據(jù)將保持不變,當(dāng)時(shí)鐘信號(hào)為下降沿時(shí),反相狀態(tài)的data數(shù)據(jù)將保持不變,,從而保證了后級(jí)觸發(fā)器時(shí)鐘跳變時(shí),,觸發(fā)器數(shù)據(jù)信號(hào)的建立時(shí)間。觸發(fā)器輸出的2位數(shù)據(jù)即是同步接收的數(shù)據(jù)信號(hào),,輸出至后級(jí)接收模塊進(jìn)行處理,。
2.4 數(shù)據(jù)緩存
根據(jù)SpaceWire字符層定義,協(xié)議鏈路可能傳送5種字符和2種控制碼,其格式如圖7所示,。
由于最長(zhǎng)的時(shí)間控制碼字符包含14比特位,,本設(shè)計(jì)中發(fā)送方采用2組7比特位數(shù)據(jù)緩存完成數(shù)據(jù)格式的轉(zhuǎn)換,采用DDR數(shù)據(jù)傳輸方式在時(shí)鐘的上升沿和下降沿分別發(fā)送其中的一組緩存數(shù)據(jù),,如圖8所示,。在上次數(shù)據(jù)發(fā)送完成前的第二個(gè)時(shí)鐘周期計(jì)算校驗(yàn)位,前一個(gè)時(shí)鐘周期向該發(fā)送緩存填充待發(fā)送字符后進(jìn)行數(shù)據(jù)發(fā)送,。接收方采用5對(duì)移位寄存器組,,首先判定接收字符的起始位置,在進(jìn)行奇偶校驗(yàn)的同時(shí),,判別接收的字符類(lèi)型,,并保存至接收FIFO中。
圖7和圖8中標(biāo)識(shí)為“p”或下標(biāo)為“p”的比特位表示該位為字符的校驗(yàn)位,,標(biāo)識(shí)為“c”或下標(biāo)為“c”的比特位表示該位為字符的控制位,,箭頭表示字符中比特位在鏈路上傳輸?shù)南群箜樞颉?/p>
2.5 流量控制機(jī)制
為避免因主機(jī)接收緩存溢出而導(dǎo)致的數(shù)據(jù)丟失,鏈路的一端(B端)向另一端(A端)發(fā)送FCT表示B端已經(jīng)準(zhǔn)備好,,可以再接收一定量的數(shù)據(jù),。
2.5.1 信譽(yù)量計(jì)數(shù)值
發(fā)送端要維護(hù)一個(gè)授權(quán)它可發(fā)送的N-Char數(shù)量的信譽(yù)計(jì)數(shù)值(Credit Count),具體如下,。
ErrorReset狀態(tài)下,信譽(yù)計(jì)數(shù)值為零,,鏈路接口每接收到一個(gè)FCT,,信譽(yù)量計(jì)數(shù)值就加8[8],每發(fā)送一個(gè)N-Char,信譽(yù)計(jì)數(shù)值就減1,。信譽(yù)計(jì)數(shù)值為零時(shí)將停止發(fā)送N-Char,,但可繼續(xù)發(fā)送L-Char,直到它再次接收到FCT使信譽(yù)計(jì)數(shù)增長(zhǎng)到8,。
信譽(yù)量計(jì)數(shù)最大值根據(jù)接收緩存的大小設(shè)置(1個(gè)FCT對(duì)應(yīng)接收緩存中8個(gè)N-Char的存儲(chǔ)空間),,不超過(guò)56(即7個(gè)FCT)。當(dāng)信譽(yù)計(jì)數(shù)值達(dá)到或已經(jīng)接近其最大值(即距最大值小于8)時(shí)又接收到一個(gè)FCT,,那么信譽(yù)計(jì)數(shù)值不會(huì)再增長(zhǎng),,同時(shí)會(huì)通過(guò)標(biāo)志報(bào)信譽(yù)額度錯(cuò)誤。
2.5.2 未償付計(jì)數(shù)值
鏈路接口要維護(hù)一個(gè)它預(yù)期接收但未償付的N-Char數(shù)量的計(jì)數(shù)值(Outstanding Count),即它通過(guò)發(fā)送FCT請(qǐng)求要發(fā)送的數(shù)量,,具體如下,。
復(fù)位時(shí),初始未償付計(jì)數(shù)值為0,,鏈路出錯(cuò)時(shí),,未償付計(jì)數(shù)值被保存并在下次重啟時(shí)加載為初始值,每發(fā)送完一個(gè)FCT,,未償付計(jì)數(shù)值就加8,,每接收到一個(gè)N-Char,未償付計(jì)數(shù)值就減1,。未償付計(jì)數(shù)值最大為56(即7個(gè)FCT),。除非未償付計(jì)數(shù)器有余量多計(jì)8個(gè)未償付N-Char,同時(shí)接收緩存有容納這8個(gè)N-Char的空間,,否則發(fā)送器不能發(fā)送FCT,。
3 測(cè)試與驗(yàn)證
本系統(tǒng)FPGA選用Xilinx公司的Virtex 4系列 xc4vsx55作為主控芯片,使用Verilog語(yǔ)言編程[9]進(jìn)行邏輯設(shè)計(jì)和驗(yàn)證,,在FPGA上同時(shí)例化兩個(gè)節(jié)點(diǎn)控制器,,通過(guò)讀寫(xiě)配置寄存器控制SpaceWire節(jié)點(diǎn)收發(fā)數(shù)據(jù)。從仿真結(jié)果可見(jiàn),,節(jié)點(diǎn)控制器實(shí)現(xiàn)了協(xié)議規(guī)定的鏈路初始化和數(shù)據(jù)傳輸功能,,控制字符和數(shù)據(jù)在鏈路上的傳輸正確。
在專(zhuān)用集成芯片龍芯1E300中實(shí)現(xiàn)了該控制器,,搭建測(cè)試環(huán)境,,采用StarDundee公司的標(biāo)準(zhǔn)測(cè)試設(shè)備SpaceWire鏈路分析儀,與節(jié)點(diǎn)控制器芯片相互傳輸數(shù)據(jù),,驗(yàn)證了數(shù)據(jù)傳輸過(guò)程中的同步性和準(zhǔn)確性,。鏈路分析儀測(cè)試結(jié)果如圖9所示,表明ASIC設(shè)計(jì)的節(jié)點(diǎn)控制器信號(hào)傳輸速率可達(dá)200 Mb/s,,數(shù)據(jù)傳輸正常,,滿(mǎn)足協(xié)議規(guī)定的功能。
4 結(jié)束語(yǔ)
SpaceWire作為航天領(lǐng)域新興的高速總線標(biāo)準(zhǔn)之一,,具有數(shù)據(jù)率高,、接口簡(jiǎn)單、擴(kuò)展方便等諸多優(yōu)點(diǎn),。本文提出的一種SpaceWire節(jié)點(diǎn)控制器實(shí)現(xiàn)方法解決了設(shè)計(jì)中多時(shí)鐘域劃分,、數(shù)據(jù)時(shí)鐘恢復(fù)、時(shí)鐘切換和流量控制方面的難點(diǎn),。該設(shè)計(jì)方法經(jīng)FPGA仿真驗(yàn)證正確,,在專(zhuān)用集成芯片中成功實(shí)現(xiàn),,該節(jié)點(diǎn)控制器的研發(fā)設(shè)計(jì)具有較強(qiáng)的工程實(shí)用性。
參考文獻(xiàn)
[1] ECSS,,ECSS-E-ST-50-12C.SpaceWire-links,,nodes,routers and networks[S].Noordwijk,,The Netherlands:ESA-ESTEC Requirements & Standards Division,,2003.
[2] JULIUSSON D.The swift codec development[C].Space-Wire-2013 Proceedings of the 5th International SpaceWire Conference.Gothenburg,Sweden:Space Technology Centre,,University of Dundee,,2013:316-318.
[3] 唐萍,李慧軍.SpaceWire Codec接收端FPGA時(shí)序設(shè)計(jì)[J/OL].微計(jì)算機(jī)信息,,2009,,25(2):178-179,198.
[4] CHRIS MCCLEMENTS,,STEVE PARKES. SpaceWire standard:low speed signalling rates[C].SpaceWire-2008 Proceedings of the 2nd International SpaceWire Conference.Nara,,Japan:Space Technology Centre,University of Dundee,,2008:41-44.
[5] 魏家明.Verilog編程藝術(shù)[M].北京:電子工業(yè)出版社,,2014.
[6] NOMACHI M,ISHII S,,KURODA Y,,et al. Race condition free SpaceWire decoder for FPGA[C].SpaceWire-2010 Proceedings of the 3rd International SpaceWire Conference.St.Petersburg,Russia:Space Technology Centre,,University of Dundee,,2010:173-175.
[7] 閆夢(mèng)婷,安軍社,,龔泉銘.基于RMAP機(jī)制的SpaceWire星載高速總線設(shè)計(jì)與實(shí)現(xiàn)[J].電子技術(shù)應(yīng)用,,2016,42(1):108-110,,114.
[8] 趙云富,,吳一帆,孫強(qiáng),,等.SpaceWire總線的流量控制機(jī)制研究[J/OL].微電子學(xué)與計(jì)算機(jī),,2016,,33(1):1-5.
[9] 夏宇聞.Verilog數(shù)字系統(tǒng)設(shè)計(jì)(第4版)[M].北京:北京航空航天大學(xué)出版社,,2017.
作者信息:
柳 萌1,2,,安軍社2,,史毅龍1,2,江源源2,,姜文奇3
(1.中國(guó)科學(xué)院大學(xué),,北京100190;2.國(guó)家空間科學(xué)中心 復(fù)雜航天系統(tǒng)綜合電子與信息技術(shù)實(shí)驗(yàn)室,,北京100190,;
3.龍芯中科技術(shù)有限公司,北京100095)