文献标识码: A
随着FPGA应用范围的不断扩大以及对速度需求的不断提升,集成高速串行模块的FPGA已经应用于市场。以Xilinx的Virtex5系列为代表的集成GTPRocketIO模块的FPGA受到广泛关注。以XC5LX50T为例,这款FPGA集成了一个PCIE的Endpoint以及12个可以支持6 Gb/s以上的高速串行接口模块,支持串行RapidIO、fiber channel以及其他多种串行协议。
高速串行接口是系统互联的核心,业内使用较多的是应用于嵌入式系统互联的串行RapidIO协议、应用于PCI系统互联的PCI Express协议以及存储中广泛使用的Fibre光纤协议。在数据采集存储应用中,多种接口的应用使得存储系统越来越复杂,然而针对某些特定的以磁盘为存储媒介的系统,PCI Express协议仍然占据优势。标准的数据采集存储系统结构图如图1。
由图1可知,Fibre采集卡控制磁盘阵列的文件系统,PCIE转存卡接收数据采集设备的数据。2块板卡插在服务器提供的PCIE插槽上,通过PCIE协议交换数据。Fibre采集卡是成熟的硬件设备,而针对不同的数据采集设备只需要提供不同接口的PCIE转存卡。因此针对于应用最广泛的RapidIO和光纤接口协议,实现PCIExpress到RapidIO以及光纤协议的数据交换就非常有意义。
本文以光纤存储为背景,用Xilinx公司的XC5LX50T实现4X模式串行RapidIO到4XPCIE的数据交换以及2X模式的光纤接口到4X模式的PCIE的数据交换。本文给出了整个交换模块的原理框图并解决了RocketIO模块设计上的关键问题。
1 XC5LX50T及RockerIO模块的主要特点
XC5LX50T是Xilinx稳定可靠的第五代FPGA Virtex-5中最有代表性的一款芯片,其内部集成一个可以用于Endpoint的PCIE硬核,该硬核可以支持1X模式、4X模式以及8X模式,并且遵循PCI Express Base Specification1.1协议,每一路的数据率为2.5 Gb/s,总的最大理论带宽为2 Gb/s(8 B编码后的带宽)。
XC5LX50T提供了12个用于高速串行的RocketIO收发器,不同于前几代的产品,XC5LX50T的收发器可以支持6 Gb/s以上的数据率而且设计更为简单,工作更加稳定,其低功耗特性更加理想。RocketIO模块可以支持串行RapidIO、xaui、fibre channel等标准协议。由于性能稳定、传输带宽高等特点,串行RapidIO已经成为嵌入式系统中最理想的互联协议之一,尤其在军事以及国防这些对于高速互联需求日益迫切的领域中,串行RapidIO逐渐成为最为主流的数据交换协议。
光纤由于其带宽高、传输稳定以及接口简单等特点,被广泛应用于很多领域,例如光线存储、系统互联。XC5LX50T的RocketIO提供自定义的光纤协议,最高支持3.125 Gb/s。
有些领域中存在着将RapidIO协议的数据上传至有标准PCIE接口的服务器中进行处理的应用,也存在着将光纤接口的数据通过有PCIE标准协议的服务器存储到fibre channel协议的磁盘阵列中的应用。因此本文所设计的交换模块在嵌入式系统的应用中是十分必要的。
2 高速串行交换模块的基本功能
图2为交换模块功能图。
(1)4X串行RapidIO数据与4XPCI Express数据的交换。这种交换模式分为主动和被动2种,主动模式指数据通过RapidIO协议输入到交换模块中,经过交流耦合电路和协议转换FPGA以PCIE协议传输到另一模块。被动模式指数据通过PCIE协议输入到交换模块中,经过协议转换FPGA以串行RapidIO协议传输到另一模块。
(2)2 bit光纤接口数据与4XPCI Exress数据的交换。这种交换模式同样分为主动和被动2种,主动模式指数据通过光纤接口输入到交换模块中,经过交流耦合电路以及协议转换FPGA以PCIE协议传输到另一模块。被动模式指数据通过PCIE协议输入到交换模块中,经过协议转换FPGA以自定义光纤协议通过光纤接口传输到另一模块。
3 高速串行交换模块的基本原理
3.1 RapidIO协议到PCIE协议的转换
RapidIO协议到PCIE协议交换分为3个步骤:
(1)根据串行RapidIO协议将打包数据解析;
(2)将解析的数据缓存在乒乓使用的存储器中,可以使用片外ZBTSRAM也可以使用片内RAM资源;
(3)数据根据PCIE协议规定的方式打包,并按照PCIE协议发送出去。
RapidIO与PCIE交换原理图如图3。
3.2 光纤协议到PCIE协议的转换
光纤协议使用的自定协议较RapidIO协议简单得多,因此实现原理也简单很多。从光纤协议到PCIE协议交换分为3个步骤:
(1)根据光纤自定义协议将打包数据提取;
(2)将解析的数据缓存在乒乓使用的存储器中,可以使用片外ZBTSRAM也可以使用片内RAM资源;
(3)数据根据PCIE协议规定的方式打包,并按照PCIE协议发送出去。
光纤与PCIE交换原理图见图4。
4 交换模块实现的关键技术
在此交换模块中,关键技术集中在PCIE的DMA实现上,本节将讨论存储器写模式下的TLP结构以及基于FPGA实现的PCIE的DMA写操作核心状态机的设计与实现。
4.1 TLP结构简介
PCIE设备之间以数据包形式传送信息,最主要类型的数据包是处理层数据包TLP。其包格式如图5。
事务是在PCIE请求者和完成者之间进行的操作,包括存储器事务、IO事务、配置事务和消息事务。本文讨论的DMA读写操作是针对存储器空间的操作,存储器写操作TLP头的格式如图6。
4.2 PCIE的DMA写操作的设计与实现
PCIE的DMA写操作实现的主要方法是将TLP包头中的各个字段正确填充,并将数据按照64 bit或者32 bit并行放在TLP包头后,按照64 bit或者32 bit并行传输给PCIE硬核,由硬核以PCIE协议串行传输给其他设备。PCIE的写操作封装在TX模块的状态机中。在本设计中规定一次DMA写操作分为65 536次包传输,每次包传输的最大载荷为128 B,一次写操作的传输数据为8 MB。其状态机转换模型如图7(CPLD指返回完成包)。
实际上FPGA在PCIE硬核中实现了8个TLP存储空间,因此当发送模块将8个以上的TLP包传输给硬核后,硬核可能会堵塞,因此发送模块与硬核之间的交互非常必要。
5 测试结果
此测试包括3种模式。
(1)单纯测试4路PCI Express的DMA上传以及下传速度。
(2)数据从RocketIO接口以2 bit自定义光纤协议与4XPCI Express协议进行交换。
(3)数据从Infiniband接口以4XRapidIO协议与4XPCI Express协议进行交换。
具体结果见表1。
本文分析了3种应用比较广泛的系统互联协议,并给出在FPGA内部实现3种协议交换的技术特点。详细描述了多协议交换模块的系统结构以及实现原理。
本文的创新点在于通过FPGA的方式实现了多种主流高速串行协议的转换。通过将各种协议的端口独立化,简化了协议转化工作,使整个模块更易于更新维护。在FPGA提供的PCIE硬核的基础上构建了用户层的封装并实现了DMA数据传输。该交换模块已在某雷达信号存储与回放系统中得到应用,带宽是传统存储带宽的2~3倍。
参考文献
[1] BUDRUK R著.PCI Express系统体系结构标准教材[M]. 田玉敏,王崧,张波,译.北京:电子工业出版社,2005.
[2] 马鸣锦,朱剑冰,何红旗,等.PCI、PCI-X和PCI Express的原理及体系结构[M].北京:清华大学出版社,2006.
[3] 闫振兴.基于FPGA的PCI Express接口的设计玉实现[D].北京:北京理工大学出版社,2009.
[4] PCI-SIG.PCI Express Base Specification Revision1.1[M]. 2003.
[5] Xilinx INC.LogiCoreTM IP EndPoint Block Plus v1.9 for PCI Express Revision 9.0.2008.
[6] Xilinx INC.Virtex-5 FPGA RocketIO GTP Transceiver Revision 1.4.2009.
[7] PADS-PowerLogic和PowerPCB使用教程[M].北京:电子工业出版社,2004.
[8] RapidIO嵌入式系统互联[M].北京:电子工业出版社,2006.