您的位置:控制工程论坛网论坛 » 工业以太网 » 光纤数据传输板中ROCKET IO设计

dingjia

dingjia   |   当前状态:离线

总积分:99  2024年可用积分:0

注册时间: 2008-09-07

最后登录时间: 2010-12-10

空间 发短消息加为好友

光纤数据传输板中ROCKET IO设计

dingjia  发表于 2008/12/9 21:20:25      930 查看 0 回复  [上一主题]  [下一主题]

手机阅读

雷达技术的不断发展,需要对大容量的数据进行实时的处理,这就对通信速率提出了很高的要求。本设计将作为一个大型雷达信号处理系统与外部的数据接口板,实现数据的高速记录与回放。板上集成的4个光口,有效数据传输率理论上可达到10Gbit/s,能够充分满足系统对通信速率的要求。

ROCKET IO简介

Rocket IO为Xilinx公司的Virtex II pro及Virtex IV系列FPGA中的一个内嵌模块。它是一种高速的串行收发器,采用两对差分对来进行数据的发送和接收,可以实现两个单工或一对全双工的数据传输。通信码率可以达到600Mbit/s~3.125Cbit/s。Rocket IO收发器发送和接收串行差分信号,工作于2.5V的直流电压下,采用CML(Current Mode Logic)模式,内部带有50Ω或75Ω的匹配电阻。Rocket IO采用了预加重技术,可以补偿传播媒质中的高频损耗。

Rocket IO包括PMA(PhysicalMedia Attachment)和PCS(PhysicalCoding Sublayer)两个子层。其中PMA子层中集成了SERDES,发送和接收缓冲,时钟发生器及时钟恢复电路。SERDES是一个串并转换器,负责FPGA中本地的32位并行数据(也可以是16位或8位)与Rocket IO接口的串行数据之间的转换。采用串行数据收发,可以在高频条件下很好的避免数据间的串扰。时钟发生器及时钟恢复电路用于将时钟与数据绑定发送及将时钟从接收到的数据流中恢复出来,从而避免了在高速传输条件下时钟与数据分开传输所带来的时钟抖动等问题。

PCS子层负责8B/10B编码解码和CRC校验,并集成了负责channel绑定和时钟修正的弹性缓冲。8B/10B编码可以避免数据流中出现连0连1的情况,便于时钟的恢复。channel绑定通过在发送数据流中加入P字符来将几个RocketIO通道绑定成一个一致的并行通道,从而来提高数据的吞吐率。最多支持24个通道的绑定。弹性缓冲可以解决恢复的时钟与本地时钟的不一致问题,并进行数据率的匹配,从而使得channel绑定成为可能。对Rocket IO模块的配置,可以通过下面两种方式进行:静态特性可以通过HDL代码设置;动态特性可以通过Rocket IO的原语端口进行配置。

Rocket IO收发器的框图1所示

系统方案介绍

该光纤数据传输板基于PCI总线规范和PMC接口规范。系统框图如图2所示。

光纤数据传输板组成

光纤数据传输板上集成3个光口,每个光口对应1个RockelIO收发器。另有一个Rocket IO连接到PMC的PN4上,以便通过母板提供与背板上其他设备进行高速串行通信的通道。光口收发模块采用LNL-STllH。

光纤数据传输板上的数据存储采用Micron公司的synchronousDRAM MT48LC32M16A2,每片容量512Mh,共4片。4片SDRAM由4套独立的地址数据总线连入FPGA,从而可以实现4片SDRAM读写的独立工作。对于光口数据在SDRAM中的存放方式,可以通过FPGA中的代码灵活没置,因此大大增加了系统的通用性。

PCI桥芯片采用Quick Logic的5064,可以在local bus端达到最高100MHz的时钟速率。本系统中应用66M/64bit的PCI总线标准。该芯片带有PCI core可以在PCI总线端实现master和slave两种模式,而芯片的localbus部分是可编程的,可以实现与FPGA的无缝连接,本设计中local bus部分采用80MHz的时钟。QL5064中的数据发送和接收FIFO可以对数据进行缓冲,从而匹配两端的速率。

本系统的核心为Xilinx公司的Virtex II pro系列 FPGAXC2VP20。对FPGA型号的选择主要基于对user IO数量和RocketIO数目的考虑。该款FPGA带有8个Rocket IO,可以与光纤模块进行无缝连接。FPGA内部的功能模块包括SDRAM控制器,与QL5064交互的控制模块及两个与QL5064进行通信所用的FIFO(分别用于数据的发送和接收),3个Rocket IO控制器,每个RocketIO控制器中包括一个Rx FIFO和一个Tx FIFO。

板内数据存储及流动方式

光纤数据传输板可以工作于如下几种模式:

光纤数据记录模式

三个光口的数据经由FPGA和QL5064直接传送到PCI总线上,仔放到主机的存储空间上。三个光口之间可以独立工作。

光纤数据回放模式

主机将数据通过PCI总线传送到光纤板上,经过QL5064和FPGA,从三个光口发送出去。同样,三个光口是独市的。

