当前位置:文档之家› FPGA高速串行收发器,GTP,GTX

FPGA高速串行收发器,GTP,GTX

FPGA高速串行收发器,GTP,GTX
FPGA高速串行收发器,GTP,GTX

第1节高速数据连接功能简介

10.1.1 高速数据传输的背景

由于现代通信以及各类多媒体技术对带宽的需求迅猛增长,促使一系列基于差分、源同步、时钟数据恢复(clock and data recovery,CDR)等先进技术的互连方式应运而生。在传统设计中,单端互连方式易受干扰、噪声的影响,传输速率最高只能达到200~250Mbps/Line;在更高速率的接口设计中,多采用包含有源同步时钟的差分串行传输方式(如LVDS、LVPECL等),但在传输过程中时钟与数据分别发送,传输过程中各信号瞬时抖动不一致,破坏了接收数据与时钟之间的定时关系,因而传输速率很难超越1Gbps/通道。因此迫切需要新的高速数据传输技术。

在目前系统级互连速率已达到Gbps的设计中,先进的高速串行技术迅速取代传统的并行技术,成为业界的主流。高速串行技术不仅能够带来更高的性能、更低的成本和更简化的设计,克服了并行的速度瓶颈,还节省了I/O资源,使印制板的布线更简单。因此,被越来越广泛地应用于各种系统设计中,包括PC、消费电子、海量存储器、服务器、通信网络、工业计算和控制、测试设备等。高速串行传输一般采用差分线,迄今业界已经发展出了多种串行系统接口标准,例如千兆以太网、万兆以太网、PCI-Express、串行RapidIO、串行ATA 等。

10.1.2 Xilinx公司高速连接功能的解决方案

基于高速的需求和传统技术的弊端,Xilinx公司在Virtex 2 Pro以及更高系列的部分FPGA部集成了能实现高速数据收发Rocket I/O模块,采用了CML(CurrentMode Logic)、CDR、线路编码(8B/10B)和预加重等技术的Rocket I/O硬核模块,可极减小时钟扭曲、信号衰减和线路噪声对接收性能的影响,从而使传输速率进一步提高,最高可达10Gbps以上,可用于实现吉比特以太网、PCI-Express

等常用接口。

除了底层的物理层技术,Xilinx还提供带32 bit LocalLink用户接口的Aurora协议引擎参考设计。Aurora 协议是为私有上层协议或标准上层协议提供透明接口的串行互连协议,它允许任何数据分组通过Aurora协议封装,并在芯片间电路板间甚至机箱间传输。Aurora链路层协议在物理层采用千兆位串行技术,每物理通道的传输波特率可从622Mbps扩展到3.125 Gbps。Aurora还可将1至16个物理通道绑定在一起,形成一个16个通道绑定而成的虚拟链路,可提供50Gbps的传输波特率和最大

40Gbps的全双工数据传输速率。Aurora可支持广泛的应用围,如:路由器和交换机、远程接入交换机、HDTV广播系统、分布式服务器和存储子系统。在协议中,每个高速串行被称为“弄”。

协议引擎通过与高速收发器配合,可创建带LocalLink用户接口逻辑的串并、并串收发器。通过这一串行接口方案,用户无须自己设计有关串行接口所涉及的编解码、同步、速率匹配等问题。用户接口部分包含了所有必要的信号,如协议引擎的状态信号等。

Xilinx通过高品质的技术支持材料来支持其先进的芯片产品,这些材料包括广泛的知识产权核、参考设计、模拟电路模块、信号完整性(SI)设计套件、数字仿真的质量行为模型等。此外,Xilinx还提供了众多设计服务、开发平台以及最佳的FPGA实现工具,可确保用户的所有设计需求都能获得最佳产品和技术支持。

第2节实现吉比特高速串行I/O的相关技术

10.2.1 吉比特高速串行I/O的特点和应用

吉比特收发器(MGT)是吉比特级串行器/解串器(SERDES)的别名。

1.优点

1)速度高。高速串行I/O的线速可超过吉比特,甚至数十吉位。而并行传输线速不可能超越吉比特。吉比特串行I/O的主要优势是速度。在从片/片外、板/板外或盒/盒外获取数据时,没有任何技术可以超越高速串行链路。高速串行链路的线速围为1Gb/s~ 12Gb/s,有效负载围为0.8Gb~10Gb。

2)节省管脚数。将大量数据传入/出芯片或电路板时所遇到的第一个问题是引脚数,电路板设计时间和成本会随着管脚数的增加而急剧增加。在大数据量应用下,串行I/O可节省大量的管脚(在低速以及小数据量应用中,MGT比传统并行模式需要更多的电源和接地引脚)。

3)简化同步转换输出。采用单端并行总线时,设计者应考虑同步转换输出(SSO,即大量寄存器的值在某一时刻同时翻转,会对电源和地平面产生一定的影响,甚至影响到器件部时钟和逻辑的正常工作)。如果出现太多的同步转换,触地反弹会产生大量噪声。设计者还可以在所有I/O上都使用差分信号处理技术,以此来消除SSO问题,但是这样做就会使引脚数翻倍。如果数据流需求比较适中,设计者可以使用具有适当引脚数的并行接口。

4)EMI指标优。经验表明:时钟越快,放射测试就越难进行,因此,吉比特设计的EMI测试看起来是不可能实现的。但是,通常高速串行链路的辐射量比以较低速度工作的大型总线低。这是因为运行时的吉比特链路需要出色的信号完整性,正如经典论断“辐射问题实际上就是信号完整性问题”所言,因此吉比特串行IO具有更好的EMI指标。

