孟繁成,喬廬峰,陳慶華
(陸軍工程大學(xué) 通信工程學(xué)院,江蘇 南京 210007)
衛(wèi)星通信因其覆蓋廣、通信容量大、不受地理環(huán)境限制等優(yōu)點(diǎn),成為現(xiàn)代通信網(wǎng)的重要組成部分。星載交換機(jī)作為衛(wèi)星網(wǎng)中的關(guān)鍵節(jié)點(diǎn)設(shè)備,其性能將直接影響衛(wèi)星通信網(wǎng)的時延、帶寬、Qos等重要參數(shù)和指標(biāo)[1]。目前,星載交換機(jī)在結(jié)構(gòu)上通常借鑒地面網(wǎng)中的高性能交換機(jī)的一些關(guān)鍵技術(shù),同時增強(qiáng)其容錯能力,提高其可靠性以適應(yīng)星載需求。由于目前的衛(wèi)星通信網(wǎng)絡(luò)通常采用專用的技術(shù)體制,星載交換機(jī)硬件平臺標(biāo)準(zhǔn)化水平較低,妨礙了星載交換機(jī)關(guān)鍵硬件平臺技術(shù)的發(fā)展。RapidIO是目前使用較為廣泛的高性能串行總線技術(shù),通常應(yīng)用于分布式處理單元之間進(jìn)行高速數(shù)據(jù)傳輸。RapidIO技術(shù)支持多種類型的操作模式,既有高可靠的傳輸模式,又有快速傳輸大量數(shù)據(jù)的傳輸模式;互連帶寬大,目前最大可以支持20 Gb/s的互聯(lián)帶寬[2];支持高可靠傳輸,物理層具有錯誤檢測、流量控制和差錯重傳的機(jī)制;標(biāo)準(zhǔn)化的水平高,有利于硬件平臺的統(tǒng)一設(shè)計,可滿足未來需求。RapidIO接口目前被各類數(shù)字信號處理器、嵌入式處理器和FPGA等廣泛支持,芯片之間可以通過RapidIO交換芯片互聯(lián),形成一個完整的高性能分布式處理平臺。目前,該技術(shù)在地面通信網(wǎng)絡(luò)中被大量應(yīng)用于移動通信基站的標(biāo)準(zhǔn)平臺設(shè)計,用于實(shí)現(xiàn)分布式處理單元之間的控制和業(yè)務(wù)數(shù)據(jù)傳輸。星載交換機(jī)可以被看作一個更加復(fù)雜的、特殊的無線通信節(jié)點(diǎn),可以借鑒地面網(wǎng)基站平臺的標(biāo)準(zhǔn)化設(shè)計方法,提高其硬件平臺的性能和標(biāo)準(zhǔn)化水平。
傳統(tǒng)星載交換機(jī)的結(jié)構(gòu)如圖1所示。它由多個線卡、管理控制器、路由控制器和交換結(jié)構(gòu)組成。線卡是數(shù)據(jù)進(jìn)出交換機(jī)的入口和出口,其中的收發(fā)器模塊可進(jìn)行光-電和電-光信號變換[3]。成幀器模塊可以將接收的數(shù)據(jù)包封裝成數(shù)據(jù)幀。網(wǎng)絡(luò)處理器模塊主要進(jìn)行路由表的查找和包分類。流量管理器作為網(wǎng)絡(luò)處理器與交換結(jié)構(gòu)的連接橋梁,將來自網(wǎng)絡(luò)處理器中不同協(xié)議下的多個數(shù)據(jù)流在進(jìn)入交換結(jié)構(gòu)之前進(jìn)行處理,從而解決擁塞問題。
圖1 傳統(tǒng)交換機(jī)
本文研究的基于RapidIO的星載交換機(jī)平臺結(jié)構(gòu)如圖2所示?;鶐幚韱卧谕瓿尚盘柦邮蘸?,將接收的數(shù)據(jù)幀發(fā)往鏈路層處理模塊。鏈路層處理模塊對接收的數(shù)據(jù)幀校驗(yàn)檢查后,根據(jù)幀的類型進(jìn)行不同處理;在IP層處理單元,業(yè)務(wù)數(shù)據(jù)幀承載的IP包被提取出來進(jìn)行IP層路由查找,形成本地使用的轉(zhuǎn)發(fā)信息,并等待進(jìn)入交換結(jié)構(gòu)。交換結(jié)構(gòu)負(fù)責(zé)接收到來的數(shù)據(jù)包,然后根據(jù)每個包攜帶的轉(zhuǎn)發(fā)信息將其交換到對應(yīng)的輸出端口。圖2的各模塊使用RapidIO技術(shù)進(jìn)行互連。不同處理單元內(nèi)部不同類型的數(shù)據(jù)幀/包根據(jù)預(yù)先確定的封裝形式進(jìn)行格式轉(zhuǎn)換和封裝操作。
圖2 基于RapidIO的星載交換機(jī)
星載交換機(jī)各模塊間的數(shù)據(jù)傳輸不僅有大容量的業(yè)務(wù)流,還有容量相對較小、種類較多的控制流[2]。業(yè)務(wù)流需要高速的傳輸模式。在RapidIO中,流寫操作模式可以提供高效的數(shù)據(jù)遷移,傳輸效率高達(dá)95%,可以用來傳輸業(yè)務(wù)流??刂屏鲃t需要較高的可靠性,可以通過RapidIO中的NWRITE_R(需要返回相應(yīng)的寫操作)操作模式進(jìn)行傳輸[4]。
相較于傳統(tǒng)的交換機(jī),基于RapidIO的星載交換機(jī)具有更高的帶寬,各模塊間通過RapidIO技術(shù)互連,提升了傳輸?shù)目煽啃?,降低了傳輸時延。它的核心是帶有RapidIO接口的大容量交換矩陣。
與傳統(tǒng)的交換矩陣相比,基于RapidIO的大容量交換矩陣同樣要支持單播、組播和廣播,支持無阻塞交換。除了端口支持RapidIO規(guī)范外,內(nèi)部電路可以采用不同類型的大容量交換矩陣的設(shè)計方法。本文采用的是大容量三級Clos結(jié)構(gòu)。與傳統(tǒng)交換矩陣不同的是,RapidIO的最大幀長為256 B[4],遠(yuǎn)小于以太網(wǎng)等地面網(wǎng)絡(luò)的最大幀長,在前級需要對長包進(jìn)行第一次分割。在交換結(jié)構(gòu)內(nèi)部,RapidIO接收的數(shù)據(jù)包需要根據(jù)大容量交換矩陣的要求將其分割為內(nèi)部信元,然后按照變長調(diào)度的方法將內(nèi)部信元交換到各個輸出端口,然后在端口處進(jìn)行重組,輸出RapidIO數(shù)據(jù)包。
交換矩陣的RapidIO端口電路結(jié)構(gòu)如圖3所示,主要包含RapidIO IP核和接口處理電路兩個模塊。接口處理電路與RapidIO IP核和三級Clos交換結(jié)構(gòu)相連,主要包括以下兩個模塊。
(1)發(fā)送模塊:將三級Clos交換結(jié)構(gòu)的數(shù)據(jù)格式轉(zhuǎn)化為RapidIO IP核支持的幀格式,并將數(shù)據(jù)發(fā)送到RapidIO IP核內(nèi)。
(2)接收模塊:將RapidIO IP核從遠(yuǎn)端設(shè)備中接收到的數(shù)據(jù)進(jìn)行存儲,并將其轉(zhuǎn)換為可在交換結(jié)構(gòu)中使用的包格式,然后將其發(fā)送到三級Clos交換結(jié)構(gòu)的輸入級中。
圖3 RapidIO端口的結(jié)構(gòu)
本設(shè)計通過在ISE上例化IP核的方式實(shí)現(xiàn)RapidIO的點(diǎn)對點(diǎn)通信功能。Xilinx FPGA中RapidIO IP核結(jié)構(gòu)如圖4所示,包括邏輯層(LOG)、緩存層(BUF)和物理層(PHY)。邏輯層主要定義了I/O端口、包格式,提供了事務(wù)在器件之間傳輸所需要的信息[5]。緩存層主要為物理層提供數(shù)據(jù)存儲的緩沖區(qū),用于實(shí)現(xiàn)高速、可靠的數(shù)據(jù)傳輸和流量控制功能。物理層規(guī)范包括了器件的接口細(xì)節(jié),如包的傳輸機(jī)制、包傳輸錯誤時的處理方式、流量控制和CRC校驗(yàn)等。此外,還有獨(dú)立的時鐘模塊、復(fù)位模塊和FPGA中的GTX(RapidIO_gt_wrapper)[6]。
圖4 xilinx FPGA中RapidIO IP核的結(jié)構(gòu)
接口處理電路收到來自RapidIO內(nèi)核發(fā)送的數(shù)據(jù)包后,需要完成轉(zhuǎn)發(fā)表查找、本地頭生成和分割形成內(nèi)部信元等操作。
RapidIO的流寫事務(wù)幀格式如圖5所示。包頭所包含的信息為發(fā)送序號(tid)、事務(wù)類型(ftype)、優(yōu)先級(prio)、幀的長度(size)、源地址和目的地址(addr),這些信息是交換矩陣的前級電路生成的。RapidIO接口處理電路通過查詢RapidIO包頭信息中的目的地址,確定數(shù)據(jù)要發(fā)往的端口號(port)、端口映射(portmap)、數(shù)據(jù)是否為多播(multicast)業(yè)務(wù)。目前,實(shí)現(xiàn)的三級Clos交換結(jié)構(gòu)通常針對64 B的定長信元進(jìn)行交換(如圖6所示),而RapidIO發(fā)送來的數(shù)據(jù)包長度介于8~256 B,所以RapidIO接口處理電路需要將長度大于64 B的數(shù)據(jù)包切割成64 B的定長信元。對于長度小于64 B的數(shù)據(jù)包,需要將其長度補(bǔ)足至64 B。接口處理電路在完成上面的操作后,將轉(zhuǎn)換后的數(shù)據(jù)發(fā)送到三級Clos交換結(jié)構(gòu)的輸入級中。
圖5 RapidIO的流寫事務(wù)幀格式
圖6 交換機(jī)中定長信元的幀格式
圖7 為接口處理電路在接收方向的工作流程圖。接口處理電路的發(fā)送模塊會不斷對RapidIO IP核進(jìn)行檢測,在檢測到RapidIO IP核發(fā)送的數(shù)據(jù)有效時,接口處理電路會將接收到的數(shù)據(jù)包存儲至存儲器A(如圖3所示),并啟用計數(shù)器對數(shù)據(jù)包的包長進(jìn)行計數(shù)。同時,接口電路的接收模塊將從RapidIO IP核接收到的數(shù)據(jù)包中的包頭信息(如圖5所示)提取得到其優(yōu)先級和目的地址。然后,接口處理電路的發(fā)送模塊根據(jù)其目的地址查找本地的轉(zhuǎn)發(fā)表,得到其在內(nèi)部交換結(jié)構(gòu)的輸出端口號和端口映射,并將得到的信息封裝到本地頭(如圖6所示)。之后,接口處理電路的發(fā)送模塊將封裝好的本地頭存儲至存儲器C中。接口電路的接收模塊會不斷判斷接收到的數(shù)據(jù),當(dāng)接收到的數(shù)據(jù)為數(shù)據(jù)包的最后一個數(shù)據(jù)時,完成對數(shù)據(jù)包包長的計數(shù),并將數(shù)據(jù)包的包長信息存儲至存儲器B中。當(dāng)存儲器B非空時,接口處理電路分別讀取存儲器A和存儲器C,得到添加了本地頭后的數(shù)據(jù)包(如圖8所示),然后接口處理電路對添加了本地頭后的數(shù)據(jù)包的包長進(jìn)行判斷。當(dāng)數(shù)據(jù)包的包長大于64 B時,電路會將數(shù)據(jù)包分割成定長的64 B,當(dāng)數(shù)據(jù)包的包長小于64 B時,電路會將數(shù)據(jù)包補(bǔ)足至64 B。最后,電路將處理后的數(shù)據(jù)包發(fā)送到三級Clos交換結(jié)構(gòu)中。
圖7 接口處理電路在接收方向的流程
圖8 添加本地頭后的數(shù)據(jù)包
接口處理電路的發(fā)送模塊在接收到由三級Clos交換結(jié)構(gòu)發(fā)送過來的信元后,對其是否為數(shù)據(jù)幀的首信元進(jìn)行判斷。只有當(dāng)其為數(shù)據(jù)幀的首信元時,才會對該信元進(jìn)行存儲。信元存儲完成后,電路不斷檢測RapidIO IP核的狀態(tài),以確定其是否可以接收數(shù)據(jù)。只有RapidIO IP核可以接收數(shù)據(jù)時,電路才會讀出存儲器中的信元,將去掉本地頭的該信元發(fā)送至RapidIO IP核中。當(dāng)檢測到所發(fā)送的信元為數(shù)據(jù)幀的最后一個信元時,發(fā)送模塊生成一個指示信號至RapidIO IP核,用于表示完成了一個數(shù)據(jù)幀的傳輸。
本設(shè)計的交換結(jié)構(gòu)采用中間級無緩存的存儲-空分-存儲(Memory-Space-Memory,MSM)三級Clos交換結(jié)構(gòu),如圖9所示。它包含4個輸入級模塊(Input Module,IM)、1個中間級模塊(Central Module,CM)和4個輸出級模塊(Output Module,OM)。
圖9 星載RapidIO交換機(jī)的整體結(jié)構(gòu)
輸入級模塊包含4個RapidIO端口、4個隊(duì)列控制器(Queue Controller,QC)和輸入級調(diào)度器。來自于RapidIO接口處理電路的內(nèi)部信元,對目的端口可能有16個不同的選擇。為了減少隊(duì)頭阻塞以提高交換結(jié)構(gòu)的吞吐量,本設(shè)計在輸入端采用虛擬輸出隊(duì)列(Virtual output queuing,VOQ)對輸入數(shù)據(jù)進(jìn)行排隊(duì)。每個VOQ中包含8個不同優(yōu)先級的隊(duì)列,可為用戶提供8個不同優(yōu)先級的服務(wù)。每個IM中使用4個隊(duì)列控制器(QC0、QC1、QC2、QC3),分別維護(hù)與4個不同OM對應(yīng)的VOQ,即QC0維護(hù)與OM0中4個輸出端口對應(yīng)的4個VOQ,QC1維護(hù)與OM1中4個輸出端口對應(yīng)的4個VOQ,以此類推。在每個QC中,使用一個存儲器存放這32個隊(duì)列,并采用鏈表的形式實(shí)現(xiàn)對這些邏輯隊(duì)列的控制。輸入級調(diào)度器主要用于16個輸入級隊(duì)列與4條輸出鏈路之間的迭代匹配。
CM中含有16條輸入鏈路和輸出鏈路、1個中間級調(diào)度器和1個無緩存的16×16交叉開關(guān)矩陣(Crossbar)。其中,中間級調(diào)度器的工作是協(xié)助在各個IM中共4個輸入級調(diào)度器完成鏈路的有效分配并避免發(fā)生沖突。16×16的無緩存Crossbar用于提供從輸入級模塊到輸出級模塊的無阻塞連接,可以直接將到達(dá)的數(shù)據(jù)轉(zhuǎn)發(fā)出去。在中間級采用無緩存的Crossbar方案,可以避免信元亂序,簡化控制邏輯的設(shè)計。
輸出級模塊與輸入級模塊結(jié)構(gòu)相同。
基于RapidIO的星載交換機(jī)的實(shí)現(xiàn)選用Xilinx的xc6vlx240T FPGA,開發(fā)環(huán)境為ISE14.7,電路模塊采用Verilog HDL編程,并用Modelsim 10.2c進(jìn)行仿真分析。
圖10為接口處理電路接收模塊從RapidIO IP核中接收數(shù)據(jù)的過程。接口處理電路的接收模塊在從RapidIO IP核內(nèi)接收到數(shù)據(jù)包后,加入交換結(jié)構(gòu)中進(jìn)行交換所需的信息。圖10中的val_treq_tdata為流寫事務(wù)的包格式,前64 bit為包頭信息。接收模塊根據(jù)流寫事務(wù)的包頭信息來確定數(shù)據(jù)的輸出端口號(i_cell_port)是否為多播(i_cell_multicast)、優(yōu)先級(i_cell_prio)等信息,并將這些信息封裝成一個適用于交換結(jié)構(gòu)的本地頭,然后將新的包頭作為輸入(data_fifo_din)存儲到存儲器C中。
圖10 接口處理電路接收模塊的仿真結(jié)果
圖11 顯示了接口處理電路發(fā)送模塊在接收到數(shù)據(jù)后進(jìn)行存儲并發(fā)送到RapidIO IP核的過程。輸出級輸出的數(shù)據(jù)位寬為64 bit,電路會判斷到來的數(shù)據(jù)是否為數(shù)據(jù)幀的首個數(shù)據(jù)。當(dāng)它為首個數(shù)據(jù)時,將到來的數(shù)據(jù)進(jìn)行存儲,并將此時cell_fifo_din_的值賦給cell_fifo_din,同時將cell_fifo_wr置為高電平完成數(shù)據(jù)的存儲。發(fā)送模塊將輸出級發(fā)送來的數(shù)據(jù)存儲到存儲器后,需要再把數(shù)據(jù)發(fā)送到RapidIO IP核內(nèi)。當(dāng)信號cell_fifo_rd為1時,表示電路的發(fā)送模塊開始從存儲器中讀取數(shù)據(jù)。發(fā)送模塊在讀取出數(shù)據(jù)后發(fā)送給RapidIO IP核,完成與RapidIO IP核之間的通信。
圖11 接口處理電路發(fā)送模塊的仿真結(jié)果
如圖12所示,接口處理電路將數(shù)據(jù)發(fā)送至三級Clos交換結(jié)構(gòu)的輸入級。同時,發(fā)送到三級Clos交換結(jié)構(gòu)中的還有信元的包頭信息,其中的i_cell_dlp表示數(shù)據(jù)的優(yōu)先級,i_cell_portmap表示端口映射,i_cell_first表示信元是否為數(shù)據(jù)幀的首個信元,i_cell_port表示信元的輸出端口。從圖12可以看出,到來的信元為數(shù)據(jù)幀的首個信元,優(yōu)先級為0,端口映射為1,輸出端口為0。
圖12中的數(shù)據(jù)在經(jīng)過存儲轉(zhuǎn)發(fā)、排隊(duì)調(diào)度后,發(fā)往其對應(yīng)的輸出端口。圖13為輸出端口0的仿真圖,其中的data為三級Clos交換結(jié)構(gòu)發(fā)往接口處理電路的數(shù)據(jù)??梢钥吹剑瑘D12中輸入級中的數(shù)據(jù)i_cell_fifo_din與圖13中輸出端口0的數(shù)據(jù)data為同一數(shù)據(jù),表明交換結(jié)構(gòu)完成了數(shù)據(jù)交換,將其從對應(yīng)的目的端口輸出到了接口處理電路中。
圖12 三級clos交換結(jié)構(gòu)輸入級的仿真結(jié)果
圖13 三級clos輸出級端口0的仿真結(jié)果
本文對基于RapidIO的星載交換機(jī)關(guān)鍵硬件平臺技術(shù)進(jìn)行了研究,給出了基于RapidIO的星載交換機(jī)的硬件平臺結(jié)構(gòu),分析了RapidIO的典型總線事務(wù)與交換機(jī)設(shè)計需求之間的映射關(guān)系。在此基礎(chǔ)上,重點(diǎn)設(shè)計和分析了RapidIO交換機(jī)中的接口處理電路及其收發(fā)操作流程,給出了作為交換核心的3級Clos交換結(jié)構(gòu)的具體組成。交換機(jī)具有16個端口,單端口最大速率為5 Gb/s,交換容量為80 Gb/s。交換機(jī)采用Verilog硬件描述語言設(shè)計完成,采用modelsim10.2c進(jìn)行仿真分析,給出了關(guān)鍵電路的典型仿真結(jié)果。交換機(jī)在Xilinx xc6vlx240t上進(jìn)行了具體的綜合實(shí)現(xiàn),驗(yàn)證了設(shè)計的可行性。