技术中心
 
 

基于Virtex-ⅡPro的高速串行IO及在光互连网络中的应用

   日期:2006-06-01     来源:研祥智能科技股份有限公司     作者:管理员    

摘 要 目前,处理器的数据传输率已远高于外部数据总线传输率。增加并行总线宽度可以提高芯片与芯片之间、背板与背板之间的数据吞吐量,但是总线数目的增多及传输速率的加快会使PCB布线的难度提高并且增加了信号延时或偏移。高速串行互连技术成为提高数据传输带宽的有效解决途径。本文介绍了Xilinx公司的Virtex-Ⅱ Pro FPGA中用于解决高速串行互连问题的RocketIO的使用方法及在光互连网络中的应用。

关键词 高速串行互连, RocketIO ,光互连, FPGA
Design And Application In The Optical Interconnection Of High Speed Serial IO Based On Virtex -ⅡPro

FAN Yong WANG Jingcun
University of Science and Technology Beijing .Information Engineering Institute
NO.30,Xueyuan Road,Haidian Zone,Beijing P.R.China 100083
fanyong-2001@sohu.com
wjc9804@163.com

Abstract At present, the data transmitting rate of the processor has already been higher than the transmitting rate of the data bus. Increasing the bandwidth of parallel bus can enhance throughput among chips and backboards. But enhancing bandwidth and transmitting rate increase difficulties of PCB routing and signal delay or skew. The technology of high-speed serial interconnection is an efficient way for enhancing bandwidth of data. In this paper , This paper introduce operation method and the application in the optical interconnection of RocketIO which is embedded in Virtex-Ⅱ Pro FPGA in Xilinx Corp to solve problem of high-speed serial interconnection..

Keywords High-speed serial interconnection , RocketIO , Optical interconnection , FPGA
引言
随着互联网应用的日趋普及和飞速发展,对数据传输的需求急剧增加。此外,数字电视及彩色图像均需要更高的带宽。数据交换的瓶颈存在于系统互连一级,即系统内不同器件间的互相通信以及与外部其它系统通信的速度。这就需要一种新的系统互连技术来将CPU的性能转换为系统性能。
一般来说,增加并行总线宽度可以提高芯片与芯片之间、背板与背板之间的数据吞吐量。但是总线数目增多及传输速率的加快会陡增PCB布线的难度和信号的延时或偏移,从而使提高总线数据吞吐率的要求面临一个极限。
高速串行互连技术由于将时钟与数据合并进行传输,从而克服了时钟和数据的抖动问题,能够极大提高传输速率,降低IC外围引脚数,降低功耗并获得较佳的信号完整性。[1]在Xilinx公司的Virtex-Ⅱ Pro FPGA器件中提供了用于实现高速串行互连的IP核-RocketIO。本文将比较详细地描述该IP核的结构、原理及在应用中需要注意的问题,同时介绍了它的硬件测试方法及在高速光互连方面的应用。
1 RocketIO的结构和原理
在支持高速串行互连技术传输方式的FPGA中,影响传输速度的关键因素有以下几点:
(1)串行输入-并行输出的转换结构和并行输入-串行输出的转换器结构,也称为串化器(Serializer)和解串器(Deserializer)结构
(2)时钟和信号恢复电路(Clock & Data Recovery),它是保证高速俘获数据的关键因素之一。
(3)系统时钟管理和PLL电路,它解决板级和FPGA内部的时钟同步问题,将数据流的偏移和信道间偏移最小化。
下面将介绍RocketIO是怎样从原理和结构上解决这些问题的。
1.1 RocketIO的结构
RocketIO是具有时钟数据恢复功能的全双工串行收发器,可有效实施每通道带宽达到3.125Gb/s的不同协议设计,并可利用通道绑定满足各种应用不断增长的对数据速率和位宽的要求。它的结构如图1所示[2]:
[img]2006619373989812.gif[/img]
图1 RocketIO 结构框图