5)成本低。采用MGT通常会降低系统总成本。连接器采用较小、较经济的封装时,引脚数较少,电路板设计也更简单。

6)预设协议。采用MGT的另一个好处是可以使用预先定义好的协议和接口标准。如Xilinx提供了从Aurora到XAUI的多种协议,满足不同的用户需求。

2.缺点

吉比特高速串行I/O的最大缺点在于对信号完整性的严格要求。而且,阻抗控制的PC(印刷电路)板、高速连接器和电缆的费用较高。因此,必须处理数字仿真中的复杂性和时基较小的问题。并且,在利用预设协议的时候,必须为集成过程计划时间,以及为协议的开销安排额外的逻辑电路或CPU

时钟周期。

3.应用围

起初,吉比特级串行器/解串器(SERDES)仅局限于用在电信行业和少数缝隙市场(如广播视频)。如今,MGT应用出现在电子行业的各个角落——军事、医疗、网络、视频、通信等等。MGT也可以用于背板或机箱之间的PCB上。对于电子行业的发展前景而言,MGT至关重要。下面是采用吉比特级SERDES的行业标准示例。

?光纤通道(FC)

?PCI Express

?RapidIO串行

?先进的交换互连(Advanced Switching Interface)

?串行ATA

?1Gb以太网

?10Gb以太网(XAUI)

?Infiniband 1X、4X、12X

吉比特级通信似乎强加了一些苛刻限制。串行设计者必须考虑信号完整性、较小的时基以及可能出现的对额外门电路和CPU周期的需求。但是,在盒间以及芯片间通信中采用吉比特级技术的优势远远超过了那些可以察觉到的缺点。例如:高速、引脚数少、低EMI和低成本等,这些都使它成为了众多高速设计的理想之选,并保证了其在未来通信系统中得到广泛的使用。

10.2.2 吉比特串行I/O系统的组成

吉比特串行传输是一种通用的传输标准,虽然不同FPGA厂家的模块和组件名不同,但其关键技术都具备下列共同点。

1.系统整体结构

吉比特串行传输的系统整体结构如图10-1所示。下面对其中的主要模块进行简要介绍。

图10-1 吉比特高速串行I/O的系统结构示意图

串行器:将速率为y的n位宽并行数据转变成速率为n*y的串行数据。

解串器:将速率为n*y的串行数据转变成速率为y的n位宽并行数据。

Rx(接收)对齐:将接收的数据对齐到合适的字边界。可以使用不同的方法,从自动检测和对齐特殊的预留比特序列(通常也称作comma字符),到用户控制的比特调整。

时钟管理器:管理各种时钟操作,包括时钟倍频,时钟分频,时钟恢复。

发送FIFO(先进先出):在输入数据发送之前,暂时保存数据。

接收FIFO:在接收数据被提取之前,暂时保存数据。在需要时钟修正的系统中,接收FIFO是必须的。接收线路接口:模拟接收电路,包括差分接收器,还可能包括有源或者无源均衡电路。

发送线路接口:模拟发送电路,可以支持多种驱动负荷。通常还带有转换的预加重部分。

线路编码器:将数据编码成适应不同线路的格式。编码器通常会消除长的无转变位的序列,同时还可以平衡数据中0、1的出现次数。需要注意的是,线路编码器是一个可选模块,某些SERDES可能没有。

线路译码器:将线路上的编码数据分解成原始数据。(这是一个可选模块,编码可能在SERDES外完成)。

时钟修正和通道绑定:修正发送时钟和接收时钟之间的偏差,同时也可实现多通道间的歪斜修正。(通道绑定是可选的,并不一定包含在SERDES中)。

其他可能包括的功能模块有:循环冗余检测(CRC)码生成器、CRC检测器、多种编码

和解码(4b/5b、8b/10b、64b/66b)、可调的扰码器、各种对齐和菊花链选项、可配置的时钟前端和后端以及不同等级的自环。

2.参考时钟的要求

1)时钟精度

吉比特级收发器的输入时钟、或是参考时钟的规格定义是非常严格的。其中包含非常严格的频率要求,通常用每百万次容许频率错误的单位PPM来定义。抖动要求也是十分严格的,通常用时间(皮秒)或者时间间隔(UI)定义。下面给出这些相关定义。

?PPM:百万分之一;用来描述非常小的比率。

?UI:时间间隔;等价于一个符号的时间长度,例如:0.2UI = 20%的符号时间。

?抖动:理想传输位置的偏差。

如此严格的规定才使得PLL和时钟提取电路能够正常工作。通常系统的每一个印刷电路板都需要有一个精确石英晶体振荡器供MGT使用。这些晶体振荡器的精确度比大多数用在数字系统中的晶体振荡器要高一个级别,而且价格也要高出一截。很多情况下,一般的时钟

发生芯片和PLL因为带有很大的抖动,而不能用于MGT。

2)时钟修正策略

传输时钟有非常严格的抖动要求,所以吉比特SERDES通常不能将恢复时钟作为传输时钟。每一个PCB集合都有唯一的振荡器和唯一的频率。如果两个1GHz的振荡器仅仅有1PPM的频差,同时我们提供1/20的参考时钟,则数据流的时钟每秒钟可能会增加或者缺失20,000个周期。因此,在8b/10b 编码的系统中,每秒将会额外增加或者损失2万个符号。

大多数的SERDES都有时钟修正选项。时钟修正需要使用唯一的符号或者符号序列,它们在数据流中

