当前位置:首页 > 嵌入式 > 嵌入式硬件


摘 要 目前,处理器的数据传输率已远高于外部数据总线传输率。增加并行总线宽度可以提高芯片与芯片之间、背板与背板之间的数据吞吐量,但是总线数目的增多及传输速率的加快会使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>:

图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所示:

图2 ChipScope 工具设计流程
通过ChipScope集成化逻辑分析工具,可以在RocketIO模块下载到芯片时方便地观测状态变化和数据的传输情况。
2.2 使用计算机串口构造分析工具
ChipScope IP核加入原有的设计,会占用芯片的一部分资源,对设计的综合、布局布线造成一定的影响。尤其是在对时序要求敏感的设计中,额外的资源开销会造成不确定的影响。鉴于这种情况,我们参考ChipScope的基本原理,使用计算机串口构造了一种简单、有效、资源开销更小的分析工具。
下面,以测试RocketIO数据传输为例介绍这种方法,如图3所示。

图3 使用串口观测RocketIO数据传输示意图


假设需要传输的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,充分利用了光互连链路的性能优越性,提升了整体通讯性能。

图4光互连接口卡的结构
下面介绍将RocketIO应用于光互连接口卡中的设计过程。
设计中选择了Custom原型,它包含了RocketIO模块中所有的属性,用户可以根据需要选择相应的属性并且制定用户协议。通过设置属性“TX_DATA_WIDTH”为4,可以允许32位并行数据的输入。数据以帧的方式进行传输,发送帧的格式如图5所示:

图5 发送帧的格式
设置时钟修正序列及长度,如下所示:
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核具有使用简单、配置灵活、集成度高等优点,我们将它用于解决光互连接口卡中高速串行数据传输问题,简化了设计,提高了系统的集成度和可靠性。同时,在基于研祥公司的工控机主板上我们完成了光互连接口卡的可行性测试。

参考文献
[1> 孙航Xilinx可编程逻辑器件的高级应用与设计技巧. 北京:电子工业出版社,2004
[2> RocketIOTM Transceiver User Guide.October 16,2002
[3> 井文才,田劲东,张殉,刘卫,周革,张以漠.
用于机群系统的高速光互连网络接口卡设计[J>. 光电子∙激光,2000
[4> 夏宇闻.从算法设计到硬件逻辑的实现.
高等教育出版社,2001

作者简介
樊勇,北京科技大学信息工程学院在读博士生。研究兴趣是仪器仪表的设计与应用,嵌入式系统等。目前的研究方向是高速数字设计及高速PCB的设计与应用。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