时间:2024-09-03
西南电子技术研究所 柳 兵
本文针对现代雷达系统中嵌入电子设备广泛互联的需求,设计了一种基于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接口实现交换芯片被动路由表配置方法,该方法简单实用,只需要一个低成本的单片机即可实现,具有一定的工程实用价值。
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!