是不会出现的。因为时钟修正是对齐的后续处理,所以可以比较容易地通过保留一个K字符、或者一组有序的K字符、或者一个时钟修正数据序列来实现。时钟修正进行的频数必须足够多,从而可以通过丢弃或者重复来补偿时钟的差异。当然,有些系统并不需要时钟修正。例如,相同的参考时钟和相同的速率意味着不需要进行时钟修正。同样,如果所有接收电路的时钟都来自恢复时钟,那么时钟修正也是不需要的。如果FIFO的写入速率和读出速率相等,也没有必要进行时钟修正。如果所有的传输参考时钟都是通过一个外部的PLL锁定在一个公共的参考频率上,那么也不需要时钟修正。

3线路编码机制

线路编码机制将输入的原始数据转变成接收器可以接收的格式。同时,线路编码机制还必须保证有足够的切换提供给时钟恢复电路。编码器还提供一种将数据对齐到字的方法,同时线路可以保持良好的直流平衡。线路编码机制也可选择用来实现时钟修正、块同步、通道绑定和将带宽划分到子通道。线路编码机制主要有两种:数值查找机制和自修改数据流或扰码器机制。目前常用的有:8B/10B编码、4B/5B编码以及扰码。

1)8b/10b编码

8b/10b编码机制是由IBM开发的,已经被广泛采用。8b/10b编码机制是Infiniband,吉比特以太网,FiberChannel以及XAUI 10G以太网接口采用的编码机制。它是一种数值查找类型的编码机制,可将8位的字转化为10位符号。这些符号可以保证有足够的跳变用于时钟恢复。8b/10b编码具有良好的直流平衡特性,通过“运行不一致性”的方法来实现,即只使用有相同个数0和1的符号,但这会限制符号的数量。同时,8b/10b中的comma字符(用于表示对齐序列的一个或两个符号)可辅助数据对齐。

8b/10b机制能带来字对齐、时钟修正机制、通道绑定机制和子通道生成等功能,其唯一的缺陷是开销。为了获得2.5Gbit的带宽,它需要3.125Gb/s的线路速率。从减小开销的角度讲,下面所讲述的扰码技术可以很容易地解决时钟发送和直流偏置问题,并且不需要额外的带宽。

2)4b/5b编码

4b/5b和8b/10b是类似的,但是要简单些,将4个比特编码成5个比特。4b/5b的控制字符要少一些,但不能处理直流平衡和不一致性问题。由于编码开销相同但是功能却比较少,4b/5b编码机制并不经常使用。它的最大优势是设计的尺寸,不过随着逻辑门价格的降低这个优势也不再明显。目前,4b/5b仍用在各种低速标准中,包括低速率版本的光纤通路、音频标准AES-10以及多通道数字音频复接标准MADI接口中。

3)扰码

扰码是一种将数据重新排列或者进行编码以使其随机化的方法,但要求必须能够通过解扰恢复。加扰的目的就是打乱长的连0和长的连1序列,将数据随机化。一般将那些在解扰时不需要额外对齐信息的扰码称作自同步码。扰码发生器通常由移位寄存器组成,所占用的硬件资源很少。

扰码器消除了长连0和长连1序列以及其它会对接收器接收能力有负面影响的序列,但并不能取代

8b/10b编码。在实际中,由于存在不允许的数值,所以需要设计数据流中不能出现连0或连1的长度。长的连0、连1会被扰码器打乱,并在解扰时进行恢复。接收数据流的解扰逻辑在数据流中搜寻这些符号并对齐数据。

4.接收和发送缓冲器

接收和发送缓冲器,是吉比特级收发器的主要数字接口,通常是高速FIFO。发送端通常有一个小型的FIFO,它要求读取和写入的时钟是等时同步的(频率匹配但相位不一定匹配)。如果接收和发送的选通信号不是工作在精确相同的频率,则通常需要使用一个较大的FIFO,并持续检测FIFO的当前状态。如果FIFO被不断地填充,将最终导致溢出。在这种情况下,必须在输入数据流中检测idle符号。如果检测到idle符号,则不把idle符号写入FIFO;反过来,如果FIFO运行较慢则在输出数据流会出现idle符号,数据被传送给用户。此时写指针保持不动,不断重复idle符号。相对于发送缓冲器而言,MGT建的接收FIFO通常需要有更深层次的考虑。它的主要目的是为了实现时钟修正和通道绑定。

5.线路均衡

线路均衡主要用于补偿由频率不同而引起的阻抗/衰减差异。均衡器有很多种形式,但总体上可以分为有源和无源两种。均衡器通常包含在SERDES的模拟前端,或者作为系统的一个独立部分。

1)均衡技术简介

无源均衡器是无源电路,其频率响应可以补偿传输衰减。它也可以看作一个滤波器,将传输线所使用的各个频率通过,而将传输线没有使用的其他频率滤除,那么整体的频率响应就会变得平坦许多。有源均衡器可以认为是依赖频率的放大器/衰减器。

有源均衡器主要有两种:固定形式有源均衡器和自适应有源均衡器。对于任意的输入数据流,固定形式有源均衡器的频率响应都是一样的。固定形式均衡器比较适合于不变系统中,例如:芯片到芯片,平衡化的背板系统以及固定长度电缆的系统;自适应均衡器要复杂的多,自适应均衡器需要分析输入信号并检测哪些频率在传输通道中被削弱。在该均衡器中,测量和调节是以闭环形式实现的。自适应均衡器的频率响应取决于输入的比特流,它通常和特殊形式的线路编码机制协同工作。自适应均衡器对于可变通道的链路来说是最合适的,可变通道可以是可变的电缆长度,或是显著的位置依赖的背板系统。

2)预加重/取加重技术

