西南電子技術研究所 柳 兵
本文針對現代雷達系統中嵌入電子設備廣泛互聯的需求,設計了一種基于RapidIO協議的小型交換網絡,該網絡具有4個交換子卡和48個業務子卡,4個交換子卡通過光纖互聯,從而實現了一個速率為2.5Gbps的1x全交換的RapidIO網絡;同時,在分析交換芯片路由工作機制的基礎上,設計了基于I2C接口的路由配置方法,并給出了路由配置流程。
現代雷達系統設備通常由多插箱、多分機、多模塊組成。各分機、模塊、插箱之間的數據通信,傳統上采用串行異步串口或以太網接口實現數據交互。但串行異步串口通信接口速率不高,一般計算機的RS232異步串口的最高通信速率為115.2kbps。當采用以太網接接口時,通常采用UDP協議傳輸數據,其傳輸的實時性和可靠性無法保證。RapidIO協議為精簡的三層網絡結構,底層采用控制字符實現流量控制和差錯重傳機制,使得RapidIO協議在傳輸時開銷比以太網協議更少,傳輸的實時性更好;同時,由于采用了差錯重傳機制,使得數據傳輸的可靠性得到了保證。近年來,串行RapidIO協議已經廣泛應用于嵌入式設備互聯中,可以實現板卡內和板卡之間DSP、FPGA、PowerPC等處理器之間等高速數據交換。現在,大多數處理器都支持串行RapidIO接口,尤其是xilinx公司的FPGA系列芯片,集成了大量的高速串行收發器硬核,輔以xilinx公司的軟件IP核,可以輕松地實現RapidIO協議。因此,現代雷達系統設備在實現插箱間、分機間、模塊間的高速數據傳輸時,越來越傾向于選擇RapidIO協議。構建基于RapidIO協議的交換網絡,關鍵是兩類設備,一是端點子卡,二是交換子卡。端點子卡也就是各業務功能模塊,主處理器由FPGA/DSP/PowerPC等組成;交換子卡是實現RapidIO路由功能的關鍵模塊,通過交換子卡能夠實現各業務模塊的全交換數據通信。由多個交換子卡和業務子卡構成的系統,也就構成了RapidIO交換網絡。
RapidIO協議采用三層分級的體系結構,分別為邏輯層、傳輸層、物理層。邏輯層規范在最頂層,定義了接口的全部協議和包格式,它們為器件發起和完成事務提供必要的信息。傳輸層規范在中間層,定義了RapidIO地址空間和數據在端點器件間傳輸包所需要的路由信息。物理層規范位于整個分級結構的底部,定義了器件級的接口細節,如包傳輸機制、流量控制、電氣特性和低級錯誤管理。RapidIO協議結構圖如圖1所示。

圖1 RapidIO協議結構圖
現在的芯片在RapidIO協議的物理層的實現方式大多采用串行方式,也就是通常所說的serieal RapidIO協議(簡稱為SRIO)。
在某型雷達系統設備中,基于業務處理能力以及數據傳輸能力的需求,設計了一個由4個基于VPX標準插箱組成的小型RapdiIO交換網絡,每個插箱由1個交換子卡和12個業務子卡組成,這樣的系統共有4個交換子卡和48個業務子卡。各插箱內的業務子卡通過本插箱內的交換子卡實現數據交換,4個插箱之間通過4個交換子卡的光纖接口實現數據交換。這樣,插箱之間的業務子卡通過4個交換子卡之間的數據路由轉換,可以實現4個插箱的48個業務子卡任意兩個業務子卡的互聯互通,從而構成了1個小型的RapidIO交換網絡,該交換網絡的拓撲結構如圖2所示。