RocketIO模块由以下两部分构成:
(1)物理编码子层(PCS,Physical Coding Sublayer)
该模块提供与FPGA逻辑内的数字接口,其内部包括:循环冗余码校验CRC、8B/10B编解码器、先进先出缓冲器FIFO、接收通道中有弹性缓冲器、通道绑定和时钟修正处理器。
(2)物理介质接入层(PMA,Physical Media Sublayer)
该模块提供与外部媒体的模拟接口,其内部包括20倍的时钟倍频器、发送端时钟生成器、发送缓冲器、串化器,接收端的时钟恢复电路、接收缓冲器、解串器、可变速率(50~156.25MHz)的全双工收发器、可编程的五级差分输出幅度(摆率)控制、可编程的四级输出预加重模型,用于改善输出信号的完整性。
1.2 RocketIO的原理
作为FPGA内部的IP核,RocketIO对用户提供了9类信号,通过它们完成数据的发送,数据的接收,数据传输状态的监测以及通道绑定功能,它们分别是数据发送信号、数据发送状态信号、发送口控制信号、数据接收信号、数据接收控制信号、数据接收状态信号、通道绑定信号、收发器控制信号、时钟信号。
下面结合RocketIO的结构框图来说明它的工作原理。
RocketIO可以通过属性设置接收32/16/8位的数据并将其转换成串行位流发送出去。
对进入的并行数据可以选择是否加入CRC校验码以及校验的范围。如果选择加入校验码,在发送端,发送器统计包头(SOP)和包尾(EOP)之间的数据,并形成4字节的CRC码。发送器将该CRC码插入到数据包的最后(EOP标志之前)。因此,需要在发送缓冲器中留有4字节的空间。另外,在接收端有专用输出信号来表示CRC校验是否出错。RocketIO的CRC校验只能在单通道中实现,不能完成对多通道中所拆分的字节进行CRC校验和统计。
经过CRC统计校验的数据可以选择是否进行8B/10B编码。这种编码模式是指8个数据位转换为不连续5个以上的“1”或“0”的10位比特码,以得到更好的直流(DC)平衡性。8B/10B编码可有256种组合及两种数据类型:(1)数据码组(标为D),用于数据传输。(2)特定控制码组(标为K),用于控制序列传输。
经过8B/10B编码的数据进入TX FIFO,这是一个4×20位缓冲器(20位宽=2字节经过8B/10B编码后的宽度),它的主要作用是调节时钟之间的相位差。
参考时钟通过单片集成的PLL电路产生20倍频的时钟,在它的作用下,并行数据被转换为串行数据由TXP和TXN差分端口输出。为作测试方便,通过内部闭环可以将输出差分信号直接给解串器。在时钟/数据恢复电路的作用下,从接收的串行数据流中解出时钟的频率和相位,将它的20分频时钟作为恢复时钟。在恢复时钟作用下从解串器产生10位并行数据用于8B/10B译码的输入,译码后的数据进入接收弹性缓冲器。
接收弹性缓冲器(RX Elastic Buffer)是一个64×13位的缓冲器(13位宽=1字节的8B/10B译码后的宽度+3位状态位)。该缓冲器由恢复时钟作为写时钟,而读时钟由写时钟来生成和驱动,这两个时钟的相位关系是不可预知的,因为恢复时钟需要经过DCM(Digitial Clock Manager)或BUFG生成读时钟。因此在接收弹性缓冲器中需要有时钟修正来避免它的溢出。时钟修正的基本原理是在发送端,当数据发送了一定的字节或数个数据包后,通过插入和发送一些特定的字节(修正字符);在接收端,当接收到这些字符后将会自动地丢弃。
另外,RocketIO提供了通道绑定(Channel Bonding)功能。由于RocketIO的每个通道最大只能提供3.125Gb/s的数据传输率,如果需要得到更高的数据带宽,就必须将几个通道组合起来,这就是通道绑定。例如,以125M时钟传输16位的数据,当考虑8B/10B编码后,实际的传输带宽为20b×125MHz=2.5Gb/s。这只能在一个RocketIO实现。若以同样的带宽传输数据时就必须用两个RocketIO模块以通道绑定的方式实现。
对RocketIO模块进行仿真需要使用SmartModels,通过它可以对RocketIO模块的实际功能进行仿真,具体细节可以参考XILINX的解决方案Solution Record 15501[2]。


2 RocketIO硬件测试的几种方法
当RocketIO模块设计完成并且通过仿真验证,需要从硬件上来验证RocketIO的工作情况,下面,结合我们使用RocketIO的经验,介绍两种比较实用的硬件测试方法。
2.1 使用集成化逻辑分析工具
Xilinx利用高性能逻辑器件的特点推出了置于FPGA内部的逻辑分析仪-ChipScope集成化逻辑分析工具。该分析工具与ISE6项目浏览器的集成更为紧密,可方便地选择和插入验证核心,定义信号监测点,同时为整体设计流程提供实时调试规划能力。
它的主要功能是通过JTAG编程接口,在线、实时地读出FPGA内部的信号。其基本原理是利用FPGA中未使用的块存储器,根据用户设定的触发条件,将信号实时地保存到这些块存储器中,然后通过JATG接口传送到计算机,并通过计算机的用户界面GUI显示出所采集的时序波形。其设计流程如图2所示:
[img]2006619381896651.gif[/img]
图2 ChipScope 工具设计流程
通过ChipScope集成化逻辑分析工具,可以在RocketIO模块下载到芯片时方便地观测状态变化和数据的传输情况。
2.2 使用计算机串口构造分析工具
ChipScope IP核加入原有的设计,会占用芯片的一部分资源,对设计的综合、布局布线造成一定的影响。尤其是在对时序要求敏感的设计中,额外的资源开销会造成不确定的影响。鉴于这种情况,我们参考ChipScope的基本原理,使用计算机串口构造了一种简单、有效、资源开销更小的分析工具。
下面,以测试RocketIO数据传输为例介绍这种方法,如图3所示。
[img]200661939780732.gif[/img]
图3 使用串口观测RocketIO数据传输示意图


假设需要传输的32位并行数据由FPGA内部产生,通过RocketIO模块生成的串行数据通过内部闭环再转换成32位并行数据,为观测数据在RocketIO模块内部转换是否正确,将转换后的并行数据放入双端口RAM中,当数据传输完毕,再通过FPGA内部构造的串口控制器将数据通过串口传到计算机加以分析。
这种方法所构造的串口控制器只占用很小的芯片资源,双端口RAM的大小可以由用户设定。另外,这种方法也可作为低端FPGA或CPLD的开发手段,因为这些芯

 
  
  
  
  
 
更多>同类技术
 
全年征稿 / 资讯合作
 
推荐图文
推荐技术
可能喜欢