预加重是一种非常普遍的均衡技术。在发送端,通过增加一串相同符号中首位符号的输出级,降低随后符号的输出级,来预先抬高输出信号频谱中的高频分量,补偿传输通道的低通滤波效应。这样,在接收端就可以得到相对均衡的眼图,使接收器能够准确地接收和恢复信号。这种技术对于高数据速率的设计而言,简单而有效。发送预加重技术主要是通过采用FIR多抽头的有限冲激响应均衡滤波器来实现的。输入到滤波器中的是当前、过去和将来要发送的数据位。滤波的系数取决于通道特性,最佳的滤波长度取决于影响当前正在发送数据的比特数量。在具体实现中,一般采用二抽头FIR,进行双

电流控制。在电路转换时,为了克服传输通道的滤波效应,发送器分发额外的动态电流。在转换后,则提供一个更低的驱动电流。不同的通道损耗补偿需要不同程度的信号预加重;因此,在发送器设计中,预加重功能一般是编程可控的。为了和发送端预加重相匹配,则在接收端必须有去加重。

6.数据包的概念

通过吉比特串行链路传输的数据大都是嵌入在某种类型的数据包中的。包是一种确切定义的字节集合,包括头部、数据和尾部。如果系统通过包来完成时钟修正,发送特殊的比特序列或者comma字符。时钟修正序列常常是比较理想的字符,comma字符是指示帧的开始和结束的天然标识。在数据中加入有序集合用于指示包的开始、结束以及包的特殊类型之后,就构成了简单而高速的传输通道。其中,空闲符号(Idle)或序列是包的概念的另一要点。如果没有信息需要发送,则发送idle符号,从而保证数据的连续传输并使其保持对齐,

10.2.3 吉比特串行I/O的设计要点

解决工程问题的关键在于充分的理解。在设计吉比特级收发器时,面临的挑战包括:理解收发器协议、信号完整性、阻抗和功率要求、屏蔽性要求、印刷电路板(PCB)设计要求以及连接器和电缆的选择要求。

1.电源

电源传送也是使用吉比特级收发器时需要考虑的重要因素。多数的MGT都需要多个电源供电。典型的电源包括:RX模拟电源、TX模拟电源、模拟地、RX终端电压、TX终端电压、数字电源以及数字地。所有的模拟发送和接收电源以及相关的模拟地必须是极其干净的,这一点是十分重要的。所以,MGT制造商通常都会使用特定电路。因此至少要求每个电压值都有各自的模拟电压校准器(如果不是每个MGT都有各自独立的校准器),并且要求使用无源的电源滤波器(由一个电容和一个铁氧体磁珠组成)。典型的电源滤波电路如图10-2所示。

图10-2 MGT电源滤波电路

某些MGT将电容包含在封装的部,此时通常只需要铁氧体磁珠。如果制造商建议使用特定电路,则通常最好遵从其建议。原因之一是,在公共部分配置了多个MGT的情况下,通常只需要一个单独的线性调整器即可。滤波器电路可以防止电源噪声进入MGT,同时它还可以防止来自某个MGT的噪声滤进其它MGT。此滤波器既是输入滤波器也是输出滤波器。有时制造商会基于自己所需的输出滤波

性能,在输入滤波器和输出滤波器性能间做出折衷。

2.匹配电阻

实现信号完整性的第一步就是在差分传输线上传送这些信号。根据通常的定义,传输线都有一定的固定阻抗。实际上,阻抗值并不是恒定的,而是变化的。这个问题在下面的几种情况下尤其突出:信号由一层转移到另一层时,信号遇到元件的焊盘时,或信号通过连接器或电缆时。当运行在吉比特级速率围,些许的阻抗增加都会是潜在的问题。吉比特级链路需要使用阻抗无限制通道,否则其无法工作。我们需要对传输通道进行模拟,并在布线之前使用CAD的信号完整性工具来最终确定连接器和电缆。我们在获取初始原型时,需要用时域反射测量法(TDR)来检验通道的阻抗。100欧姆和50欧姆的传输线是最常用的传输线。部分收发器可以适配两种传输线,而部分收发器可能只能支持其中的一种。对于10Gb/s围的应用,50欧姆显然是最通常的选择。如果收发器同时支持100欧姆和50欧姆,那么连接器和电缆的选择问题应当慎重考虑。

3.印制电路板的设计

对于优秀的PCB设计者来说,设计用于吉比特级操作的PCB也会是一个挑战。设计者需要注意:差分线路必须匹配,阻抗受限的差分线路的几何形状必须随着层数的增加而相应变化,电源分配也必须严格分析。因为可能存在成千上万的独立的设计折衷和决定,所以全面列出所面临的问题可能会有所帮助。主要包括如下的几个方面:

?材料选择

?叠层结构/板厚度

?电源层和地层

?差分线路对

?差分线路的宽度和间隔

?过孔

?线路对之间的间隔

?电源布局

在实际设计中,必须参考不同FPGA厂家对PCB设计的详细说明文档,否则系统很可能不能正常工作。

4.数字设计部分

吉比特级链路的模拟仿真需求让我们进入了一个崭新的EDA工具世界,而其数字部分的影响则要小得多。尽管如此,数字仿真时还是有几个事项需要考虑的。

1)MGT行为模型都是以特殊的加密形式出现的。这些模型都是复杂的核,而且都是非常有价值的知识产权(intellectual property,IP)核。所以,厂商为了保护他们的知识产权,通常只会以IP-safe

的格式发布这些模型。最流行的格式称作smart模型或者swift。通常,模型经过加密后,仿真器可以读取模型但是用户不能。模型部的节点和层次对于用户来说是不可见的;用户只能看见模型的输入

