一種基于流水線(xiàn)的SpaceWire路由器研究
近年來(lái),隨著SpaceWire總線(xiàn)技術(shù)在航天航空領(lǐng)域的不斷應(yīng)用,SpaceWire路由器在理論和技術(shù)應(yīng)用方面也得到了飛速發(fā)展。國(guó)外,歐洲航天局 (ESA)已經(jīng)將速度為200 Mb/s抗輻射的SpaceWire路由器應(yīng)用到ESA的航天任務(wù)中。國(guó)內(nèi),目前對(duì)SpaceWire路由器的研究還處于初級(jí)階段,設(shè)計(jì)的 SpaceWire路由器最高速度也只能達(dá)到100 Mb/s。為了提高路由器的傳輸速度,這里提出了一種基于流水線(xiàn)技術(shù)的SpaceWire路由器。
本文引用地址:http://m.butianyuan.cn/article/267507.htm1 SpaceWire路由器概述
SpaceWire路由器由一定數(shù)量鏈接接口單元和路由單元構(gòu)成。接口單元主要負(fù)責(zé)連接各SpaceWire接點(diǎn),路由單元負(fù)責(zé)數(shù)據(jù)的路由交換。
1.1 SpaceWire數(shù)據(jù)鏈路層接口單元
SpaceWire數(shù)據(jù)鏈路接口主要由連接器、LVDS驅(qū)動(dòng)器、編碼器、譯碼器、狀態(tài)機(jī)、收發(fā)FIFO以及主機(jī)接口組成,其結(jié)構(gòu)如圖1所示。
發(fā)送器接收來(lái)自發(fā)送FIFO的數(shù)據(jù),使用DS編碼技術(shù)編碼這些數(shù)據(jù)并且進(jìn)行發(fā)送。接收器負(fù)責(zé)解碼DS(Din和Sin)信號(hào)產(chǎn)生N—Chars字符序列(data,EOP,EEP),這些字符序列通過(guò)接收FIFO傳送給主機(jī)系統(tǒng)。
FIFO的使用簡(jiǎn)化了數(shù)據(jù)鏈路與主機(jī)系統(tǒng)之間的接口。在系統(tǒng)復(fù)位以后,發(fā)送和接收FIFO都是空的。在鏈路連接建立以后,如果接收到FCT表明鏈路另一端允許向它發(fā)送數(shù)據(jù),那么被寫(xiě)入發(fā)送FIFO的數(shù)據(jù)將被發(fā)送。當(dāng)接收FIFO內(nèi)仍然有可用空間時(shí),接收FIFO能夠接收數(shù)據(jù)。主機(jī)系統(tǒng)從接收FIFO中讀取數(shù)據(jù)。在FIFO全空或全滿(mǎn)以前,F(xiàn)IFO的半空或半滿(mǎn)標(biāo)志會(huì)觸發(fā)處理器干預(yù)對(duì)FIFO的讀寫(xiě)操作。這種機(jī)制能夠控制通過(guò)鏈路的數(shù)據(jù)流,使數(shù)據(jù)鏈路接口保持高速數(shù)據(jù)吞吐。
狀態(tài)機(jī)用來(lái)負(fù)責(zé)控制接口單元的整體操作,它會(huì)提供鏈路初始化,普通操作和錯(cuò)誤服務(wù)。
1.2 SpaceWire路由器單元
為了簡(jiǎn)化基于SpaceWire的通訊系統(tǒng)的復(fù)雜度,很重要的就是對(duì)SpaceWire路由單元的設(shè)計(jì)。如圖2所示,在圖中所設(shè)計(jì)的SpaceWire路由器中包括8個(gè)SpaceWire端口,即2個(gè)外部端口、1個(gè)內(nèi)部配置端口、路由表、控制寄存器、狀態(tài)/錯(cuò)誤寄存器、控制邏輯、無(wú)阻塞交互開(kāi)關(guān)等。
低延遲、蟲(chóng)洞路由和無(wú)阻塞交換開(kāi)關(guān)使數(shù)據(jù)包能夠到達(dá)任意一個(gè)SpaceWire端口和外部端口,或者也可以由配置端口直接訪(fǎng)問(wèn)任意一個(gè)SpaceWire端口和外部端口。所設(shè)計(jì)SpaceWire端口完全支持SpaceWire標(biāo)準(zhǔn),提供高速的、雙向的通訊。每個(gè)外部端口包括一個(gè)發(fā)送FIFO和一個(gè)接收FIFO,可以發(fā)送接收字符和包結(jié)束標(biāo)志。
Time—code端口會(huì)和計(jì)數(shù)器一起被提供用來(lái)方便Time—code的傳播。當(dāng)一個(gè)有效的Time—code到達(dá)一個(gè)路由端口時(shí),它也會(huì)被發(fā)送到其他 Spacewire端口,一個(gè)TICK_OUT信號(hào)會(huì)在Time—code端口被產(chǎn)生。路由器可以用Time—code端口提供的TICK_IN信號(hào)做為 Time—code的操作管理。
配置端口可以配置任何SpaceWire端口和外部端口。它包括可以控制SpaceWire端口、外部端口和交換開(kāi)關(guān)的寄存器。配置端口為各種端口和交換開(kāi)關(guān)都設(shè)置了狀態(tài)寄存器。用配置端口的讀命令可以讀這些寄存器,從而來(lái)讀出路由器的狀態(tài)和錯(cuò)誤信息,而且一些狀態(tài)引腳上的狀態(tài)和錯(cuò)誤信息可以被選擇輸出。
路由表可以通過(guò)配置端口來(lái)訪(fǎng)問(wèn)。邏輯地址端口映射和優(yōu)先位都可以在路由表中進(jìn)行設(shè)置,路由表常常用來(lái)控制組適應(yīng)路由和交互開(kāi)關(guān)中的優(yōu)先仲裁。
1.3 蟲(chóng)洞路由
SpaceWire路由器是基于蟲(chóng)洞路由上進(jìn)行設(shè)計(jì)的。蟲(chóng)洞路由是包路由的一種形式。每一個(gè)包的包頭包含著目的地的地址信息。每當(dāng)有一個(gè)包到達(dá)路由器時(shí),它就立即檢測(cè)這個(gè)包的目的地址,然后按照該地址轉(zhuǎn)發(fā)這個(gè)包到相應(yīng)的輸出端口。如果要求的輸出端口是“空閑”(free)狀態(tài),則這個(gè)包會(huì)被立即轉(zhuǎn)發(fā)到這個(gè)輸出端口。這時(shí),該端口就會(huì)被打上“忙”(blasy)狀態(tài)標(biāo)記,直到這個(gè)包的最后一個(gè)字符即“包尾”(EOP)通過(guò)路由器轉(zhuǎn)發(fā)出去。
蟲(chóng)洞路由如圖3所示,圖中一個(gè)包從一個(gè)節(jié)點(diǎn)發(fā)出,通過(guò)路由器到達(dá)另外一個(gè)節(jié)點(diǎn)。包頭標(biāo)記為黑色,其余部分為灰色。路由器負(fù)責(zé)在輸入端口和空閑的輸出端口之間建立連接,當(dāng)檢測(cè)到EOP或EEP時(shí),斷開(kāi)連接,釋放輸出端口為空閑狀態(tài),準(zhǔn)備接收其他端口來(lái)的包。輸出端口忙時(shí),輸入端口阻塞輸入包,直到其空閑。通過(guò)輸入端口相遠(yuǎn)節(jié)點(diǎn)發(fā)送FCT來(lái)實(shí)現(xiàn),直到輸出端口空閑時(shí),路由器才取消阻塞。以上是蟲(chóng)洞路由和流量控制之間的關(guān)系。
路由器相關(guān)文章:路由器工作原理
路由器相關(guān)文章:路由器工作原理
塵埃粒子計(jì)數(shù)器相關(guān)文章:塵埃粒子計(jì)數(shù)器原理
評(píng)論