经过板内缓冲的数据记录模式

光口数据先存储在板内的SDRAM中, 再经由FPGA和5064传送到PCI总线上,从而将数据存储到主机的存储空间中。三个光口可以同时工作,每个光口的最高波特率为2Gbit/s。

经过板内缓冲的数据回放模式

主机端发送来的数据通过PCI总线,经由5064和FPGA存储到SDRAM上,再经由光口发送出去。三个光口可以同时工作,每个光口的最高波特率为2Gbit/s。

以上四种工作模式,可以任选其中的一种或几种,因此该光纤数据传输板具有了较强的通用性,可以被灵活的应用于不同的场合。

ROCKET IO的实现

FPGA中的ROCKET IO控制模块

在FPGA中实现对三个Rocket IO的控制,3个RocketIO可以独立工作。本设计中的Rocket IO在物理层之上采用aurora协议,在aurora协议中不采用channel绑定,每个rocketIO传送数据采用framing格式,工作于全双工模式,支持流控。Rocket IO接口采用交流耦合(ACcoupling)模式,单个Rocket IO控制模块的工作原理框图如图3所示。

图3中的Rocket IO transceiver模块是由Xilinx公司的COREGenerator生成的一个IPCore,内部实现了Rocket IO收发器的功能以及上层协议aurora。该模块的功能包括8B/10B编码,串并转换,时钟与数据流的绑定以及时钟恢复,CRC差错检测,流量控制等。发送接收通道各具有一个16K的FIFO,以便对发送或接收的数据进行缓冲,容量为一个数据包的大小,从而可以在PCI总线较长时间忙的情况下不至于造成数据的丢失。由于Rocket IO工作于2Gbit/s下,FIFO的设置可以防止数据的溢出,匹配RocketIO和SDRAM及PCI之间的速率差异。Poll模块负责FPGA内部各个模块的协同工作及相互之间的数据交互,此处POLL模块根据不同的操作要求进行Rocket IO与SDRAM或QL5064之间的数据传送。

关于参考时钟,Rocket IO不能使用经过数字时钟管理(DCM)倍频的参考时钟,因为DCM倍频会引入过大的时钟抖动,在Rocket IO的高速数据传输条件下会引起不必要的错误。当RocketIO工作于2.5Gbit/s以上时,建议使用差分时钟(本设计虽然工作于2.5Gbit/s以下,但还是采用了差分时钟,以期获得更好的性能)。Rocket IO的时钟由差分时钟输入后,只经过一级缓冲,然后直接连入到Rocket IO的参考时钟引脚上。

PCB设计中需要注意的问题

为了使得Rocket IO能够稳定可靠的工作,在PCB设计中需要注意如下一些问题。

电源

每个Rocket IO有5个电源引脚,它们都对噪声敏感,因此需要良好的电源滤波网络。应选用线性电源模块,Rocket IO应使用独立的供电电源,从而避免和其他电路部分混用电源而引起的噪声。

高速差分信号对的布线

Rocket IO的发送和接收信号对之间的匹配电阻阻值是可编程的,为50Ω或75Ω(50Ω用于芯片间互连,75Ω用于电缆连接)。差分对应布线在中间层,两边由地层保护,避免过孔。每个差分对的长度应尽量相等(长度差异应<50mils),以减少共模噪声和辐射,避免抖动和时序错误。尽量避免过长的走线,并增加差分对与其他信号线的距离以避免串扰。

ROCKET IO性能测试

为了测试该光纤板RocketIO的工作性能,测试中将两个Rocket IO用多模光纤互连,设置成全双工工作方式,带有流控,Rocket IO工作于2Gbit/s的波特率,由于使用8B/10B编码,实际有效数据率为1.6Gbit/s。RocketIO A发送数据,B接收。测试步骤如下:

(1) 主机端将要发送的数据放到PCI总线上;

(2) 光纤板的QL5064启动PCI端的DMA,将总线上的数据写入到QL5064内部的FIFO里;

(3) 启动QL5064的LocalDMA,将FIFO中的数据写入FPGA;

(4) FPGA将从QL5064接收到的数据放人SDRAM_A中;

(5) FPGA将SDRAM_A中的数据通过Rocket IO A连续发送出去,同时Rocket IO B对这批数据进行接收,接收到的数据写入到SDRAM_B中;

(6) 通过启动QL5064的Local DMA,FPGA将SDRAM_B的数据发送到QL5064的FIFO中;

(7) QL5064启动PCI端的DMA,将数据送给主机;

(8) 主机将收到的数据与发送的数据比较,以确定Rocket IO是否能够正常的工作。

测试了100MByte的数据,结果表明本设计中的Rocket IO能够准确无误的进行数据的传输。

本文给出了一种基于RocketIO的光纤数据传输板的设计方案,通过PMC背板与主机交互,使用PCI协议。光口波特率最高可以达到2Gbit/s,可以实现三个光口数据的记录和同放,数据的流动方式可以在FPGA中灵活配置,在实践中Rocket IO可以稳定有效地工作。

1楼 0 0 回复