和输出。

2)数字仿真

MGT数字仿真的另一个问题是仿真速度。通常的数字电路大多数工作在100-300MHz的围,因此。需要把仿真的时标调整到几个纳秒。但是如果添加一个MGT的线速度模型,则信号速度就会比之前最快的信号还要快20倍以上。MGT模型都有一个并行的输入和输出端口,因此如果在大多数的测试台中使用这些措施,并创建一个实际运行在全数据速率的小型测试组件,则MGT对全局验证时间的影响将会大大减小。

第2节基于Rocket I/O高速串行技术

10.3.1 Rocket I/O技术简介

Rocket I/O是一种高速的串行收发器,采用两对差分对来进行数据的发送和接收,可以实现两个单工或一对全双工的数据传输。Rocket I/O支持从622 Mbps至3.75Gbps的全双工传输速率,还具有

8B/10B编解码(平衡编码)、时钟生成及恢复等功能,可以理想地适用于芯片之间或背板的高速串行数据传输。Aurora协议是为专有上层协议或行业标准的上层协议提供透明接口的第一款串行互连协议,可用于高速线性通路之间的点到点串行数据传输,同时其可扩展的带宽,为系统设计人员提供了所需要的灵活性。

Rocket IO收发器发送和接收串行差分信号,工作于2.5V的直流电压下,采用CML(Current Mode Logic)模式,部带有50Ω或75Ω的匹配电阻。此外,Rocket IO采用了预加重技术,可以补偿传播媒质中的高频损耗,极降低了共模信噪比和线路衰减。由香农公式:

可以得到,当信道容量一定时,信道带宽W的增加会造成信噪比下降。由于Rocket IO单路传输速率最高可达3.75 Gbps,因此可允许很低的信噪比。总体来讲,Rocket IO的显著特点包括:

?速率围介于100Mbp到3.75Gbp之间;

?业最低的功耗:在3.2Gbps下每个通道的功率均低于100mW;

?可在单个FPGA中实现多个协议(标准的和定制的);

?设计用来与Virtex-5 LXT和SXT平台FPGA的PCI Express?端点与三态以太网MAC模块一起使用;

?符合芯片到芯片、背板与光学器件接口的常见标准和协议;

?先进的Tx/Rx均衡技术,可以驱动背板和其它困难通道;

?置式PRBS发生器/检验器可以加速调试;

?在Virtex-5 LXT平台器件中的收发器多达24个;

10.3.2 Aurora协议

1.Aurora协议简介

Aurora是一个相对简单的协议,只控制链路层和物理层。Aurora的设计理念是使其它高层协议,例如TCP/IP和以太网,可以很容易的运行在Aurora之上。Aurora协议使用1个或多个高速的串行通道构成更高速的通路,如图10-3所示。

图10-3 Aurora链路结构示意图

Aurora不仅定义了物理接口,而且定义了包结构、嵌入其它协议包的推荐程序、数据提取和流量控制。协议中定义了有效链路的初始化程序,同时还描述了禁止使用发生过量错误的链路的相关程序。由于协议中没有寻址时序,所以不支持交换。协议中也没有定义错误检测、重传或有效载荷的纠错。此协议是由Xilinx开发的,并且无限制地开放给公众自由使用,也可以将Aurora数据包加载到其他协议。

2.定制协议

在某些情况下,用户可能希望制定自己的协议。特别是当标准协议不能满足要求,或者标准协议对于用户的应用来说太过宽泛时,制订用户自己的协议是个很好的选择。当然,有时用户可能也需要一个新的复杂协议,但是这种情况通常留给制定标准的专业协会。这里我们给出一个简单的例子,来了解在制定自己的协议时应当考虑的各种事项。在这个简单的应用中,需要将恒定的1.8 GHz信号流从一块板传送到另一块板。系统的输入输出使用12位的总线,工作在150MHz。针对这个简单的应用需求,协议中需要定义的容包括:数据帧结构、对齐和idle(空闲)字符。此例中,我们使用8b/10b 作为线路编码机制,并从其它8b/10b标准中借用标记及comma字符的定义。链路的基本结构如图10-4所示。

图10-4 基本帧结构

首先需要为SF(帧开始)、EF(帧结束)和idle(空闲)指定字符或者有序的字符集,之后再确定线路速率和数据帧大小。适当设置数据帧的大小,以保证对齐时有充足的SF符号,并且进行时钟修正能够有足够的idle符号。如果要传送1.8 GHz的载荷,那么传输线速率为2.5Gb/s,其有效载荷速率为2Gb/s,可以满足1.8GHz的数据需求,其额外的容量还可用于所需开销。

10.3.3 Rocket I/O硬核模块的体系结构

Xilinx公司不同的系列芯片中集成的Rocket IO是不同的,本节以经过大量应用的Virtex-2 Pro系列为例进行介绍。

1.Rocket IO架构

Virtex-2 Pro系列FPGA最多可包含16个Rocket IO模块,基本上分布于FPGA的上下两端,如图10-5所示。每通道可提供622Mbps~3.125Gbps的传输能力,且不需要在发送端配置串行数据速率,这是因为接收端的工作时钟是从接收数据中提取出来的。

图10-5 Rocket IO在Virtex-2 Pro芯片中分布示意图

Rocket IO包括PMA(Physical Media Attachment,物理媒介适配层)和PCS(PhysicalCoding Sublayer,物理编码子层)两个子层,其部结构如图10-6所示。其中PMA子层主要用于串行化和解串,PCS主要包括线路编码和CRC校验编码。

