《电子技术应用》
您所在的位置:首页 > 可编程逻辑 > 业界动态 > RocketIO几个关键问题的解决方案

RocketIO几个关键问题的解决方案

2008-07-28
作者:赵峥嵘, 兰巨龙

  摘 要: FPGA的内嵌RocketIO模块在实际应用中需要解决时钟不稳及通道绑定" title="绑定">绑定同步等问题。通过精心设计DCM单元保证了RocketIO内部时钟的精确。同时,针对通道不同步的问题,设计了一种弹性存储器方案,很好地解决了通道同步接收问题。该方案在863重大课题“可扩展到T比特的高性能IPv4/v6路由器基础平台及实验系统”中得到了验证。
  关键词: 同步 弹性存储器


  随着线路传输技术的迅速发展,出现了10Gbps的链路接口类型,如10Gbps的POS、WAN、LAN等。863重大课题“可扩展到T比特的IPv4/v6路由器基础平台及实验系统”要求T比特路由器支持10G的线卡。
  传统的单端互连方式在传输速率上(最高250Mbps)已无法满足要求。而差分" title="差分">差分串行方式(如LVDS、LVPECL等),虽然采用源同步时钟,但数据和时钟分别发送,受信号瞬时抖动的影响,破坏了数据与时钟的定时关系,传输速率也存在一定的瓶颈。XILINX的Virtex-ⅡPRO 系列提供了内嵌RocketIO模块,通过采用CDR、8B/10B编码,预加重等可在线配置技术,减少了信号衰减和线路噪声的影响,所提供的全双工高速通道最高支持3.125Gbps。
  但在高速环境下,RocketIO易出现时钟漂移,同时,在进行通道绑定时,也易出现通道间不同步的问题。针对时钟不稳的现象,笔者利用FPGA 的数字时钟管理器(DCM)对RocketIO的时钟进行精心设计; 对通道不同步问题,设计了一种称为“弹性存储器”的改进方案。经工程验证,本设计方案有效地解决了以上两个问题。
1 RocketIO的特性
  如图1,RocketIO(也称MGT)由物理媒质适配层(PMA)和物理编码子层(PCS)两部分组成。PCS主要包括发送FIFO、8B/10B编码器、8B/10B解码器、CRC生成与校验,通路绑定与时钟修正的Elastic Buffer等。PMA包括串/并转换器、差分接收器、发送时钟生成电路、接收时钟恢复电路等。


  以转发引擎选取的XC2VP70 FF1704系列为例,该芯片最多可提供40路高速收发器,每路可提供最高3.125Gbps的全双工带宽,可支持FibreChannel、Ethernet、Custom、XAUI、Infiniband等高速通信标准。其优点有:(1)每个通道支持最高125Gbps的全双工速率; (2)支持直流和交流耦合方式; (3)可编程差分终端电阻(50Ω、70Ω);(4)输出预加重处理。
2 时钟及复位
  考虑到RocketIO的设计传输带宽是10Gbps,RocketIO的参考时钟选用差分输入时钟,这样可极大地降低时钟抖动。同时,利用FPGA内部的DCM(数字时钟管理器)产生Rocket IO的主时钟,根据MGT设计的四通道绑定,分别送给RXUSRCLK、RXUSRCLK2、TXUSRCLK和TXUSRCLK2。
  同时,由于DCM的输出时钟在LOCKED指示信号无效之前处于非稳态,不适合直接作后级逻辑的参考时钟。所以,选择LOCKED作RocketIO的复位信号TX_RESET和RX_RESET,保证了DCM的输出时钟在RocketIO复位之后才送给下一级逻辑。如再加一级缓冲,保证RocketIO足够的复位时间,效果更好。
  DCM和MGT控制信号的对应关系,如图2所示。


3 通道绑定
  理论上,经MGT内部缓冲处理及时钟修正,各个例化模块应严格同步输出。但由于硬件高频时钟电路" title="时钟电路">时钟电路的不稳定及时钟漂移等不确定因素,在实际工程应用" title="工程应用">工程应用中经常发生格式错位、通道之间不同步的现象,导致无法进行通道绑定。
