西南電子技術(shù)研究所 柳 兵
本文針對(duì)現(xiàn)代雷達(dá)系統(tǒng)中嵌入電子設(shè)備廣泛互聯(lián)的需求,設(shè)計(jì)了一種基于RapidIO協(xié)議的小型交換網(wǎng)絡(luò),該網(wǎng)絡(luò)具有4個(gè)交換子卡和48個(gè)業(yè)務(wù)子卡,4個(gè)交換子卡通過(guò)光纖互聯(lián),從而實(shí)現(xiàn)了一個(gè)速率為2.5Gbps的1x全交換的RapidIO網(wǎng)絡(luò);同時(shí),在分析交換芯片路由工作機(jī)制的基礎(chǔ)上,設(shè)計(jì)了基于I2C接口的路由配置方法,并給出了路由配置流程。
現(xiàn)代雷達(dá)系統(tǒng)設(shè)備通常由多插箱、多分機(jī)、多模塊組成。各分機(jī)、模塊、插箱之間的數(shù)據(jù)通信,傳統(tǒng)上采用串行異步串口或以太網(wǎng)接口實(shí)現(xiàn)數(shù)據(jù)交互。但串行異步串口通信接口速率不高,一般計(jì)算機(jī)的RS232異步串口的最高通信速率為115.2kbps。當(dāng)采用以太網(wǎng)接接口時(shí),通常采用UDP協(xié)議傳輸數(shù)據(jù),其傳輸?shù)膶?shí)時(shí)性和可靠性無(wú)法保證。RapidIO協(xié)議為精簡(jiǎn)的三層網(wǎng)絡(luò)結(jié)構(gòu),底層采用控制字符實(shí)現(xiàn)流量控制和差錯(cuò)重傳機(jī)制,使得RapidIO協(xié)議在傳輸時(shí)開銷比以太網(wǎng)協(xié)議更少,傳輸?shù)膶?shí)時(shí)性更好;同時(shí),由于采用了差錯(cuò)重傳機(jī)制,使得數(shù)據(jù)傳輸?shù)目煽啃缘玫搅吮WC。近年來(lái),串行RapidIO協(xié)議已經(jīng)廣泛應(yīng)用于嵌入式設(shè)備互聯(lián)中,可以實(shí)現(xiàn)板卡內(nèi)和板卡之間DSP、FPGA、PowerPC等處理器之間等高速數(shù)據(jù)交換?,F(xiàn)在,大多數(shù)處理器都支持串行RapidIO接口,尤其是xilinx公司的FPGA系列芯片,集成了大量的高速串行收發(fā)器硬核,輔以xilinx公司的軟件IP核,可以輕松地實(shí)現(xiàn)RapidIO協(xié)議。因此,現(xiàn)代雷達(dá)系統(tǒng)設(shè)備在實(shí)現(xiàn)插箱間、分機(jī)間、模塊間的高速數(shù)據(jù)傳輸時(shí),越來(lái)越傾向于選擇RapidIO協(xié)議。構(gòu)建基于RapidIO協(xié)議的交換網(wǎng)絡(luò),關(guān)鍵是兩類設(shè)備,一是端點(diǎn)子卡,二是交換子卡。端點(diǎn)子卡也就是各業(yè)務(wù)功能模塊,主處理器由FPGA/DSP/PowerPC等組成;交換子卡是實(shí)現(xiàn)RapidIO路由功能的關(guān)鍵模塊,通過(guò)交換子卡能夠?qū)崿F(xiàn)各業(yè)務(wù)模塊的全交換數(shù)據(jù)通信。由多個(gè)交換子卡和業(yè)務(wù)子卡構(gòu)成的系統(tǒng),也就構(gòu)成了RapidIO交換網(wǎng)絡(luò)。
RapidIO協(xié)議采用三層分級(jí)的體系結(jié)構(gòu),分別為邏輯層、傳輸層、物理層。邏輯層規(guī)范在最頂層,定義了接口的全部協(xié)議和包格式,它們?yōu)槠骷l(fā)起和完成事務(wù)提供必要的信息。傳輸層規(guī)范在中間層,定義了RapidIO地址空間和數(shù)據(jù)在端點(diǎn)器件間傳輸包所需要的路由信息。物理層規(guī)范位于整個(gè)分級(jí)結(jié)構(gòu)的底部,定義了器件級(jí)的接口細(xì)節(jié),如包傳輸機(jī)制、流量控制、電氣特性和低級(jí)錯(cuò)誤管理。RapidIO協(xié)議結(jié)構(gòu)圖如圖1所示。
圖1 RapidIO協(xié)議結(jié)構(gòu)圖
現(xiàn)在的芯片在RapidIO協(xié)議的物理層的實(shí)現(xiàn)方式大多采用串行方式,也就是通常所說(shuō)的serieal RapidIO協(xié)議(簡(jiǎn)稱為SRIO)。
在某型雷達(dá)系統(tǒng)設(shè)備中,基于業(yè)務(wù)處理能力以及數(shù)據(jù)傳輸能力的需求,設(shè)計(jì)了一個(gè)由4個(gè)基于VPX標(biāo)準(zhǔn)插箱組成的小型RapdiIO交換網(wǎng)絡(luò),每個(gè)插箱由1個(gè)交換子卡和12個(gè)業(yè)務(wù)子卡組成,這樣的系統(tǒng)共有4個(gè)交換子卡和48個(gè)業(yè)務(wù)子卡。各插箱內(nèi)的業(yè)務(wù)子卡通過(guò)本插箱內(nèi)的交換子卡實(shí)現(xiàn)數(shù)據(jù)交換,4個(gè)插箱之間通過(guò)4個(gè)交換子卡的光纖接口實(shí)現(xiàn)數(shù)據(jù)交換。這樣,插箱之間的業(yè)務(wù)子卡通過(guò)4個(gè)交換子卡之間的數(shù)據(jù)路由轉(zhuǎn)換,可以實(shí)現(xiàn)4個(gè)插箱的48個(gè)業(yè)務(wù)子卡任意兩個(gè)業(yè)務(wù)子卡的互聯(lián)互通,從而構(gòu)成了1個(gè)小型的RapidIO交換網(wǎng)絡(luò),該交換網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)如圖2所示。
圖2 小型RapidIO交換網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)
圖2中的小型RapidIO交換網(wǎng)絡(luò)的核心部件為4個(gè)交換子卡,4個(gè)交換子卡在4個(gè)插箱內(nèi)采用后插件的光模塊形式,4個(gè)交換子卡以光纖線進(jìn)行物理連接。
4個(gè)交換子卡的硬件結(jié)構(gòu)統(tǒng)一,通過(guò)配置不同的路由表來(lái)完成各插箱內(nèi)的交換業(yè)務(wù)和插箱間的交換業(yè)務(wù)。4個(gè)交換子卡實(shí)現(xiàn)交換功能的芯片為專用的RapidIO交換芯片CPS1616,該交換芯片為IDT公司開發(fā)的基于RapidIOV2.1標(biāo)準(zhǔn)協(xié)議的交換芯片,是實(shí)現(xiàn)RapidIO交換功能的核心芯片。該芯片主要的功能特點(diǎn)如下:(1)16個(gè)雙向的SRIO Lanes;(2)端口寬度支持1x,2x,4x;(3)端口可選擇,支持6.25、5、3.125、1.25Gbaud;(4)支持RapidIO錯(cuò)誤管理增強(qiáng)規(guī)范;(5)軟件輔助錯(cuò)誤恢復(fù),端口支持熱插拔。
本設(shè)計(jì)中,交換芯片CPS1616配置為16個(gè)1x模式,端口速率設(shè)置為2.5Gbps,每個(gè)插箱內(nèi)的12個(gè)業(yè)務(wù)模塊使用2~13號(hào)端口,交換子卡上的FPGA使用14號(hào)端口,插箱之間的光纖接口使用0號(hào)或1號(hào)端口進(jìn)行連接。
路由表配置是實(shí)現(xiàn)交換網(wǎng)絡(luò)的核心環(huán)節(jié),要實(shí)現(xiàn)全網(wǎng)所有節(jié)點(diǎn)的任意交換,RapidIO協(xié)議為每一個(gè)節(jié)點(diǎn)規(guī)定了一個(gè)物理地址(被稱為ID地址),該地址在全網(wǎng)中是唯一的,第一代RapidIO標(biāo)準(zhǔn)只支持8bit的ID地址,第二代RapidIO標(biāo)準(zhǔn)可支持16bit的ID地址。當(dāng)使用16bit的ID地址時(shí),結(jié)合本案例,可以使用高8bit表示插箱的編號(hào),低8bit表示本插箱內(nèi)的業(yè)務(wù)模塊的編號(hào),這樣構(gòu)建的ID地址編碼機(jī)制剛好可以和CPS1616芯片的路由表機(jī)制結(jié)合起來(lái)。
RapidIO交換芯片CPS1616實(shí)現(xiàn)Rapidio路由協(xié)議是通過(guò)查找路由表來(lái)實(shí)現(xiàn)的,為實(shí)現(xiàn)RapidIO任意節(jié)點(diǎn)的互聯(lián)互通。RapidIO交換數(shù)據(jù)包的過(guò)程是通過(guò)查找路由表來(lái)實(shí)現(xiàn)的,即把ID號(hào)作為索引號(hào),查找對(duì)應(yīng)的輸出端口,如表1所示。
表1 CPS1616交換芯片路由表示意圖
IDT的CPS1616為第二代RapidIO交換芯片,每個(gè)端口可設(shè)置兩張路由表,分別為本地路由表(Device Routing Table)和系統(tǒng)路由表(Domain Routing Table),每個(gè)路由表都有256個(gè)入口。之所以使用兩張路由表,是因?yàn)镾-RIO交換網(wǎng)絡(luò)通常是由多個(gè)子卡組成,而每個(gè)子卡又有多個(gè)處理節(jié)點(diǎn)組成。系統(tǒng)路由表負(fù)責(zé)把SRIO數(shù)據(jù)路由到各個(gè)子卡,而本地路由表負(fù)責(zé)把SRIO數(shù)據(jù)路由到同一子卡的各個(gè)處理節(jié)點(diǎn)。具體的路由流程如圖3所示。
圖3 RIO交換芯片路由數(shù)據(jù)包流程
圖3中描述了IDT SRIO交換芯片的路由數(shù)據(jù)包的流程,本地路由表負(fù)責(zé)路由8bit目的ID地址的數(shù)據(jù)包,或者高字節(jié)為0的16bit目的地址數(shù)據(jù)包。系統(tǒng)路由表負(fù)責(zé)路由高字節(jié)為非0的16bit目的地址數(shù)據(jù)。但以下兩種情況下需另行考慮, 一是16bit目的地址的高8bit與RapidIO Domain寄存器里的事先編程值一致,二是系統(tǒng)路由表的入口值為0xDD。路由表參考值的約束表如表2。
表2 路由表參考值約束
RapidIO協(xié)議提供兩個(gè)標(biāo)準(zhǔn)的偏移地址來(lái)配置路由表,分別為標(biāo)準(zhǔn)路由表入口配置目的地址選擇寄存器(偏移地址為0x70)以及標(biāo)準(zhǔn)路由表入口配置端口選擇寄存器(偏移地址為0x74)。通過(guò)這兩個(gè)寄存器的配置,并結(jié)合對(duì)IDT專用芯片特有寄存器RIO_DOMAIN寄存器的配置就可以完成對(duì)整個(gè)系統(tǒng)網(wǎng)絡(luò)的路由表配置。
RapidIO交換芯片共有3種配置方法。分別為I2C接口主動(dòng)配置、I2C接口被動(dòng)配置、外部主機(jī)通過(guò)RapidIO鏈路配置。本案例中采用I2C接口被動(dòng)配置方案。
系統(tǒng)中的4個(gè)交換子卡分別配置于4個(gè)插箱,因?yàn)槊總€(gè)交換子卡需要完成的交換任務(wù)不同,因此4個(gè)交換子卡需要配置不同的交換路由表。本案例中采用I2C接口被動(dòng)配置方案來(lái)實(shí)現(xiàn)交換子卡的路由表配置,每個(gè)交換子卡有1個(gè)單片機(jī),利用單片機(jī)的I2C接口作為主設(shè)備,交換芯片的I2C接口作為從設(shè)備,通過(guò)I2C完成對(duì)交換芯片的路由表配置以及相關(guān)控制寄存器的編程與控制。具體控制流程為:系統(tǒng)上電后,根據(jù)插槽號(hào)識(shí)別交換子卡處于哪個(gè)插箱,不同的插箱調(diào)用對(duì)應(yīng)的交換子卡的路由配置子程序,在交換子卡路由配置子程序中對(duì)48個(gè)業(yè)務(wù)子卡的ID分別進(jìn)行路由表的配置,配置過(guò)程包括對(duì)交換芯片的所有端口針對(duì)每一業(yè)務(wù)子卡ID進(jìn)行地址選擇寄存器配置、端口選擇寄存器配置以及RIO_DOMAIN寄存器的配置來(lái)完成路由表配置。具有配置流程如圖4所示。
圖4 系統(tǒng)路由配置流程
結(jié)束語(yǔ):本文分析了RapidIO協(xié)議的三層分級(jí)的體系結(jié)構(gòu),結(jié)合現(xiàn)代雷達(dá)電子系統(tǒng)設(shè)備的嵌入式互聯(lián)的需求,設(shè)計(jì)了一個(gè)具有48個(gè)業(yè)務(wù)子卡+4個(gè)交換子卡的小型交換網(wǎng)絡(luò)。對(duì)交換子卡實(shí)現(xiàn)交換功能的核心芯片CPS1616的功能特點(diǎn)進(jìn)行了介紹,深入分析了交換芯片CPS1616的實(shí)現(xiàn)路由查找表的工作原理,并在此基礎(chǔ)上,設(shè)計(jì)了基于I2C接口實(shí)現(xiàn)交換芯片被動(dòng)路由表配置方法,該方法簡(jiǎn)單實(shí)用,只需要一個(gè)低成本的單片機(jī)即可實(shí)現(xiàn),具有一定的工程實(shí)用價(jià)值。