图10-6 Rocket I/O收发器的部结构示意图

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的原语端口进行配置。

2.Rocket IO硬核模块说明

Rocket IO硬核模块可通过原语和Core Generator调用,其模块结构如图10-7所示。可以看出,该硬核分为时钟合成器、时钟和数据恢复器、发送器、接收器、环回器、缓冲器、CRC校验模块、配置模块以及复位模块等九个主要组成部分。

1)时钟合成器

在实际设计中,高性能的通信质量要求有高稳定性和高精度的时钟源,而抖动和频偏是衡量时钟源的两个重要指标。RocketI/O部的工作时钟需要将输入时钟经过数十倍的倍频,但其可容忍的时钟偏差为40ps,因此建议选择高精度的差分时钟。Xilinx公司推荐选用Epson EG22121CA 2.5V(LVPECL Outputs)或者Pletronics LV1145B(LVDS Outputs)晶振。当Rocket I/O在2.5G波特以上时,参考时钟应采用差分输入方式(如LVDS、LVPECL),由专用差分时钟引脚输入,然后引到相同或相邻通道中RocketI/O的参考时钟输入端;当RocketI/O在2.5G波特以下时,不要使用FPGA部的DCM模块来产生参考时钟,因为经过DCM倍频的时钟会引入较大的抖动,使RocketI/O的接收锁相环无法稳定地锁定发送时钟。

Rocket IO采集数据的同步时钟则是通过时钟/数据恢复电路来提取的,该电路由一个单片的PLL集成块实现,不需要任何外部组件。恢复电路从接收的数据流中提取出时钟的频率和相位,并通过20倍分频后送到输出管脚RXRECCLK上。

图10-7 Virtex-2 Pro系列Rocket IO模块说明

当高精度输入到FPGA中后,吉比特发送器对参考时钟输入管脚REFCLK的信号完成20倍倍频操作后,来作为自己的工作时钟。同样,该倍频器已集成在芯片中,不需要额外的组件。RXRECCLK和REFCLK二者之间没有固定的相位关系,且都为专用时钟信号,不能连接到其他管脚上作为他用。当使用4字节或1字节数据接收路径时,RXUSRCLK和RXUSRCLK2具有不同的频率,但是频率低的时钟下降沿要和频率高的时钟下降沿对齐。同样的关系也适用于TXUSRCLK和TXUSRCLK2信号。

例如,在Virtex-2 Pro系列FPGA中,由于Rocket IO模块部将输入参考时钟20倍频,而Rocket IO 模块可容忍的输入参考时钟抖动公差仅为40ps,可见参考时钟的抖动对其性能有直接影响。

典型的时钟输入如图10-8所示,外部时钟由差分或单端引脚馈入后,只经过一级全局时钟缓冲(BUFG)布设到时钟树上,再连接到Rocket I/O的参考时钟上,可最大幅度地减小抖动。

图10-8 Rocket I/O的时钟、复位连接示意图

2)时钟和数据恢复器

如果没有数据存在,时钟/数据恢复器(CDR)电路会自动锁相到参考时钟上。为了使操作达到最佳性能,参考时钟的精度必须在100ppm之。同时要满足供电系统的低噪声。如果有数据,则恢复电路会自动同步锁相到输入数据上。

3)发送器

发送器模块包括发送接口、8B/10B编码器、不均匀控制、发送FIFO、串行器、发送终端以及预加重电路。

(1)FPGA发送接口

发送接口可发送1、2或4个数据字符到发送器,每个字符都是8比特或10比特位宽。当选择8比特位宽时,多出的两比特就变成8B/10B编码器的控制信号。如果同时将8B/10B编码旁路后,10比特字符的顺序如图10-9所示。

图10-9 旁路掉8B/10B编码后的字符顺序

(2)8B/10B编码器

8B/10B编码器是一个可选的硬件组件,意味着它可以被旁路掉。在吉比特以太网、光纤信道以及infiniBand应用中,编码器都是用256个字数据符和12个控制字符。编码器在K-字符(单比特)后读入8个数据比特,由这9个比特数据生成10比特编码输出。当K-字符为高时,数据将被编码成

8B/10B码中可用的12个K-字符组合中的1个;当K-字符为低时,8比特数据将被标准编码。

线路编码将8个数据位转换为不连续五个以上的“1”或“0”的10位比特码,以获取更好的直流平衡性,能提高数据传输速率、平衡码流中“0”、“1”概率,并且可以减小码流中长连“0”和长连“1”串。

8b/10b编码是属于基于块编码的mbnb线路码中的一种,很多串行标准Infiniband、光纤通道千兆以太网ATM ESCON和DVB-ASI都针对原始数据流采用8B/10B编码和解码。其编码过程是将8个比特分成5B/6B与3B/4B两部分分别编码,如图10-10所示。

图10-10 8B/10B线路编码原理

8b/10b编码集合中包括数据字串和控制字串两部分数据字串,包括256个可能数值。其中,包括可作为控制字串K23.7 K28.0~K28.7 K27.7 K29.7 K30.7的码字。当传送的字串作为控制字串时,由Rocket IO模块相应的控制字标志输入引脚,如TX_CHARISK指定该字为控制字串。尽管8B/10B编码后,数据的传输效率只有80%,但还是在各类应用中获得广泛应用,其原因在于下面几个方面:

①转换密度:其目的是保证在发送数据流中有足够的信号转换,以保证PLL正常工作。如果没有

8B/10B 编码方法,数据中的一串1或0有可能引起接收时钟漂移或同步丢失,从而引起数据丢失。