3.1 错误情况分析
  图3给出了高速通道的几种错误情况。


  K码指示规则是:当K码依次为“10”、“00”、“01”时,对应数据包的包头(数据为“BC95”)、正常数据报文、包尾(数据为“3CFB”); K码为“11”时,表示通道空闲(数据为“95FB”)。
  图3(a)中,序列DATA1为正确的接收序列,DATA2、DATA3均为错误序列。
  (1)DATA2:发生了前后两字节错位的现象,数据格式不正确;
  (2)DATA3:在时序上与DATA1不同步,但数据格式是正确的。
  对于错位接收的原因分析,也可以从图3(b)看出。对串行输入的数据,串并转换之前的正确接收采样操作应该是采样时钟(RxClock)一次性采集到数据“b1b2b3b4”。但实际上,由于采用时钟的不稳定及高频环境的影响,一次采样操作却采集到了数据“b1c2b3c4”。
3.2 弹性存储器方案
  基于以上分析,在进行通道绑定之前,笔者引入了一种弹性存储器的方案(以四通道绑定为例),按照先缓存、后控制输出的思路,实现对高速通道的纠错。弹性存储器由异步FIFO(4个)、时钟电路(写FIFO 时钟电路,读FIFO时钟电路)、内部控制逻辑" title="控制逻辑">控制逻辑三部分组成,如图4所示。


  (1)写FIFO 时钟电路
  异步FIFO的写时钟产生电路。与内部控制逻辑模块配合,控制异步FIFO的数据接收及K码序列的缓存。
  对于此时的输入数据,不必考虑格式和数据的同步问题。
  (2)读FIFO 时钟电路
  4个异步FIFO及K码FIFO的读时钟产生电路。与内部控制逻辑模块配合,控制4个异步FIFO及K码序列的同步输出。
  (3)内部控制逻辑
  除了配合读/写时钟电路来控制异步FIFO的读写,依据K码序列对每个数据FIFO的接收数据进行整包检测。
  具体判断依据是根据K码“01”表示的包尾,判定FIFO接收到了一个整包。
  4个FIFO都有一个完整包时,通过读FIFO时钟电路控制4个异步FIFO 的同步输出,完成随后的通道绑定。
  可以看出,整个设计的关键在于对同步输出时刻的把握。实现的重点在于内部控制逻辑的整包检测操作上。由于4个FIFO的整包检测独立进行,这需要在实际编程实现时精心设计时序及对容错情况的考虑。
4 工程实现
  图5给出了在863课题“T比特路由器”中,基于XILINX的VIRTEXⅡPRO系列的XC2VP70芯片,采用弹性存储器方案得到的MGT测试数据。


4.1软件仿真
  根据K码序列指示,方案在时序上准确实现了4个通道的数据对齐输出,无通道错位或不同步现象。
4.2 工程应用
  (1)测试环境
  利用光电转换小板构成环路,测试报文的处理流程为:CPU→FPGA→光模块→光电转换小板→GIGA→FPGA→CPU。如图6所示。


  (2)测试结果
  图7为Virtex ⅡPRO-XC2VP70上实现两平面接收、四通道绑定的ChipScope采样波形。
  rxk0、rxk1表示两个平面的K码序列。由K码与通道的对应关系得知,K码为“AA”(即二进制“10101010”),对应数据包头(BC95);K码为“FF”(即二进制“11111111”),对应包尾(3CFB)。
  由图7知,弹性存储器方案有效解决了MGT的数据同步问题。


  RocketIO的难点在于它的链路层本质及高速传输环境。其灵活的配置方式同时也增加了工程应用上的难点。本文针对时钟部分及通道绑定问题,提出了一种切实可行的解决方案,并得到了工程验证。


参考文献
1 Howard Johnson, Martin Graham.High-Speed Digital Design. A Handbook of Black Magic.北京:电子工业出版社,2004.5
3 Xilinx Corporation. RocketIO Transceiver User Guide.2004.6

本站内容除特别声明的原创文章之外,转载内容只为传递更多信息,并不代表本网站赞同其观点。转载的所有的文章、图片、音/视频文件等资料的版权归版权所有权人所有。本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如涉及作品内容、版权和其它问题,请及时通过电子邮件或电话通知我们,以便迅速采取适当措施,避免给双方造成不必要的经济损失。联系电话:010-82306118;邮箱:aet@chinaaet.com。