圖2 小型RapidIO交換網絡拓撲結構
圖2中的小型RapidIO交換網絡的核心部件為4個交換子卡,4個交換子卡在4個插箱內采用后插件的光模塊形式,4個交換子卡以光纖線進行物理連接。
4個交換子卡的硬件結構統一,通過配置不同的路由表來完成各插箱內的交換業務和插箱間的交換業務。4個交換子卡實現交換功能的芯片為專用的RapidIO交換芯片CPS1616,該交換芯片為IDT公司開發的基于RapidIOV2.1標準協議的交換芯片,是實現RapidIO交換功能的核心芯片。該芯片主要的功能特點如下:(1)16個雙向的SRIO Lanes;(2)端口寬度支持1x,2x,4x;(3)端口可選擇,支持6.25、5、3.125、1.25Gbaud;(4)支持RapidIO錯誤管理增強規范;(5)軟件輔助錯誤恢復,端口支持熱插拔。
本設計中,交換芯片CPS1616配置為16個1x模式,端口速率設置為2.5Gbps,每個插箱內的12個業務模塊使用2~13號端口,交換子卡上的FPGA使用14號端口,插箱之間的光纖接口使用0號或1號端口進行連接。
路由表配置是實現交換網絡的核心環節,要實現全網所有節點的任意交換,RapidIO協議為每一個節點規定了一個物理地址(被稱為ID地址),該地址在全網中是唯一的,第一代RapidIO標準只支持8bit的ID地址,第二代RapidIO標準可支持16bit的ID地址。當使用16bit的ID地址時,結合本案例,可以使用高8bit表示插箱的編號,低8bit表示本插箱內的業務模塊的編號,這樣構建的ID地址編碼機制剛好可以和CPS1616芯片的路由表機制結合起來。
RapidIO交換芯片CPS1616實現Rapidio路由協議是通過查找路由表來實現的,為實現RapidIO任意節點的互聯互通。RapidIO交換數據包的過程是通過查找路由表來實現的,即把ID號作為索引號,查找對應的輸出端口,如表1所示。

表1 CPS1616交換芯片路由表示意圖
IDT的CPS1616為第二代RapidIO交換芯片,每個端口可設置兩張路由表,分別為本地路由表(Device Routing Table)和系統路由表(Domain Routing Table),每個路由表都有256個入口。之所以使用兩張路由表,是因為S-RIO交換網絡通常是由多個子卡組成,而每個子卡又有多個處理節點組成。系統路由表負責把SRIO數據路由到各個子卡,而本地路由表負責把SRIO數據路由到同一子卡的各個處理節點。具體的路由流程如圖3所示。

圖3 RIO交換芯片路由數據包流程
圖3中描述了IDT SRIO交換芯片的路由數據包的流程,本地路由表負責路由8bit目的ID地址的數據包,或者高字節為0的16bit目的地址數據包。系統路由表負責路由高字節為非0的16bit目的地址數據。但以下兩種情況下需另行考慮, 一是16bit目的地址的高8bit與RapidIO Domain寄存器里的事先編程值一致,二是系統路由表的入口值為0xDD。路由表參考值的約束表如表2。

表2 路由表參考值約束
RapidIO協議提供兩個標準的偏移地址來配置路由表,分別為標準路由表入口配置目的地址選擇寄存器(偏移地址為0x70)以及標準路由表入口配置端口選擇寄存器(偏移地址為0x74)。通過這兩個寄存器的配置,并結合對IDT專用芯片特有寄存器RIO_DOMAIN寄存器的配置就可以完成對整個系統網絡的路由表配置。
RapidIO交換芯片共有3種配置方法。分別為I2C接口主動配置、I2C接口被動配置、外部主機通過RapidIO鏈路配置。本案例中采用I2C接口被動配置方案。
系統中的4個交換子卡分別配置于4個插箱,因為每個交換子卡需要完成的交換任務不同,因此4個交換子卡需要配置不同的交換路由表。本案例中采用I2C接口被動配置方案來實現交換子卡的路由表配置,每個交換子卡有1個單片機,利用單片機的I2C接口作為主設備,交換芯片的I2C接口作為從設備,通過I2C完成對交換芯片的路由表配置以及相關控制寄存器的編程與控制。具體控制流程為:系統上電后,根據插槽號識別交換子卡處于哪個插箱,不同的插箱調用對應的交換子卡的路由配置子程序,在交換子卡路由配置子程序中對48個業務子卡的ID分別進行路由表的配置,配置過程包括對交換芯片的所有端口針對每一業務子卡ID進行地址選擇寄存器配置、端口選擇寄存器配置以及RIO_DOMAIN寄存器的配置來完成路由表配置。具有配置流程如圖4所示。

圖4 系統路由配置流程
結束語:本文分析了RapidIO協議的三層分級的體系結構,結合現代雷達電子系統設備的嵌入式互聯的需求,設計了一個具有48個業務子卡+4個交換子卡的小型交換網絡。對交換子卡實現交換功能的核心芯片CPS1616的功能特點進行了介紹,深入分析了交換芯片CPS1616的實現路由查找表的工作原理,并在此基礎上,設計了基于I2C接口實現交換芯片被動路由表配置方法,該方法簡單實用,只需要一個低成本的單片機即可實現,具有一定的工程實用價值。