②DC 补偿:8B/10B还保证对信号进行DC补偿,这意味着链路中不会随着时间推移而出现DC偏移,8B/10B编码将用户数据按字节8位块变换成多个10位的输出值,用这些值进行DC补偿。

③纠错:8B/10B编码遵循特定规则,根据这些规则,很多信号传输错误都可立即检测出来。

④特殊字符:8B/10B编码采用10位字符,其数量是8位字符空间中字符数的4倍,这样可以将特殊字符编码放入数据流中,它们不会被解码成数据字符,这些特殊字符可用作分隔符或其他命令。

8B/10B模块在设计中可以旁路掉,也可以用其余的线路编码方式代替,如64B/66B编码等。将发送器的TXBYPASS8B10B[n]控制信号设置成1,则可将发送端的线路编码模块旁路;在接收器中将

RX_DECODE_USE设置为FALSE,就可把接收端的解码模块旁路。

在实际设计中,依据互连双方接口的电气标准的不同,有两种耦合方式:直流耦合和交流耦合。在直流耦合方式下,并不一定要求采用8b/10b编码,可以选择其它的线路码型或不用线路编码。但在较高的传输速率条件下,如2.5Gbaud以上,为了达到良好的抗干扰性能和低的误码率,应该考虑采用8b/10b编码。而在交流耦合方式下必须要选择8b/10b编码,否则接收端的漂移会使接收器无常工作。

(3)不均匀性控制(Disparity Control)

8B/10B编码器被连续的“-”不均匀初始化,统一控制当前状态为不均匀性运行状态。TXRUNDISP表明了不均匀性的状态。

TXCHARDISPMODE和TXCHARDISPVAL可控制对每个接收字节使能不均匀性控制。例如,收发器可通过反向指定第二、第四字节的running disparity,产生以下序列:

K28.5+ K28.5+ K28.5– K28.5–或K28.5– K28.5– K28.5+ K28.5+

(4)发送FIFO

发送FIFO的长度为4,可通过配置旁路掉。只要当信号TXUSRCLK锁频到参考时钟REFCLK上,就可以使用FIFO,允许1个时钟周期的相位差。

(5)串行化输出接口

由于Rocket IO将参考时钟完成20倍频作为自身的工作时钟,因此数据需要经过并串转换后,才能通过TXP和TXN这一对差分端口发送出去,其中时隙0发送第一个比特,时隙19发送最后一个比特。TXP和TXN的电气连接特性是配置可改变的,可通过发送端的控制输入信号TXPOLARITY来实现。如果PCB上连线接反的话,可通过对TXPOLARITY信号的编程来修正。

(6)发送终端

发送器提供了发送终端,有75欧姆和50欧姆两种可编程终端,无需额外的片外终端。默认值为50欧姆。

(7)预加重

预加重的原理如10.2.3节所述,在Rocket I/O中,预加重电路有4个可选程度:10%、20%、25%以及33%,默认值为10%,可通过编程实现。选择最佳的预加重参数,可使发送器以最高波特率驱动20英寸的FR4。

4)接收器

接收器模块主要包括解串器、接收终端和8B/10B解码器。下面进行简要介绍。

(1)解串器

Rocket I/O收发器核通过RXP和RXN这一对差分接口接收差分数据,并通过芯片部的锁相环从中提取时钟,再按照此同步时钟来采样数据,无需片外PLL芯片。从数据中提取的同步时钟包括频率和相位信息,经过20分频后送到RXRECCLK。

接收端不仅可以处理跳变丰富的8B/10B编码流或加扰流,也可以处理没有跳变的连续的75比特数据流。如果使能了comma检测器,收发器可能识别的字符最多为两个10比特预编码字符。如果检测到字符/字符串,comma检测器输出将被拉高,并且数据将被同步排列,这时不会发生队列更替的现象。如果收到一个comma且队列需要重排时,数据则会被重新排列,并在接收端给出指示信息,此时,收发器会连续检测数据,寻找10比特预编码字符。如果将comma检测旁路掉,数据将不会在任何模式下重排。

可编程选项允许用户以comma+、comma-、comma+与comma-混合或用户自定义的序列来排列数据。此外,接收器也允许更改RXP和RXN上差分信号的极性,在PCB电路设计极性颠倒的情况下非常有用。

(1)接收终端

接收机提供了片上的接收终端,可配置为50欧姆或75欧姆,默认为50欧姆。

(2)8B/10B解码器

8B/10B解码器是和编码器配对出现的,如果发送端存在编码器,则接收端也必须具备该模块,不能旁路。

5)环回器

为了便于测试Rocket I/O,提供了两类可编程的环回器,它们无需在外部添加吉比特的数据端和测试终端。

一种方法是串行环回,将吉比特发送端的数据直接送到吉比特接收端,可以验证Rocket I/O模块发送端和接收端的完整性,该环回路径在发送端的输出端口上。

另一类是并行环回,用于检查整个传输电路的正确性。当使能并行环回时,串行环回的功能将失效。但是发送端的输出仍然保持有效,且可将数据通过链路发送出去,如果将TXINHIBIT拉高,则TXP 将被强制为0直到TXINHIBIT重新拉低为止。

6)弹性传送缓冲器

(1)接收缓冲器

接收缓冲器为深度64、位宽13比特的FIFO,写时钟为恢复时钟RXRECCLK,读时钟为RXUSRCLK,其作用有两个:一是用来调节读、写时钟的相位差和频率差;另一个是支持通路绑定,允许将接收流重组,以便被多个收发器读取。此外,接收缓冲器是一个弹性缓冲,其“弹性”特征指的是,可以修正其读取指针。

