趙允齊,安軍社,鄭靜雅,祝 平,臧文博
(1.中國科學(xué)院國家空間科學(xué)中心 復(fù)雜航天系統(tǒng)電子信息技術(shù)重點(diǎn)實(shí)驗(yàn)室,北京 101400;2.中國科學(xué)院大學(xué) 國家空間科學(xué)中心,北京 101400)
在2007年,歐空局提出了SpaceFibre總線協(xié)議第一版草案,直到在2018年發(fā)布SpaceFibre協(xié)議正式版,該協(xié)議面向吉比特每秒,具有良好的糾錯(cuò)容錯(cuò)、數(shù)據(jù)重傳等功能。該協(xié)議的目的是為了滿足日益增長的航天器載荷上的數(shù)據(jù)傳輸需求,彌補(bǔ)現(xiàn)有航天總線的不足[1],諸如通信速度、糾錯(cuò)容錯(cuò)能力、傳輸距離、異常處理、時(shí)間確定性等方面。該協(xié)議是在2003年SpaceWire總線協(xié)議的基礎(chǔ)上進(jìn)行改進(jìn)的[2],具有SpaceWire協(xié)議的所有優(yōu)點(diǎn)。為了解決SpaceWire蟲洞路由帶來的數(shù)據(jù)阻塞問題,SpaceFibre協(xié)議采用虛擬通道路由,這種路由機(jī)制使得數(shù)據(jù)傳輸速率大大提升,根據(jù)目前鄧迪團(tuán)隊(duì)的成品IP核的測(cè)試結(jié)果,數(shù)據(jù)傳輸速度可達(dá)2.5 Gbit/s[3],在Microsemi RTG4 FPGA上可達(dá)3.125 Gbit/s[4,5]。
本文重點(diǎn)介紹和分析SpaceFibre協(xié)議中網(wǎng)絡(luò)層對(duì)于路由器的定義,并提出了一種SpaceFibre路由器實(shí)現(xiàn)方法。該方法能夠?qū)崿F(xiàn)5端口虛擬通道路由的基本功能,采用輪詢仲裁的算法,并使用虛擬通道控制器控制傳輸隊(duì)列。用Verilog代碼實(shí)現(xiàn)該設(shè)計(jì)后,通過了仿真驗(yàn)證,仿真波形正常,功能符合設(shè)計(jì)需求。
因?yàn)镾paceFibre協(xié)議是在SpaceWire協(xié)議的基礎(chǔ)上提出的,因此也具有低成本、高速度、高容錯(cuò)等優(yōu)點(diǎn)。SpaceFibre是一種全雙工協(xié)議,目標(biāo)是能傳輸高、低兩種通道的所有類型數(shù)據(jù),具有時(shí)間片、CRC檢驗(yàn)等功能,支持故障檢測(cè)、隔離和恢復(fù)(FDIR)。SpaceFibre支持QoS的信息發(fā)送,偵測(cè)任何幀或控制碼丟失或錯(cuò)誤,同時(shí)提供重發(fā)機(jī)制和ACK/NACK交互,支持優(yōu)先級(jí)別服務(wù),帶寬保留、預(yù)約和調(diào)度,支持時(shí)間窗功能,通過加入偽隨機(jī)碼有效降低電磁輻射和提高抗干擾能力。同時(shí),SpaceFibre定義的多通道層支持多鏈路,通信距離和數(shù)據(jù)傳輸速率都得到了提升。在網(wǎng)絡(luò)層中,更是引入虛擬通道和虛擬網(wǎng)絡(luò)的概念,減少數(shù)據(jù)堵塞。SpaceFibre使用電纜時(shí)距離可達(dá)5 m,使用光纖時(shí)可達(dá)100 m[7]。
SpaceFibre定義了5層結(jié)構(gòu),由下至上為物理層、數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層3個(gè)主要層次,通道層和多通道層為兩個(gè)次要層級(jí),從屬于數(shù)據(jù)鏈路層。與OSI定義的7層結(jié)構(gòu)相比,如圖1所示,可見SpaceFibre只對(duì)應(yīng)了OSI的3層,無法實(shí)現(xiàn)傳輸層等4個(gè)層的功能。
圖1 OSI模型和SpaceFibre層之間的對(duì)應(yīng)關(guān)系
SpaceFibre的路由器定義在網(wǎng)絡(luò)層,用于將多個(gè)節(jié)點(diǎn)互連在一起,以便節(jié)點(diǎn)能夠彼此通信,以此傳輸數(shù)據(jù)包和廣播消息。SpaceFibre的協(xié)議規(guī)定了router的構(gòu)成要素,如圖2所示。
圖2 SpaceFibre中路由的UML圖[6]
根據(jù)SpaceFibre協(xié)議的定義,該設(shè)計(jì)方案中的SpaceFibre路由包括:端口、開關(guān)矩陣(switch matrix)、配置節(jié)點(diǎn)、廣播機(jī)制。端口數(shù)量為5個(gè),其中有一個(gè)配置端口;開關(guān)矩陣用于將輸入端口中的虛擬通道連接到輸出端口中的虛擬通道;配置節(jié)點(diǎn)是端口0,用于配置路由,包括每一個(gè)SpaceFibre端口的參數(shù),只有一條虛擬通道[6]。低延遲的廣播消息可承載8字節(jié)的用戶信息,適用于事件分布、錯(cuò)誤信號(hào)和時(shí)間分布[5]。
SpaceWire采用蟲洞路由結(jié)構(gòu),在蟲孔交換機(jī)制中,每個(gè)報(bào)文被劃分成許多固定大小的微片。報(bào)文的路由信息存儲(chǔ)在頭微片中,其余微片跟隨頭微片的路徑傳輸。當(dāng)頭微片被阻塞時(shí),該報(bào)文的所有微片就地存儲(chǔ),直至阻塞結(jié)束[8]。蟲孔交換有著通信延時(shí)短、緩存小和易實(shí)現(xiàn)等優(yōu)點(diǎn)。但同時(shí)蟲洞路由也存在問題,要求接收端有一個(gè)數(shù)據(jù)包大小的內(nèi)存,且當(dāng)數(shù)據(jù)包占用通道時(shí)其它數(shù)據(jù)包便無法傳輸,從而產(chǎn)生數(shù)據(jù)阻塞。
在蟲洞路由的基礎(chǔ)上,SpaceFibre采用了虛擬通道,可以有效地解決數(shù)據(jù)包阻塞的問題,而且還引入了虛擬網(wǎng)絡(luò)的概念。在每個(gè)端口內(nèi),一條物理通道上可以擁有多條虛擬通道,最多可以達(dá)到32個(gè),且每條虛擬通道都具有一個(gè)虛擬通道號(hào)。SpaceFibre引入了虛擬網(wǎng)絡(luò)的概念,再為每條虛擬通道賦予一個(gè)虛擬網(wǎng)絡(luò)號(hào)碼,使得每一條虛擬通道都映射到一個(gè)虛擬網(wǎng)絡(luò)中,只有同一個(gè)虛擬網(wǎng)絡(luò)中的虛擬通道才能實(shí)現(xiàn)通信,以此增加數(shù)據(jù)吞吐量。這樣,每一條虛擬通道都映射到一個(gè)虛擬網(wǎng)絡(luò)當(dāng)中,SpaceFibre的路由網(wǎng)絡(luò)就像是多個(gè)并行運(yùn)行的SpaceWire路由網(wǎng)絡(luò)。
定義在網(wǎng)絡(luò)層的SpaceFibre路由器需要數(shù)據(jù)鏈路層和通道層的功能支持,包括QoS和FDIR等。服務(wù)質(zhì)量(QoS)機(jī)制結(jié)合了優(yōu)先級(jí)、帶寬預(yù)留和調(diào)度,這些功能提供了“冒泡(babbling idoit)”保護(hù),并確保數(shù)據(jù)傳輸?shù)拇_定性,集成故障檢測(cè)、隔離和恢復(fù)(FDIR)機(jī)制提供從虛擬通道和幀的瞬時(shí)錯(cuò)誤中的恢復(fù)[5]。
本課題旨在用FPGA實(shí)現(xiàn)SpaceFibre網(wǎng)絡(luò)層中路由器的功能,實(shí)現(xiàn)5個(gè)端口、每個(gè)端口的鏈路包含4條虛擬信道的路由器。應(yīng)用這種4端口的路由,可以與其它設(shè)備構(gòu)成如圖3所示的結(jié)構(gòu)。
圖3 路由網(wǎng)絡(luò)結(jié)構(gòu)[5]
虛擬通道主要是用于片上網(wǎng)絡(luò)的一個(gè)概念,在片上網(wǎng)絡(luò)中鏈路主要有兩種方式:非虛擬通道模式和虛擬通道模式。非虛擬通道模式下,一條物理鏈路對(duì)應(yīng)一條通路,兩側(cè)對(duì)應(yīng)兩對(duì)數(shù)據(jù)緩沖區(qū)。在虛擬通道模式下,一條物理鏈路對(duì)應(yīng)多條通路,兩側(cè)對(duì)應(yīng)多組數(shù)據(jù)緩沖區(qū)。
對(duì)于虛擬通道模式,當(dāng)物理鏈路上的一條虛擬通道被阻塞時(shí),另一條虛擬通道就可以獲得數(shù)據(jù)包傳輸?shù)臋?quán)限,使得一條物理通道可以被復(fù)用為多條邏輯通道。由此可見,虛擬通道在一條物理鏈路上實(shí)現(xiàn)了多條通道,能夠極大地提高物理通道的利用率,提高數(shù)據(jù)吞吐量,減少數(shù)據(jù)阻塞,并避免網(wǎng)絡(luò)死鎖的出現(xiàn)。
路由器的端口包括一個(gè)輸入端口、一個(gè)輸出端口和多條虛擬通道,因此在每條虛擬通道的兩端都定義了一組緩沖區(qū),分別是輸入數(shù)據(jù)緩沖區(qū)(in_buffer)和輸出數(shù)據(jù)緩沖區(qū)(out_buffer),緩沖區(qū)可以容納至少256 bits的數(shù)據(jù)包,該設(shè)計(jì)中一個(gè)端口對(duì)應(yīng)4個(gè)緩沖區(qū)。
為了解決虛擬通道模式中容易出現(xiàn)的數(shù)據(jù)混亂問題,讓虛擬通道的利用率更高,SpaceFibre的協(xié)議中引入了虛擬網(wǎng)絡(luò)的概念,就是將所有的虛擬通道分成幾個(gè)部分,成為獨(dú)立通信的網(wǎng)絡(luò)。通過為每一條虛擬通道賦予虛擬網(wǎng)絡(luò)號(hào)碼,并規(guī)定只有相同虛擬網(wǎng)絡(luò)號(hào)碼的虛擬通道才能進(jìn)行數(shù)據(jù)傳輸,以此將多個(gè)虛擬網(wǎng)絡(luò)分隔開,形成多個(gè)獨(dú)立的數(shù)據(jù)傳輸網(wǎng)絡(luò)。根據(jù)協(xié)議的規(guī)定,虛擬網(wǎng)絡(luò)包含如圖4所示的要素。
圖4 虛擬網(wǎng)絡(luò)的UML[6]
SpaceFibre路由的鏈路上可以擁有多條虛擬信道,而一個(gè)鏈路上的多條虛擬信道都分別屬于不同的虛擬網(wǎng)絡(luò),只有相同虛擬網(wǎng)絡(luò)中的虛擬信道可以傳輸數(shù)據(jù)包,不同虛擬網(wǎng)絡(luò)號(hào)的虛擬信道之間無法進(jìn)行數(shù)據(jù)傳輸。虛擬信道的虛擬網(wǎng)絡(luò)號(hào)是可以動(dòng)態(tài)配置的,根據(jù)一定的路由算法,每隔一段時(shí)間后會(huì)重新配置,虛擬網(wǎng)絡(luò)號(hào)碼與虛擬通道號(hào)碼的對(duì)應(yīng)關(guān)系存儲(chǔ)在一個(gè)LUT中。
考慮到動(dòng)態(tài)配置的方法需要路由算法的支持,不然容易出現(xiàn)數(shù)據(jù)混亂的結(jié)果,并且需要數(shù)據(jù)鏈路層中QoS服務(wù)的支持。為了降低硬件開銷并降低路由復(fù)雜度,本文主要實(shí)現(xiàn)了虛擬通道到虛擬網(wǎng)絡(luò)的靜態(tài)映射,根據(jù)傳輸數(shù)據(jù)包的類型劃分虛擬網(wǎng)絡(luò),實(shí)現(xiàn)了不同類型數(shù)據(jù)包在相互獨(dú)立的虛擬網(wǎng)絡(luò)中進(jìn)行傳輸。將數(shù)據(jù)包分為4種類型:配置信息、數(shù)據(jù)信息、圖像信息和廣播消息,在4個(gè)獨(dú)立的虛擬網(wǎng)絡(luò)中進(jìn)行數(shù)據(jù)傳輸。
在網(wǎng)絡(luò)層中,數(shù)據(jù)以數(shù)據(jù)包的形式存在,SpaceFibre的數(shù)據(jù)包沒有固定的大小,但是有固定的格式,如圖5所示。
圖5 SpaceFibre數(shù)據(jù)包格式[6]
Destination Address是數(shù)據(jù)包的包頭,用于存放數(shù)據(jù)包的目的地址,在路徑尋址中為0-31,在邏輯尋址中為32-255。Cargo就是數(shù)據(jù)包的主體,是需要進(jìn)行數(shù)據(jù)傳輸?shù)男畔?。EOP和EEP是包結(jié)束符號(hào),EOP是數(shù)據(jù)包結(jié)束標(biāo)志,EEP是數(shù)據(jù)包錯(cuò)誤標(biāo)志,當(dāng)識(shí)別到這兩個(gè)符號(hào)后,表明一個(gè)數(shù)據(jù)包結(jié)束,下一個(gè)數(shù)據(jù)包開始。
在本文的設(shè)計(jì)中,根據(jù)傳輸數(shù)據(jù)包的類型進(jìn)行虛擬網(wǎng)絡(luò)號(hào)碼的分配,在一個(gè)數(shù)據(jù)包到達(dá)端口時(shí),為了將其發(fā)送到最合適的數(shù)據(jù)緩沖區(qū)中,需要數(shù)據(jù)包的類型信息。因此,本文對(duì)數(shù)據(jù)包格式增加了一個(gè)新的需求,新的數(shù)據(jù)包格式如圖6所示。
圖6 本文的SpaceFibre數(shù)據(jù)包格式
對(duì)于調(diào)整后的數(shù)據(jù)包來說,在數(shù)據(jù)包發(fā)送到端口的時(shí)候就會(huì)根據(jù)數(shù)據(jù)包的類型選擇合適的虛擬通道,發(fā)送到對(duì)應(yīng)的輸入數(shù)據(jù)緩沖區(qū)中,然后通過數(shù)據(jù)包中的目標(biāo)地址信息,經(jīng)由虛擬通道發(fā)送到目的端口。由此設(shè)計(jì)出的總體功能框架如圖7所示。
圖7 路由器總體功能框架
本文設(shè)計(jì)的路由器采用4+1端口模式,4個(gè)端口為普通端口,1個(gè)端口為配置端口。配置端口是端口0,根據(jù)SpaceFibre協(xié)議的定義只能有一條虛擬通道。4個(gè)普通端口端口都是用于數(shù)據(jù)傳輸?shù)碾p向端口,每個(gè)端口有4條虛擬通道,分別是VC0、VC1、VC2、VC3。VC0屬于虛擬網(wǎng)絡(luò)0(VN0),發(fā)送和接收配置信息;VC1屬于虛擬網(wǎng)絡(luò)1(VN1),發(fā)送和接收數(shù)據(jù)信息;VC2屬于虛擬網(wǎng)絡(luò)2(VN2),發(fā)送和接收?qǐng)D像數(shù)據(jù)信息;VC3屬于虛擬網(wǎng)絡(luò)3(VN3),發(fā)送和接收廣播消息。
SpaceFibre路由器的虛擬通道主要有兩種實(shí)現(xiàn)方式:第一種方式,允許一個(gè)端口的不同虛擬通道同時(shí)傳輸數(shù)據(jù)。第二種方式,一個(gè)端口的多條虛擬通道中只有一條可以傳輸數(shù)據(jù)。第一種路由器的網(wǎng)絡(luò)層結(jié)構(gòu)中,數(shù)據(jù)流只能在路由器輸出端口的一個(gè)虛擬信道內(nèi)相互競(jìng)爭(zhēng),在這種情況下,需要有合適的虛擬網(wǎng)絡(luò)分配原則。然而,這種路由器結(jié)構(gòu)導(dǎo)致了硬件成本較高。第二種路由器的網(wǎng)絡(luò)層結(jié)構(gòu)的硬件成本基本上比前一種結(jié)構(gòu)的硬件成本低,但通過這種方式,來自不同虛擬通道的數(shù)據(jù)流共享開關(guān)矩陣。
通過分析和比較,為減少數(shù)據(jù)流之間的干擾,本文選擇第一種方式并進(jìn)行了一些改進(jìn)。參考文獻(xiàn)[5]和文獻(xiàn)[10]提出的網(wǎng)絡(luò)主節(jié)點(diǎn)概念并進(jìn)行修改,為每一條虛擬通道FIFO配備一個(gè)虛擬通道控制器,用虛擬通道控制器產(chǎn)生讀寫信號(hào)控制虛擬通道FIFO。目前采用仲裁算法控制虛擬通道控制器,未來的研究中可以用上位機(jī)分配算法直接控制虛擬通道控制器,以此為路由網(wǎng)絡(luò)增添其它的路由算法。
對(duì)于圖7的總體設(shè)計(jì),數(shù)據(jù)傳輸過程中依然存在出現(xiàn)數(shù)據(jù)阻塞的可能,譬如,當(dāng)端口一的VC1和端口二的VC1同時(shí)向端口三發(fā)送數(shù)據(jù)包,端口三的緩沖區(qū)無法同時(shí)接收兩個(gè)數(shù)據(jù)包。這時(shí)采用輪詢仲裁的方法,讓開關(guān)矩陣只連接一條通道。即同一時(shí)刻,端口的一個(gè)端點(diǎn)只能向唯一一個(gè)端點(diǎn)發(fā)送數(shù)據(jù),而端口的一個(gè)端點(diǎn)也只能唯一接收來自一個(gè)端點(diǎn)的數(shù)據(jù)。
為實(shí)現(xiàn)輪詢仲裁,開關(guān)矩陣由交叉開關(guān)矩陣(CrossBar)結(jié)構(gòu)實(shí)現(xiàn)[11]。這是一種全連接的開關(guān)結(jié)構(gòu),任意輸入端口都能在開關(guān)信號(hào)的控制下導(dǎo)通到任意輸出端口中,從而實(shí)現(xiàn)對(duì)數(shù)據(jù)的無阻塞交換,對(duì)于每個(gè)交叉開關(guān)的導(dǎo)通與斷開則是通過路由調(diào)度算法控制的[9]。由于采用了虛擬網(wǎng)絡(luò)的概念,該路由器有4個(gè)獨(dú)立運(yùn)行的網(wǎng)絡(luò),也就是有4個(gè)如圖8所示的交叉開關(guān)矩陣結(jié)構(gòu)。
圖8 輪詢仲裁算法
圖8中每個(gè)小矩形代表1個(gè)交叉開關(guān),這些開關(guān)元件為仲裁Cell,上面的數(shù)字為“輸入端口,輸出端口”。每個(gè)Cell都通過信號(hào)與四周的Cell互連,這種連接方式也體現(xiàn)了不同Cell的優(yōu)先級(jí)次序,即從上至下,從左至右優(yōu)先級(jí)依次降低。Cell的內(nèi)部結(jié)構(gòu)如圖8右側(cè)所示,該Cell仲裁成功時(shí),將該信號(hào)返回輸入端口,可以建立輸入端口到輸出端口的傳輸通路。并將其S和E信號(hào)都將變?yōu)?,從而使其下方和右側(cè)的仲裁Cell無法被使用。
根據(jù)本文的設(shè)計(jì),每個(gè)端點(diǎn)的虛擬網(wǎng)絡(luò)已經(jīng)被配置好,就簡(jiǎn)化了仲裁結(jié)構(gòu)。若是實(shí)現(xiàn)虛擬通道到虛擬網(wǎng)絡(luò)的動(dòng)態(tài)配置,則需要5×4×4個(gè)仲裁Cell,而目前的設(shè)計(jì)方案只需要5×4個(gè)仲裁Cell,降低了數(shù)據(jù)傳輸?shù)膹?fù)雜性,節(jié)省了硬件開銷。
圖8中大小為5×4的矩形實(shí)線框表示仲裁使能窗口,根據(jù)仲裁Cell的原理,當(dāng)i行j列的Cell仲裁成功后,仲裁使能窗口的首行將向下滑動(dòng)至i+1行,在下次仲裁時(shí),第i+1行的請(qǐng)求信號(hào)優(yōu)先級(jí)變?yōu)樽罡?。由此可見,在使能窗口的控制下,任何輸入端口都有機(jī)會(huì)獲得最高優(yōu)先級(jí),從而實(shí)現(xiàn)仲裁輪詢。
根據(jù)總體設(shè)計(jì),一個(gè)數(shù)據(jù)包會(huì)先進(jìn)行數(shù)據(jù)包類型的判斷,之后發(fā)送到對(duì)應(yīng)虛擬通道中,并根據(jù)目的地址將數(shù)據(jù)包選擇一條合適的FIFO進(jìn)行數(shù)據(jù)傳輸。在確定接收端有足夠的空間后,開關(guān)矩陣便使能該條FIFO,這樣就可以數(shù)據(jù)傳輸。根據(jù)數(shù)據(jù)包傳送的過程,一條FIFO對(duì)應(yīng)的結(jié)構(gòu)如圖9所示。
圖9 一條FIFO對(duì)應(yīng)的模塊化結(jié)構(gòu)
當(dāng)一個(gè)數(shù)據(jù)包準(zhǔn)備在端口之間進(jìn)行數(shù)據(jù)傳輸時(shí),首先將數(shù)據(jù)包類型信息發(fā)送給數(shù)據(jù)包類型識(shí)別模塊,判斷結(jié)果發(fā)送給虛擬通道FIFO,選擇合適的虛擬通道。之后將目的地址信息發(fā)送給目的地址仲裁模塊,仲裁結(jié)果也發(fā)送給虛擬通道FIFO,選擇虛擬通道上合適的FIFO隊(duì)列進(jìn)行傳輸。當(dāng)確定了數(shù)據(jù)唯一的通道后,通過虛擬通道控制器進(jìn)行空滿判斷,當(dāng)對(duì)應(yīng)端口的out_buffer中有足夠的空間時(shí),通過虛擬通道控制器控制該FIFO的讀寫功能,通過開關(guān)矩陣使能,才能進(jìn)行數(shù)據(jù)包的傳輸。根據(jù)操作流程,該路由器的總體工作流程如圖10所示。
圖10 路由器總體工作流程
一條虛擬通道是由多條FIFO隊(duì)列組成的,分別通向不同的目的端口,兩側(cè)也對(duì)應(yīng)著不同的數(shù)據(jù)緩沖區(qū)。為了管理路由器內(nèi)數(shù)目眾多的FIFO,每一條FIFO都配有一個(gè)虛擬通道控制器,用于給虛擬通道FIFO產(chǎn)生讀寫信號(hào)。該虛擬通道控制器接收來自FIFO兩側(cè)數(shù)據(jù)緩沖區(qū)的空滿信號(hào),也接收開關(guān)矩陣的使能信號(hào),同時(shí)可以接收上位機(jī)的配置信息。
對(duì)一條虛擬通道的FIFO來說,其具有一個(gè)虛擬通道號(hào)碼和一個(gè)目的端口號(hào)碼,通過目的端口仲裁模塊和數(shù)據(jù)包類型識(shí)別模塊發(fā)送來的兩個(gè)標(biāo)識(shí),可以唯一確定一條用于數(shù)據(jù)傳輸?shù)腇IFO。虛擬通道控制器通過判斷緩沖區(qū)的空滿狀態(tài),產(chǎn)生讀寫使能信號(hào),使FIFO讀寫數(shù)據(jù)。開關(guān)矩陣是用于使能傳輸數(shù)據(jù)的虛擬通道,作為一個(gè)開關(guān)的作用,當(dāng)虛擬通道可以發(fā)送數(shù)據(jù)時(shí)使能虛擬通道控制器,以此控制讀寫信號(hào)的產(chǎn)生。
實(shí)驗(yàn)一:數(shù)據(jù)結(jié)果
根據(jù)總體設(shè)計(jì)和模塊化設(shè)計(jì),用Verilog HDL硬件描述語言實(shí)現(xiàn)了SpaceFibre的路由器,資源占用率見表1,最小時(shí)鐘周期為4.693 ns,即最大時(shí)鐘頻率為213.083 MHz,時(shí)延為5.963 ns。36位數(shù)據(jù)包在100 MHz的同步時(shí)鐘下,利用率為25%,若是采取異步時(shí)鐘并進(jìn)行時(shí)鐘分配,可以提高利用率。
表1 資源占用率
實(shí)驗(yàn)二:數(shù)據(jù)傳輸?shù)姆抡?/p>
用Modelsim工具對(duì)該設(shè)計(jì)進(jìn)行仿真,當(dāng)輸入端口接收到數(shù)據(jù)包時(shí),將該數(shù)據(jù)包進(jìn)行識(shí)別,通過對(duì)應(yīng)的虛擬網(wǎng)絡(luò)發(fā)送到對(duì)應(yīng)的輸出端口,仿真圖如圖11所示。
圖11 數(shù)據(jù)包傳輸仿真
當(dāng)虛擬通道的第一個(gè)輸入口VC_in輸入一個(gè)數(shù)據(jù)包時(shí),對(duì)數(shù)據(jù)包的包頭進(jìn)行判別,對(duì)應(yīng)輸出端口為第6個(gè)輸出口VC_out。若輸出端口的full標(biāo)志為0,則表示該虛擬通道輸出緩沖區(qū)未滿,可以接收數(shù)據(jù)包。通過開關(guān)矩陣中仲裁Cell的使能,讓虛擬通道FIFO的讀使能fifo_rd和輸出緩沖區(qū)的寫使能VC_wr置為1,表示允許FIFO讀操作和輸出緩沖區(qū)寫操作,該數(shù)據(jù)包就能進(jìn)行傳輸。通過仿真波形可見,VC_out6輸出了數(shù)據(jù)包。
實(shí)驗(yàn)三:進(jìn)行輪詢仲裁的仿真
當(dāng)一個(gè)虛擬網(wǎng)絡(luò)的兩個(gè)輸入端口同時(shí)接收到數(shù)據(jù)包時(shí),若其對(duì)應(yīng)的輸出端口為同一個(gè),則需要用輪詢仲裁算法進(jìn)行仲裁。仿真圖如圖12所示。
圖12 進(jìn)行輪詢仲裁后數(shù)據(jù)包傳輸仿真
當(dāng)輸入虛擬通道緩沖區(qū)1和輸入虛擬通道緩沖區(qū)4同時(shí)對(duì)輸出虛擬通道緩沖區(qū)6進(jìn)行輸出傳輸時(shí),通過輪詢仲裁,讓兩個(gè)數(shù)據(jù)包通過VC_in1和VC_in4先后傳入虛擬通道FIFO,再先后傳入VC_out6。當(dāng)一個(gè)數(shù)據(jù)包允許傳輸時(shí),開關(guān)矩陣中的仲裁Cell會(huì)使能對(duì)應(yīng)FIFO的讀使能fifo_rd和輸出緩沖區(qū)的寫使能VC_wr,使數(shù)據(jù)包順利傳輸。
SpaceFibre路由器的研究依然處于初步階段,國外只有STAR-Dundee實(shí)現(xiàn)了8端口路由器IP核,但沒有應(yīng)用在航天器上的相關(guān)報(bào)道,而國內(nèi)還沒有SpaceFibre路由器方面的研究。本文實(shí)現(xiàn)了SpaceFibre路由器的功能,仿真后功能和速率都滿足設(shè)計(jì)需求。
本文參考文獻(xiàn)[5]和文獻(xiàn)[10]中提出的“網(wǎng)絡(luò)主節(jié)點(diǎn)”概念,提出了一種虛擬通道控制器。網(wǎng)絡(luò)主節(jié)點(diǎn)是一個(gè)虛擬網(wǎng)絡(luò)中具有的設(shè)備,為了日后的工作實(shí)現(xiàn)虛擬網(wǎng)絡(luò)的動(dòng)態(tài)映射,需要考慮虛擬網(wǎng)絡(luò)動(dòng)態(tài)變化的問題,于是為靜態(tài)的虛擬通道FIFO配置控制器是一種靈活的方案。該虛擬通道控制器用于控制虛擬通道的讀寫使能,讀取緩沖區(qū)的空、滿標(biāo)志,并可以由相應(yīng)的路由算法直接配置。
目前虛擬通道到虛擬網(wǎng)絡(luò)的映射采用靜態(tài)方法,通過數(shù)據(jù)包的類型進(jìn)行劃分,對(duì)于虛擬網(wǎng)絡(luò)的動(dòng)態(tài)分配問題,需要未來的工作找到一種合適的算法。