×
嵌入式 > 技术百科 > 详情

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

发布时间:2021-05-17 发布时间:
|

摘 要

目前,处理器的数据传输率已远高于外部数据总线传输率。增加并行总线宽度可以提高芯片与芯片之间、背板与背板之间的数据吞吐量,但是总线数目的增多及传输速率的加快会使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的不同协议设计,并可利用通道绑定满足各种应用不断增长的对数据速率和位宽的要求。

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显示出所采集的时序波形。

通过ChipScope集成化逻辑分析工具,可以在RocketIO模块下载到芯片时方便地观测状态变化和数据的传输情况。

2.2 使用计算机串口构造分析工具

ChipScope IP核加入原有的设计,会占用芯片的一部分资源,对设计的综合、布局布线造成一定的影响。尤其是在对时序要求敏感的设计中,额外的资源开销会造成不确定的影响。鉴于这种情况,我们参考ChipScope的基本原理,使用计算机串口构造了一种简单、有效、资源开销更小的分析工具。

假设需要传输的32位并行数据由FPGA内部产生,通过RocketIO模块生成的串行数据通过内部闭环再转换成32位并行数据,为观测数据在RocketIO模块内部转换是否正确,将转换后的并行数据放入双端口RAM中,当数据传输完毕,再通过FPGA内部构造的串口控制器将数据通过串口传到计算机加以分析。

这种方法所构造的串口控制器只占用很小的芯片资源,双端口RAM的大小可以由用户设定。另外,这种方法也可作为低端FPGA或CPLD的开发手段,因为这些芯片不支持集成化逻辑分析工具。

3 RocketIO在高速光互连接口卡中的应用

我们将RocketIO应用于高速光互连接口卡的设计中,通过DDR存储器接口而不是PCI接口作为计算机数据出口,[3>为解决机群互连链路瓶颈问题做了有益的尝试。光互连接口卡的结构如图4所示,它具有标准的DIMM插槽接口,整个控制逻辑、DDR接口模块、并/串转换机制(RocketIO),都在FPGA芯片中设计完成。

通过它可以实现两个计算机DDR存储器接口之间的64位、200MHZ的数据传输,链路单通道的最高实测速率达到2Gbit/s,充分利用了光互连链路的性能优越性,提升了整体通讯性能。

下面介绍将RocketIO应用于光互连接口卡中的设计过程。

设计中选择了CUSTOM原型,它包含了RocketIO模块中所有的属性,用户可以根据需要选择相应的属性并且制定用户协议。通过设置属性“TX_DATA_WIDTH”为4,可以允许32位并行数据的输入。设置时钟修正序列及长度,如下所示:

CLK_COR_SEQ_1_1 is 00110111100

CLK_COR_SEQ_1_2 is 00010010101

CLK_COR_SEQ_1_3 is 00010110101

CLK_COR_SEQ_1_4 is 00010110101

CLK_COR_SEQ_LEN is 4

因此,在帧头之前加入时钟修正字符“BC95B5B5”。

设置CRC校验的头(SOP)、尾(EOP)及校验模式,如下所示:

CRC_END_OF_PKT is "K29_7"

CRC_FORMAT is "USER_MODE"

CRC_START_OF_PKT is "K27_7"

数据帧的发送程序如下:

case (txstate)

3'b000: begin

sel<= 1'b0;

txstate <= 3'b001;

txaddr <= 0; //RAM地址信号

su_cnt <= 0;

data_36 <= 0;

end

3'b001: begin

sel <= 1'b0;

if( su_cnt < 10) //连续发送80个 “BC95B5B5”

begin

txaddr <= txaddr+1;

if (txaddr == 7)

begin

txaddr <= 0;

txstate <= 3'b001;

end

end

else

begin

sel <= 1'b0;

txaddr <= 8;//帧头地址

txstate <= 3'b010;

end

su_cnt <= su_cnt + 1'b1;

end

3'b010: begin

txstate <= 3'b011;

txaddr <= 9; //帧尾地址

end

3'b011: begin

sel <= 1'b1;

data <= data + 1;//发送的数据

if(data==2048)

begin

txstate <= 3'b000;

sel <= 1'b0;

end

end

default: begin

txstate <= 3'b000;

txaddr <= 0;

su_cnt <= 0;

end

endcase

修正字符、CRC校验EOP、SOP都是存放在RAM中的数据,在发送数据的时候根据需要将它们放入数据前后组成发送帧。“Sel”= 0选择发送RAM中的数据,“Sel”= 1选择发送计数器的计数值。

在接收端,通过判断EOP、SOP界定数据范围,从而将数据存放到双端口RAM中。

4 结束语

目前,各种应用对数据传输率的要求越来越高,高速串行互连技术由于将时钟与数据合并进行传输,从而克服了高速并行数据传输过程中的时钟和数据的抖动问题。Xilinx公司的Virtex-Ⅱ Pro FPGA器件中所提供的用于实现高速串行互连的RocketIO IP核具有使用简单、配置灵活、集成度高等优点,我们将它用于解决光互连接口卡中高速串行数据传输问题,简化了设计,提高了系统的集成度和可靠性。同时,在基于研祥公司的工控机主板上我们完成了光互连接口卡的可行性测试。






『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
家庭网络:从带宽共享走向内容共享