当然,接收缓冲器可以被旁路掉,其控制属性为:

RX_BUFFER_USE = FALSE

在该模式下,不能完成时钟校正和通路绑定,RXUSRCLK必须由RXRECCLK直接产生,但由于布线等因素,二者的相位是无法预测的,无法保证接收端可靠地接收数据。因此,一般不允许将该缓冲器旁路。

(2)接收端时钟校正器

在发送端,每隔一定的包长都会插入一些特定的修正字符,在接收端这些字符仅用来实现时钟校正,然后就会被丢掉。恢复时钟RXRECCLK的频率反映了到来数据的速率,时钟RXUSRCLK定义了FPGA 接收数据的速率,在理想情况下,二者应当是同步的,即频率和相位都一致。但由于在实际中,它们来自不同的时钟源,属于异步时钟,再加上抖动,因此频率、相位上肯定存在一定的偏差,二者需要通过接收缓冲来调节。常见的异步时钟情况如图10-11所示。

(a) 理想情况下(读时钟=写时钟)缓冲器半满示意图

(b) 读时钟>写时钟时,缓冲器少于半满示意图

(c) 读时钟<写时钟时,缓冲器多于半满示意图

图10-11 不同读写时钟模式下缓冲器状态示意图

其中,(a)是理想情况,弹性缓冲器的读时钟RXUSRCLK和写时钟RXRECCLK保持同步,缓冲器处于半满状态;当没有接收到有效数据时,接收数据将插入空闲(Idle)字符以及其余无效数据。(b)情况下读时钟快于写时钟,缓冲器将出现读空的状态,为了避免这个后果,需要进行一些重复读取或空读的操作,调整读数数据指针,对时钟完成降低校正;如果字节序列长度大于1,且属性

CLK_COR_REPEAT_WAIT为0,则接收端会重复读取相同的容,一直到缓冲器的长度达到理想的半长。(c)情况下,读时钟慢于写时钟,缓冲器将出现溢出的状态,为避免该后果,需要丢掉一些数据,

调整数据指针,对时钟完成加快校正;当CLK_COR_REPEAT_WAIT为1时,接收端会跳过两个连续的、可删除的字节序列来清空缓冲器。因此,时钟校正器总是保持缓冲器处于半满状态。

以上操作要求时钟校正逻辑能够识别那些需要重复和删除的字节序列,这些冗余序列都是在发送端插入的。此外,时钟校正和振荡器的频率、关系很大,因此晶振的精度一般应该在50ppm以。

(3)通道绑定

通道绑定是指将多个串行通道组合在一起构成一个并行通道,以此来提高收发的数据吞吐率。由于每个通道在收发器互连时钟再生和数据接收延迟上各不相同,会使接收到的数据产生“错位”的情况,因此要在发送端数据流中加入一个特殊的序列——通道绑定序列,如图10-12中的“P字符”。每个绑定通道都设定“P字符”为通道绑定序列,在接收端指定一个通道为主通道,其余通道都依据主通道的CHBONDO有效指示进入绑定状态,进而锁定本通道在Elastic Buffer中接收到通道绑定序列的位置。由弹性缓冲向部逻辑电路输出数据时,所有经过绑定的通道都以绑定序列指定的弹性缓冲中的偏移位置进行对齐输出。通道绑定完成后,为了使绑定维持在稳定状态,各通道收发器也要以主通道收发器为基准进行时钟修正操作。

在实现时,FPGA的布线原则是使绑定指示信号在模块间传输的延迟尽量小,尽量使两个互连模块间的连线不要穿越整个芯片。在FPGA布线时要对绑定指示互连线设置严格的时延约束参数。

典型的通道绑定的示意图如图10-12所示,左边为原始数据,右边为经过通道绑定的数据示意图。

图10-12 通道绑定原理图

(4)发送缓冲期

发送缓冲器为深度4、位宽20比特的FIFO,写时钟为恢复时钟TXUSRCLK,读时钟为收发器的参考时钟,其作用是用来调整读、写时钟之间的相位差,完成发送端时钟校正。

发送缓冲器也可以被旁路掉,其控制属性为:

TX_BUFFER_USE = FALSE

在该模式下,不能完成时钟校正和通路绑定,TXUSRCLK和REFCLK的相位是无法预测的,无法保证发送端可靠发送数据。因此,一般不允许将该缓冲器旁路。

7)CRC校验模块

Rocket I/O收发器支持固定的32比特CRC校验算法,其编码公式为:

该算法可支持Infiniband、光纤信道以及吉比特以太网等传输协议。在发送端,CRC逻辑识别出CRC 校验字节应添加的位置,统计和包尾,并在数据包尾上添加四个计算出的CRC占位符,因此需要在发送缓冲器预留4字节的CRC码空间。在接收端,CRC完成CRC值的校验。同样,CRC逻辑也支持用户模式,以用户定义的和包尾来定义简易数据包。

8)配置模块

下面列出可通过配置选择或控制的功能,Xilinx实现软件工具支持16个收发原语,其简要说明如表10-1所列。

表10-1 Rocket I/O可配置的原语说明

以上的每个原语都有其默认值,都允许允许修改,原语的使用方法见3.4节,详细地参数说明和更多的细节可参照文献[1]。

9)复位模块

Rocket I/O模块的复位引脚分为发送复位和接收复位两部分。由于DCM在输出时钟锁定之前处于不稳定状态,不能用作部逻辑电路时钟,所以要在DCM模块锁定后,再经过适当延迟才能将片逻辑复

相关主题
文本预览
相关文档 最新文档