30

赛灵思专家大讲堂 - SystemIO篇

Embed Size (px)

DESCRIPTION

由赛灵思SystemIO专家团队为您带来的设计方案及设计技巧集锦。

Citation preview

Page 1: 赛灵思专家大讲堂 - SystemIO篇
Page 2: 赛灵思专家大讲堂 - SystemIO篇

Xilinx SystemIO

© Copyright 2011 Xilinx, Inc. XILINX, the Xilinx logo, Virtex, Spartan, ISE, and other designated brands included herein are trademarks of Xilinx in the United States and other countries. PCI, PCIe and PCI Express are trademarks of PCI-SIG and used under license. All other trademarks are the property of their respective owners.

----------------------------------SystemIO---------------------------------

Xilinx SERDES调试方法

Transceiver对电源文波噪声的要求

HASS试验对 CDR的 PPM容忍度要求

参考时钟对 SERDES性能的影响

V6 PCIE应用中 GTX接收侧复位案例

7系列 SERDES的 TX复位设计

7系列 GTX在 CPRI下的应用

Page 3: 赛灵思专家大讲堂 - SystemIO篇

Xilinx SystemIO

© Copyright 2011 Xilinx, Inc. XILINX, the Xilinx logo, Virtex, Spartan, ISE, and other designated brands included herein are trademarks of Xilinx in the United States and other countries. PCI, PCIe and PCI Express are trademarks of PCI-SIG and used under license. All other trademarks are the property of their respective owners.

FPGA SERDES 的应用需要考虑到板级硬件,SERDES 参数和使用,应用协议等方面。由于

这种复杂性,SERDES 的调试工作对很多工程师来说是一个挑战。本文将描述 SERDES 的一般

调试方法,便于工程师准确快速定位和解决问题。

硬件检测

硬件检测可以分为原理图/PCB 检查和板上硬件检查。这一部分的工作相对简单,但是

很多时候问题是由这些看起来很不起眼的地方导致的。

1. 原理图/PCB 检查

根据 SERDES 应用手册要求检查原理图和 PCB 设计。例如对于 Xilinx 7 系列 GTX/GTH

SERDES,可以参考 UG476 的 Board Design Guidelines 检查原理图和 PCB 设计。

2. 板上硬件检查

使用示波器/万用表等仪器设备实际测量板上硬件,确认提供给 SERDES 的工作环境正常。

a) 检查电源的电压/精度/纹波/上电顺序是否符合数据手册的要求。例如对于 Xilinx 7

系列 GTX SERDES,需要对照 DS182 检查。

b) 检查 SERDES 参考时钟频率/摆幅是否符合数据手册的要求,以及参考时钟的管脚位

置是否正确。

c) 物理通道的检查,例如确认 AC 耦合电容的容值是否正确,光模块是否兼容,焊接

是否正常。

使用 IBERT

IBERT 是一个强有力的调试工具,可以用于调整参数设置和确认系统余量,也可以用于

故障现象判断。IBERT 在 CORE generator 里产生工程和 BIT 文件。将 BIT 文件下载到 FPGA 后,

使用 ChipScope Analyzer 连接到 FPGA 上,就会出现 IBERT 的 GUI 调试界面。

1. 检查 PLL 是否 LOCK,如果没有,需要检查时钟和电源。比如时钟频率是否正确,SERDES

Xilinx SystemIO FAE:Galen Yang

Page 4: 赛灵思专家大讲堂 - SystemIO篇

Xilinx SystemIO

© Copyright 2011 Xilinx, Inc. XILINX, the Xilinx logo, Virtex, Spartan, ISE, and other designated brands included herein are trademarks of Xilinx in the United States and other countries. PCI, PCIe and PCI Express are trademarks of PCI-SIG and used under license. All other trademarks are the property of their respective owners.

是否选择了正确的时钟源。

2. 将 SERDES 的 TX 和 RX 设为相同的数据 pattern,例如 PRBS-31。设置 SERDES 为 Near-end

PMA 模 式 。 如 果 这 一 步 不 能 工 作 , 检 查 TX/RX 极 性 是 否 反 转 ; 检 查

TXUSRCLK/TXUSRCLK2/RXUSRCLK/RXUSRCLK2 上的时钟频率是否正常。通过这一步保证

SERDES 内部工作正常。

3. 将 SERDES 设置为 Far-end PMA 和 Far-end PCS 模式,确认远端设备的 SERDES 是否收发正

常。通过这一步排除和时钟 OFFSET 相关的问题。

4. 如果这些步骤工作正常,但是误码率很高,有可能是参数设置有问题。需要通过调整

TX/RX 的参数设置来解决。也可以通过 EYE SCAN 功能来得到最佳设置和判断系统余量。

通用的调试步骤

通常会使用一定的调试步骤来定位问题,避免重复工作。一开始,一般不进行整个工程

的测试,而是基于 SERDES 的 Wrappers 工程,以方便定位问题。一般可以使用 CORE generator

里的 Transceivers Wizard 产生的 Example Design。在 Core generator 里产生 Transceivers Wizard

的 Example Design 后,会输出源文件和 scripts。利用 scripts 可以直接产生运行结果。Example

Design 里的数据产生和检测都是基于 BRAM,可以很方便的修改数据。在工程里面,Chipscope

VIOs and ILAs 必须被加入到工程里面,进行控制和调试分析。

1. 进行 Near-end PCS 测试。

a) 启动 SERDES 复位(VIO)。

b) 确认复位结束(VIO)。

c) 检查 SERDES 状态信号(VIO)。

d) 使用计数器确认时钟频率(VIO)。

2. 进行 Near-end PMA 测试。

a) 确认 CDR 工作正常,检测 CDR 产生的恢复时钟(VIO)。

b) Comma alignment 和 8B/10B 状态检查(ILA)。

3. 正常操作检测

a) 确认 clock correction 电路状态(ILA)。

b) 确认 Channel bonding 电路状态(ILA)。

c) 链路通讯检查(ILA 和 VIO)。

Page 5: 赛灵思专家大讲堂 - SystemIO篇

Xilinx SystemIO

© Copyright 2011 Xilinx, Inc. XILINX, the Xilinx logo, Virtex, Spartan, ISE, and other designated brands included herein are trademarks of Xilinx in the United States and other countries. PCI, PCIe and PCI Express are trademarks of PCI-SIG and used under license. All other trademarks are the property of their respective owners.

XILINX 在 Transceiver 用户手册里提出了对模拟电源的文波噪声要求:10mV p-p

10kHz~80Mhz。大多数客户一看到该指标要求的第一反应是——我做不到,XILINX 的

Transceiver 不好,对电源要求太严了!

事实是这样的吗?不是。XILINX 在其用户手册里给出该指标,是为了方便客户作电源设

计。因为,有数据可以参考了。很多其他供应商没有给出该指标要求,不等于没有要求。他

们往往是通过应用笔记等其他形式规定具体的滤波网络来达到他们的要求,这样反而减小了

客户的应用灵活性,往往是不可能严格实现的。因为客户的器件库不见得有供应商推荐的器

件。

随着 Transceiver 的工作速率越来越高,通道数越来越多,需要的电源电流越来越大。

原来的 LDO+LC 滤波网络架构受到挑战,电源效率太低,散热是大问题。因此,在实际的应

用中不得不考虑用 DC/DC 给 Transceiver 供电,选择怎样的 DC/DC?没有技术指标,看来是

不可接受的了。

XILINX给出 10mV p-p 10kHz~80Mhz的指标是有依据的,可实现的。XILINX最早在UG366

里给出该指标时做过电源噪声到输出 Jitter 的传递函数测试,结果如图 1:

Xilinx SystemIO FAE:Jinhua Li

Page 6: 赛灵思专家大讲堂 - SystemIO篇

Xilinx SystemIO

© Copyright 2011 Xilinx, Inc. XILINX, the Xilinx logo, Virtex, Spartan, ISE, and other designated brands included herein are trademarks of Xilinx in the United States and other countries. PCI, PCIe and PCI Express are trademarks of PCI-SIG and used under license. All other trademarks are the property of their respective owners.

图 1 电源文波噪声到输出 Jitter 的传递函数曲线

可见,随着频率的升高,每毫伏产生的输出 Jitter 增加。在 10MHz 时的灵敏度大约是

1.5pS/mV。我们再来看看 Tranceiver 对哪个频点的 Jitter 最敏感?能容忍多少 Jitter 恶化?根

据 GTX 的特性报告 RPT120, 10MHz 的 Jitter 对 CDR 的性能恶化最敏感(图 2)。根据 GTX

的特性报告 RPT120,可以接受约 0.1UI(16pS @6.5Gbps)的 Jitter 恶化(图 3)。此时,对

CDR 的性能只有微弱影响。

图 2.在不同频点注入 0.4UI 的 Jitter 的 CDR 抖动容忍度曲线

Page 7: 赛灵思专家大讲堂 - SystemIO篇

Xilinx SystemIO

© Copyright 2011 Xilinx, Inc. XILINX, the Xilinx logo, Virtex, Spartan, ISE, and other designated brands included herein are trademarks of Xilinx in the United States and other countries. PCI, PCIe and PCI Express are trademarks of PCI-SIG and used under license. All other trademarks are the property of their respective owners.

图 3. 在 10MHz 频点注入不同 Jitter 的 CDR 抖动容忍度曲线

但是,对于电源测试来说,10mV p-p 10kHz~80Mhz 的指标确实是挑战。很多仪表(示

波器)的本底噪声可能已经接近 5mV,如果探头系统不用细同轴线加 DC Block 的办法,从

探头引入的噪声可能已经超过了 10mV p-p。因此,需要选用本底噪声低的示波器,最好有

可调频点的滤波器,只测 10kHz~80Mhz 频率段。将示波器的垂直分辨率调到 5mV/格,水平

方向设成 100uS/格,作长余辉测试(见图 4)。量其最大峰峰值,要求不超过 10mV。如果发

现最大峰峰值有少量超过 10mV,我们可以用频谱仪作一个附加测试,看看主要的噪声频谱

在什么地方(见图 5)?如果不在敏感频率上(比如 10MHz),而是在低频段(比如 1MHz

以下),对系统的性能就不会有较大的影响。可以不处理,因为在低频段对电源滤波作处理

的代价很大。比如,需要换用 LDO,增加系统散热负担。

Page 8: 赛灵思专家大讲堂 - SystemIO篇

Xilinx SystemIO

© Copyright 2011 Xilinx, Inc. XILINX, the Xilinx logo, Virtex, Spartan, ISE, and other designated brands included herein are trademarks of Xilinx in the United States and other countries. PCI, PCIe and PCI Express are trademarks of PCI-SIG and used under license. All other trademarks are the property of their respective owners.

图 4 长余辉法测试电源噪声

图 5 频谱仪法测试电源噪声谱

从最近几年的工程实践来看,即使是没有使用单独的 DC/DC 模块给 SERDES 供电,也没

有引起 SERDES 问题。即使测量发现问题,也都是测量本身未按正确方法测引入的问题。因

此,XILINX 给出的电源文波噪声的要求是科学的、合理的可以实现和验证的。

Page 9: 赛灵思专家大讲堂 - SystemIO篇

Xilinx SystemIO

© Copyright 2011 Xilinx, Inc. XILINX, the Xilinx logo, Virtex, Spartan, ISE, and other designated brands included herein are trademarks of Xilinx in the United States and other countries. PCI, PCIe and PCI Express are trademarks of PCI-SIG and used under license. All other trademarks are the property of their respective owners.

我们知道,对于 PI-base CDR(XILINX 的 5、6、7 系列 SERDES 的 CDR 采用的共同架构),

CDR 的不同配置,代表作不同的 CDR 带宽、所能处理数据 PPM 偏差的能力,也就是跟踪输

入数据相位变化的能力。通常情况下,CDR 带宽越宽,所能处理数据的 PPM 偏差能力越强,

跟踪输入数据的相位变化的速度越快,但代价是会稍微牺牲抖动容忍度指标。XILINX 的

Transceivers Wizard 会给出相应协议规定的 PPM 偏差下的抖动容忍度最好的 CDR 参数。

比如:对于 RXAUI 协议, Kintex-7 的 Transceivers Wizard(Rev2.4)会将 RXCDR_CFG 设

成 72'h03000023ff20400020。根据 UG476 的表 4-16,该设置只能处理 200PPM 的偏差。但

HASS 试验的温度变化速率达 15 摄氏度每分钟,这样快速的变化引起的输入数据相位变化等

效到 PPM 偏差上很容易超过 200PPM,导致误码。解决的方法就是选用能支持更高 PPM 偏

差的 CDR 设置,使其能很好的跟踪快速温度变化引起的相位变化。

在 用 户 的 实 际 应 用 中 , 该 方 案 得 到 了 验 证 , 通 过 将 RXCDR_CFG 从

72'h03000023ff20400020 改成 72'h03800023ff10200020.原来通过不了 HASS 试验的单板,通

过了连续十几个 HASS 温度循环。

Xilinx SystemIO FAE:Jinhua Li

Page 10: 赛灵思专家大讲堂 - SystemIO篇

Xilinx SystemIO

© Copyright 2011 Xilinx, Inc. XILINX, the Xilinx logo, Virtex, Spartan, ISE, and other designated brands included herein are trademarks of Xilinx in the United States and other countries. PCI, PCIe and PCI Express are trademarks of PCI-SIG and used under license. All other trademarks are the property of their respective owners.

我们知道,SERDES 对参考时钟有严格的相位噪声性能要求。通常,SERDES 供应商会根

据其 SERDES 采用的 PLL 以及 CDR 架构特点,以及性能数据,提出对参考时钟的相位噪声的

具体要求。这个要求,通常是以不降低其 SERDES 性能为依据的,一般情况下较严。那么,

是不是一点也不能违背呢?作为供应商,总是希望有较好的参考时钟,这样系统余量最大。

但作为用户,总是希望用便宜的参考时钟,满足需要并有一定余量就行。这就要求在工程实

践中作某种平衡,你需要对系统指标要求,SERDES 性能有非常清楚的了解。

比如:XILINX 7 系列 SERDES 的 CPLL 对参考时钟的相位噪声要求如下:

Ref Clock Freq (MHz) Phase Noise at Offset Frequency (dBc/Hz)

10KHz 100KHz 1MHz

100 -126 -132 -136

125 -123 -131 -135

156.25 -121 -129 -133

250 -119 -126 -132

312.5 -116 -124 -131

625 -110 -119 -127

用户设计需要跑 XAUI 协议,由于 XAUI 接收机的 CDR 的抖动容限拐点大约在 1.87MHz。

因此,参考时钟的 1MHz 以下的相位噪声可以适当放宽。

Xilinx SystemIO FAE:Jinhua Li

Page 11: 赛灵思专家大讲堂 - SystemIO篇

Xilinx SystemIO

© Copyright 2011 Xilinx, Inc. XILINX, the Xilinx logo, Virtex, Spartan, ISE, and other designated brands included herein are trademarks of Xilinx in the United States and other countries. PCI, PCIe and PCI Express are trademarks of PCI-SIG and used under license. All other trademarks are the property of their respective owners.

Case 1:

参考时钟的相位噪声在 1MHz 以下已经不满足模板的要求,但 1MHz 以上本底噪声有较

大余量,很少的杂散有少量超标。这是可以接受的,并且在工程实践上,也是成功的,全面

满足了用户的系统要求。

Case 2:

参考时钟的相位噪声在 1MHz 以下已经不满足模板的要求,且 1MHz 以上本底噪声也没

有余量,杂散严重超标。这是不可以接受的,并且在工程实践上,也造成了收发两个方向上

的误码。

Page 12: 赛灵思专家大讲堂 - SystemIO篇

Xilinx SystemIO

© Copyright 2011 Xilinx, Inc. XILINX, the Xilinx logo, Virtex, Spartan, ISE, and other designated brands included herein are trademarks of Xilinx in the United States and other countries. PCI, PCIe and PCI Express are trademarks of PCI-SIG and used under license. All other trademarks are the property of their respective owners.

背景

在 V6 PCIE GEN1 X4 应用中,客户发现 PCIE 概率性地不能建链。在检查 PCIE 状态机,

发现状态机停留在 CONFIG.POLLING 状态下。

检查 GTX 的状态,每路都没有 8B10B 错。但是有一条 LANE 的输出数据比其他 LANE

快了 16 字节。

分析

从现象看,可以确定这个问题和 SI无关。整个问题的关键应该在于各个通道间的 SKEW。

可能引入 SKEW 的方面有:

1. PCB 线路;

2. 各路 GTX 起始工作时间,特别是 CDR 锁定时间不同;

3. RX BUFFER 指针偏移;

4. GTX 参数设置有错。

和客户分析看,PCB 的 SKEW 是严格控制的,而且它不会导致 16 字节那么大的 SKEW。

而每路 RXBUFFER 在初始化后是有复位的。但这都不能解决问题。

对于 2, 客户说起每路 GTX 的 RXELECIDLE 并不是同时变 0 的。这个表示有 GTX 跳

出 OOB 状态并不和其他 GTX 同时。这应该是导致所有问题的关键。

检查代码,我们发现 MAX_SKEW 参数设置的是 7。这个值的单位是 RXUSRCLK 周期。

对于 V6,内部固定 2 字节的位宽。对于 8B10B 应用,是 20bit。而对于 PCIE 而言,其

TS1/TS2 的长度是 16 字节。MAX_SKEW = 7 应该太大,在通道绑定时有机会在 RXBUFFER 里

看到 2 个 CBS。那通道绑定模块会错开 16 字节对齐。这和看到的现象是符合的。

V6 GTX PCIE

Xilinx SystemIO FAE:Antony Gu

Page 13: 赛灵思专家大讲堂 - SystemIO篇

Xilinx SystemIO

© Copyright 2011 Xilinx, Inc. XILINX, the Xilinx logo, Virtex, Spartan, ISE, and other designated brands included herein are trademarks of Xilinx in the United States and other countries. PCI, PCIe and PCI Express are trademarks of PCI-SIG and used under license. All other trademarks are the property of their respective owners.

解决

解决这个问题,需要从复位着手。

既然看到各路的 GTX 不同时出 OOB 状态,那可以等到所有的 RXELEICLDE 都变低后,

把所有的 GTX 都复位一下。然后在 RXRESETDONE 都拉高后,复位一下 RXBUFFER。这样

可以让各路 GTX 的 SKEW 最小。这是解决问题的一个方面;

同时,需要把 MAX_SKEW 改成 4。这样可以使通道绑定模块的搜索范围变小,以避免

错开对齐的情况发生。

结果

在按上述说明修改完代码后,我们发现这个问题再也没有出现。整个工程工作正常。

Page 14: 赛灵思专家大讲堂 - SystemIO篇

Xilinx SystemIO

© Copyright 2011 Xilinx, Inc. XILINX, the Xilinx logo, Virtex, Spartan, ISE, and other designated brands included herein are trademarks of Xilinx in the United States and other countries. PCI, PCIe and PCI Express are trademarks of PCI-SIG and used under license. All other trademarks are the property of their respective owners.

前言

随着半导体技术,特别是 FPGA 的发展,单片芯片的处理能力越来越强。现在单片的

处理能力都在 1Tbit 以上。而要处理这么多的数据,单靠原来的 LVDS, LVPECL 已经无法满

足芯片接口吞吐量的要求。所以,如今越来越多的应用都用到高速 SERDES。

XILINX 的 SERDES 作为业界翘楚,越来越多地被客户接受并广泛应用。而随之而来设

计、调试问题,也是让客户感到害怕的问题。特别是客户容易对高速 SERDES 犯怵,碰到问

题又无从着手,导致进度受阻,压力倍增。

这是我着手总结 SERDES 设计调试的初衷。

这次主要讲 SERDES 复位设计。

复位的作用

众所周知,现在主流的 FPGA 上实现的都是时序逻辑。时序逻辑有一个特点就是前面

的状态会影响到后面的状态。所以在这种应用里,初始状态的确定是整个设计里非常重要的

一个环节。复位就是用来初始化逻辑状态用的。

对于 SERDES,根据不同的应用,其时钟方案是不同的。对此,SERDES 的状态,特别

是 BUFFER 的状态会受到很大的影响。由于 BUFFER 的读写时钟有效稳定的时间不同,大致

会引起以下 2 种情况:

1. BUFFER 上下溢出,使得输入输出误码;

2. 多通道应用里,通道间引入偏移,使得各路通道绑定失败。

所以复位设计必须小心,特别需要和时钟方案相匹配,才能给可靠的设计打下良好的基

础。

Xilinx SystemIO FAE:Antony Gu

Page 15: 赛灵思专家大讲堂 - SystemIO篇

Xilinx SystemIO

© Copyright 2011 Xilinx, Inc. XILINX, the Xilinx logo, Virtex, Spartan, ISE, and other designated brands included herein are trademarks of Xilinx in the United States and other countries. PCI, PCIe and PCI Express are trademarks of PCI-SIG and used under license. All other trademarks are the property of their respective owners.

7 系列 GTX 的时钟结构

上面说到,复位应该和时钟方案相匹配,所以在这里简单介绍一下 7 系列 GTX/GTH 的

时钟结构。

7 系列 SERDES 是以 QUAD 为单位的。在一个 QUAD 里,有

a) GTX/GTH: 一个 QUAD 里有 4 个 SERDES;

b) 2 个参考钟:它们可以连到任意一个 PLL 上。而且可以给上下相邻的 QUAD 提供参考钟;

c) CPLL:这是每路 GTX/GTH 都有的 PLL。这个 C 是指 Channel;

d) QPLL:每个 QUAD 内的 SERDES 共享的 PLL。这个 Q 是指 QUAD。

QPLL 和 CPLL 可以供到每个 SERDES 的发(TX)和收(RX)。在 SERDES 里有

TX/RXSYSCLKSEL[1:0]端口选择使用哪个时钟源。

Page 16: 赛灵思专家大讲堂 - SystemIO篇

Xilinx SystemIO

© Copyright 2011 Xilinx, Inc. XILINX, the Xilinx logo, Virtex, Spartan, ISE, and other designated brands included herein are trademarks of Xilinx in the United States and other countries. PCI, PCIe and PCI Express are trademarks of PCI-SIG and used under license. All other trademarks are the property of their respective owners.

复位设计的案例

下面,根据不同的时钟方案,会列出一些复位的方法。

首先需要提醒的一点是:对于 7 系列的 SERDES, bit 文件下载完(CONFIGDONE 拉

高)后的 500ns 时间内的复位是无效的。SERDES 需要的复位是脉冲。所以 FPGA 配置完成

后 500ns 后复位信号才能拉高。

如果在 500ns 之前就拉高,那是无效的。需要在后面在有一个正脉冲才行。

Page 17: 赛灵思专家大讲堂 - SystemIO篇

Xilinx SystemIO

© Copyright 2011 Xilinx, Inc. XILINX, the Xilinx logo, Virtex, Spartan, ISE, and other designated brands included herein are trademarks of Xilinx in the United States and other countries. PCI, PCIe and PCI Express are trademarks of PCI-SIG and used under license. All other trademarks are the property of their respective owners.

关于这个问题,在 XINLIX 官网上有 AR43482 作说明。

另外相对于以前的 SERDES,在 7 系列 SERDES 里多了 2 个信号:TXUSERRDY 和

RXUSERRDY。这 2 个信号是用来控制何时进行 PCS 复位的。

SERDES 的顺序复位是指 GTXTXRESET 或 GTXRXRESET 有复位脉冲时,SERDES 会进行

从 PMA 一直到 PCS 的复位,最后把 TXRESETDONE 或 RXRESETDONE 拉高。

PMA 和 PCS 复位涵盖的范围见下表

Page 18: 赛灵思专家大讲堂 - SystemIO篇

Xilinx SystemIO

© Copyright 2011 Xilinx, Inc. XILINX, the Xilinx logo, Virtex, Spartan, ISE, and other designated brands included herein are trademarks of Xilinx in the United States and other countries. PCI, PCIe and PCI Express are trademarks of PCI-SIG and used under license. All other trademarks are the property of their respective owners.

整个复位顺序都是从 PMA 到 PCS 的。具体流程可以参考 UG476。

在完成 PMA 复位后进入 PCS 复位是,TXUSERRDY 和 RXUSERRDY 就是开关。只有当

它们为高时才能进入 PCS 复位,继而完成整个 SERDES 的复位。TXUSERRDY 和 RXUSERRDY

的含义是用户钟 TXUSRCLK/TXUSRCLK2 和 RXUSRCLK/RXUSRCLK2 都稳定了。这个时候可以

进行 PCS 复位了。

TX 复位案例

一、 TXOUTCLKSEL = TXOUTCLKPMA

这种情形下,TXOUTCLK 的频率是(LINE RATE)/(INTERNAL DATAWIDHT),它会随着线速度

的变化而变化。

对于 7 系列 SERDES,内部位宽可以有 16/20 bit (即 2 字节)和 32/40bit(即 4 字

节)2 中选择。跟逻辑接口的外部位宽有 2、4、8 字节 3 种选择。由于逻辑可以跑到 368MHz

以上。所以对于大多数的应用,TXUSRCLK/TXUSRCLK2 是可以同频的。此时,其时钟框图就

会如下:

Page 19: 赛灵思专家大讲堂 - SystemIO篇

Xilinx SystemIO

© Copyright 2011 Xilinx, Inc. XILINX, the Xilinx logo, Virtex, Spartan, ISE, and other designated brands included herein are trademarks of Xilinx in the United States and other countries. PCI, PCIe and PCI Express are trademarks of PCI-SIG and used under license. All other trademarks are the property of their respective owners.

这种复位方案里,有一些要求:

工作在顺序复位模式下(工具产生的代码默认模式)

RESETOVRD = 1’b0

GTRESETSEL = 1’b0

QPLLRESET 或 CPLLRESET 需要脉冲复位

至少一个参考钟周期

QPLLLKDET 或 CPLLLKDET 的上升沿上产生 GTXTXRESET 脉冲,启动 SERDES 进入顺序

复位

同时,把 QPLLLKDET/CPLLLKDET 连到 TXUSERRDY

最好能延时 2~3us 以保证 TXOUTCLK 稳定。

在 TXRESETDONE 的第一个上升沿做 TXPCSRESET 的复位

对单路应用不需要这个复位。

对于多路需要对齐输出的应用,需要把所有 TXRESETDONE 都拉高后做 TXPCSRESET

复位以减少各路的输出偏移

二、 TXOUTCLKSEL = TXOUTCLKPMA,用到 MMCM

这个和上面一个的差别就是需要用到 MMCM。由于 MMCM 的输入是 TXOUTCLK,必

须等到 TXOUTCLK 稳定后才能释放复位;而 MMCM 给 SERDES 提供 TXUSRCLK 和

TXUSRCLK2,所以 TXUSERRDY 必须在 MMCM 稳定后才能拉高。

同样,对于多通道应用,需要在所有 TXRESETDONE 拉高后给一个 TXPCSRESET 脉冲,

这样可以减少发送数据通道间的偏移。

Page 20: 赛灵思专家大讲堂 - SystemIO篇

Xilinx SystemIO

© Copyright 2011 Xilinx, Inc. XILINX, the Xilinx logo, Virtex, Spartan, ISE, and other designated brands included herein are trademarks of Xilinx in the United States and other countries. PCI, PCIe and PCI Express are trademarks of PCI-SIG and used under license. All other trademarks are the property of their respective owners.

三、 TXOUTCLKSEL = TXPLLREFCLK_DIV1/2

这种应用和第一种不同之处在于 TXOUTCLK 的时钟来源不同,这里是来自于参考钟。所

以它会在 QPLL 锁定之前就稳定下来。当然我们还是可以借用第一种复位方法。只是

QPLLLKDET/CPLLLKDET 送到 TXUSERRDY 时不需要延时去等待内部时钟稳定。

四、 TXOUTCLKSEL = TXPLLREFCLK_DIV1/2,用到 MMCM

同样,这种应用可以参考第二种。

当然由于 MMCM 的输入时钟是参考钟,所以它的复位释放也不需要等待 PLL 锁定。

所以我们也可以用下面的复位方法

当然由于 MMCM 复位要求,QPLLRESET/CPLLRESET 的脉宽需要大于 3 个参考钟周期。

五、 TXBUFFER BYPASS 情形

对于 CPRI 等有延时精度要求的应用,需要把 TXBUFFER 旁路。这时需要在上面的复位

之外还要有相位对齐电路的复位。

要能进行相位对齐,对时钟有一定要求:

1. 同源同频。这里只是做相位对齐,频率必须相同;

2. 时钟稳定。只有时钟稳定后才能进行相位对齐操作。

Page 21: 赛灵思专家大讲堂 - SystemIO篇

Xilinx SystemIO

© Copyright 2011 Xilinx, Inc. XILINX, the Xilinx logo, Virtex, Spartan, ISE, and other designated brands included herein are trademarks of Xilinx in the United States and other countries. PCI, PCIe and PCI Express are trademarks of PCI-SIG and used under license. All other trademarks are the property of their respective owners.

所以相对于前面使能 TXBUFFER 的应用的复位,在 TXRESETDONE 拉高后,做一次相位

对齐操作就可以了。

这里需要注意的一点是,TXDLYSRESET 的脉宽必须小于 50ns。

整个复位的波形图如下

后语

由于篇幅所限,现在只把 TX 部分复位的一些方案简单说明一下。

对于 RX 部分的复位,由于涉及到 CDR,时钟也会受到对端影响。所以情形要复杂些。

这会在另一篇里专述。

希望能对大家有帮助。

谢谢。

Page 22: 赛灵思专家大讲堂 - SystemIO篇

Xilinx SystemIO

© Copyright 2011 Xilinx, Inc. XILINX, the Xilinx logo, Virtex, Spartan, ISE, and other designated brands included herein are trademarks of Xilinx in the United States and other countries. PCI, PCIe and PCI Express are trademarks of PCI-SIG and used under license. All other trademarks are the property of their respective owners.

Kintex7 系列的 GTX,以其良好的性能和功耗表现,已经成为业界 FPGA 选型时的明星。

由于其良好的 DFE 性能,它能提供高达 12.5Gbps 的过背板能力,能支持在插损高达 30dB

的信道上可靠传输。在众多的 SERDES 应用中,有些应用比较特别,那就是需要在实际运行

过程中动态切换 GTX 的链路速率,如无线中的 CRPI 接口,需要同时支持 9.8G,4.9G,2.4G

等众多速率。那么,如何能做到可靠地进行速率切换呢?本文就此作为主题,希望能充分发

挥 GTX 的优势。

背景知识

GTX 结构

图 1 Kintex7 GTX 结构图

Xilinx SystemIO FAE:Gorden Wu

Page 23: 赛灵思专家大讲堂 - SystemIO篇

Xilinx SystemIO

© Copyright 2011 Xilinx, Inc. XILINX, the Xilinx logo, Virtex, Spartan, ISE, and other designated brands included herein are trademarks of Xilinx in the United States and other countries. PCI, PCIe and PCI Express are trademarks of PCI-SIG and used under license. All other trademarks are the property of their respective owners.

以发送方向为例,参看图 2 的发送方向的时钟分布图:

图 2 GTX 发送方向时钟分布图

Kintex7 在进行链路速率切换时,主要有如下几种办法:

1) 切换 QPLL/CPLL 的参考钟源头;

2) 通过 DRP 接口修改 QPLL/CPLL 的参数设置

3) 切换 QPLL/CPLL 提供链路时钟;

4) 调整 PMA 的分频系数。

GTX 工作模式介绍

在 GTX 内部,有 2 种工作模式:LPM 模式和 DFE 模式。

LPM(Low Power Mode)模式是低功耗模式,其主要支持低插损信道,链路速率<11.2G,

信道插损在 12dB 以下的情况。在 LPM 模式中,CTLE 和 baseline wander cancellation 都是全

自动的,不需要手工调整。LPM 模式的结构图如下:

Page 24: 赛灵思专家大讲堂 - SystemIO篇

Xilinx SystemIO

© Copyright 2011 Xilinx, Inc. XILINX, the Xilinx logo, Virtex, Spartan, ISE, and other designated brands included herein are trademarks of Xilinx in the United States and other countries. PCI, PCIe and PCI Express are trademarks of PCI-SIG and used under license. All other trademarks are the property of their respective owners.

图 3 LPM 模式下 GTX 结构图

DFE 模式则提供更好的信道补偿,其能够支持高达 12.5G 的链路速率,并在信道插损大

于 8dB 的场景下有良好表现。DFE 和 CTLE 不同,它不会放大噪声和串扰,能纠正信道不连

续引起的反射。它能自动利用 AGC,CTLE,DFE 和 baseline wander cancellation 来完成信道补

偿,同时也支持 CTLE 手动模式。DFE 模式下 GTX 的结构图如图 4。

图 4 DFE 模式下 GTX 结构图

8B/10 频谱特性介绍

为何单独介绍 8B/10B 呢?主要是因为采用 8B/10B 编码的系统,其当系统空闲时,大体

上都会发送固定码型的数据,如 802.3 中定义的/I1/和/I2/。固定码型的数据其频谱比较离散,

有太多的毛刺,不利于 EMI 也不利于 DFE 进行补偿跟踪。一般来说,当链路速率>5Gbps 时,

只是简单的采用 8B/10B 编码已经不适合。众多协议一般此时会使用加扰进行替代或者在

8B/10B 编码前先对数据进行加扰。

Page 25: 赛灵思专家大讲堂 - SystemIO篇

Xilinx SystemIO

© Copyright 2011 Xilinx, Inc. XILINX, the Xilinx logo, Virtex, Spartan, ISE, and other designated brands included herein are trademarks of Xilinx in the United States and other countries. PCI, PCIe and PCI Express are trademarks of PCI-SIG and used under license. All other trademarks are the property of their respective owners.

在实际应用中,可以通过示波器对信号进行快速 FFT 分析,得到其频谱特性。如果频谱

毛刺比较多,那么就需要考虑在发送端改善信号频谱。图 5 是 8B/10B 编码下,不同的模式

的频谱。从图上可以看出,发送固定序列的 AKR IDLE 和 GbE 下的/I2/,其频谱毛刺都很多,

不适合于 DFE 工作。

图 5 频谱图

GTX 复位流程

如果是以 ISE14.4 例化 GTX,那么 GTX 的 IP 版本应该是 2.4。在此版本的 example code

中,对于 GTX 的复位流程有充分的考虑。其可以作为大家设计 GTX 的复位处理的样板。复位

顺序的一个总体原则是:从 PLL,到 PMA,再到 PCS,再到用户逻辑,依序处理。需要注意

的是,GTX 的复位都以统一的 GTRXRESET/GTTXRESET 来启动,而复位模式则配置成 sequential

reset。

在接收方向,复位流程大致为:

Page 26: 赛灵思专家大讲堂 - SystemIO篇

Xilinx SystemIO

© Copyright 2011 Xilinx, Inc. XILINX, the Xilinx logo, Virtex, Spartan, ISE, and other designated brands included herein are trademarks of Xilinx in the United States and other countries. PCI, PCIe and PCI Express are trademarks of PCI-SIG and used under license. All other trademarks are the property of their respective owners.

图 7 GTX 接收方向复位流程图

在发送方向,复位流程大致为:

Page 27: 赛灵思专家大讲堂 - SystemIO篇

Xilinx SystemIO

© Copyright 2011 Xilinx, Inc. XILINX, the Xilinx logo, Virtex, Spartan, ISE, and other designated brands included herein are trademarks of Xilinx in the United States and other countries. PCI, PCIe and PCI Express are trademarks of PCI-SIG and used under license. All other trademarks are the property of their respective owners.

图 8 GTX 发送方向复位流程图

GTX 配置介绍

GTX 的配置需要重点关注的是:1) AGC;2) CTLE;3) RXCDR_CFG;4) 发送方向

的 Pre-emphasis。本文主要讨论前面 3 项。

LPM 模式下,AGC 和 CTLE 都是全自动模式。其也提供了 HOLD,OVERRIDE 端口进行控

制,如{RXOSHOLD, RXOSOVRDEN},{RXLPMLFHOLD, RXLPMLFKLOVRDEN},{RXLPMHFHOLD,

RXLPMHFOVRDEN}。

在 DFE 模式下,同样也提供了 HOLD,OVERRIDE 端口进行控制各种属性。其还分为 CTLE

Auto 模式和 CTLE Manual 模式。CTLE Auto 模式的启用可以通过 DRP 接口修改如下属性来完

成。

RX_BIAS_CFG[5:4] = 2'b11

Page 28: 赛灵思专家大讲堂 - SystemIO篇

Xilinx SystemIO

© Copyright 2011 Xilinx, Inc. XILINX, the Xilinx logo, Virtex, Spartan, ISE, and other designated brands included herein are trademarks of Xilinx in the United States and other countries. PCI, PCIe and PCI Express are trademarks of PCI-SIG and used under license. All other trademarks are the property of their respective owners.

RX_DFE_KL_CFG2[26:23] = 4'b0111

RX_DFE_LPM_CFG[5:2] = 4'b0010

而在 CTLE Manual 模式下,通过 DRP 接口修改 RX_DFE_KL_CFG2 属性,可以调整 CTLE

的频率响应曲线,从而获得适合于信道的值。

图 9 DFE 模式下 CTLE 的设置

除去上面的配置,影响 GTX 性能的还有 RXCDR_CFG 属性,其也只能通过 DRP 接口完成

修改。具体推荐配置值参看表 1。

LPM/DF

E

DATA

RATE

RXOUT

_DIV

REFCL

K PPM RXCDR_CFG(PRBS) RXCDR_CFG(8B/10B)

LPM

> 6.6G 1 ±200

72'h0B_0000_23FF_1040_0020 N/A

≤ 6.6G 1 72'h03_0000_23FF_1020_0020 72'h03_0000_23FF_1040_0020

> 6.6G 1 ±700

72'h0B_8000_23FF_1040_0020 N/A

≤ 6.6G 1 72'h03_8000_23FF_1020_0020 72'h03_8000_23FF_1040_0020

> 6.6G 1 ±1250

72'h0B_8000_23FF_1020_0020 N/A

≤ 6.6G 1 72'h03_8000_23FF_1020_0020 72'h03_8000_23FF_1040_0020

DFE

> 6.6G 1 ±200

72'h0B_0000_23FF_1040_0020

N/A

≤ 6.6G 1 72'h03_0000_23FF_2040_0020

> 6.6G 1 ±700

72'h0B_8000_23FF_1040_0020

≤ 6.6G 1 72'h03_8000_23FF_2040_0020

> 6.6G 1 ±1250

72'h0B_8000_23FF_1020_0020

≤ 6.6G 1 72'h03_8000_23FF_1020_0020

LPM/DFE 1.6G-6.2

5G

2 ±200 72'h03_0000_23FF_4020_0020 72'h03_0000_23FF_1020_0020

2 ±700 72'h03_8000_23FF_4020_0020 72'h03_8000_23FF_1020_0020

2 ±1250

LPM/DFE 0.8G-3.1

25G

4 ±200 72'h03_0000_23FF_4010_0020 72'h03_0000_23FF_1010_0020

4 ±700 72'h03_8000_23FF_4010_0020 72'h03_8000_23FF_1010_0020

4 ±1250

LPM/DFE 0.5G-1.5

625G

8 ±200 72'h03_0000_23FF_4008_0020 72'h03_0000_23FF_1008_0020

8 ±700 72'h03_8000_23FF_4008_0020 72'h03_8000_23FF_1008_0020

8 ±1250

Page 29: 赛灵思专家大讲堂 - SystemIO篇

Xilinx SystemIO

© Copyright 2011 Xilinx, Inc. XILINX, the Xilinx logo, Virtex, Spartan, ISE, and other designated brands included herein are trademarks of Xilinx in the United States and other countries. PCI, PCIe and PCI Express are trademarks of PCI-SIG and used under license. All other trademarks are the property of their respective owners.

表 1 RXCDR_CFG 推荐配置表

CPRI 下 GTX 的设置

在确定 CPRI 下的 GTX 设置前,需要细分几个场景:

1) 板内芯片互联

在板内互联,信道插损不大,一般可以选择 LPM 模式。然后 RXCDR_CFG 按照表 1 选择

合适值即可。

2) 背板互联

必须使用 DFE 模式,又可以设置 CTLE 是工作为 Auto 还是 Manual 模式。如果是工作在

Auto 模式,那么只需要额外设置 RXCDR_CFG 参数即可。

3) 接光模块

必须使用 DFE 模式,又可以设置 CTLE 是工作为 Auto 还是 Manual 模式。如果是工作在

Auto 模式,那么只需要额外设置 RXCDR_CFG 参数即可。

需要注意的是,如果链路速率>6G 以上,强烈建议在协议层面使能 Scramble 功能。

CPRI 下 GTX 速率切换流程

CPRI 一般分如下几个工作链路速率:

1) 2.4576 Gbps

2) 3.072 Gbps

3) 4.9152 Gbps

4) 6.144 Gbps

5) 9.8304 Gbps

在实际应用中,如果最高速率需要支持到 9.8304Gbps,那么 QPLL 是必须启用的。由于

每个 Quad 只有 1 个 QPLL,如果 Quad 里的 4 个 GTX 都要单独调节链路速率,那么 QPLL 就

只能工作在 9.8304Gbps。下面又分 2 个情况进行讨论:

a) 支持的速率有倍速关系;

只需要通过修改 PMA 部分的 RXOUT_DIV 和 TXOUT_DIV 属性,或者 RXRATE 和 TXRATE

端口即可,而 QPLL 只工作在 9.8304Gbps 上。

b) 支持的速率没有倍速关系。

除 9.8304Gbps 及其他和 9.8304Gbps 有倍速关系的速率外,其他速率的支持通过 CPLL

来支持。在 CPLL 不使用的时候可以讲起 PowerDown。

无论上面的哪种配置场景,其最基本的速率切换流程都不会有太大区别。其切换流程大

Page 30: 赛灵思专家大讲堂 - SystemIO篇

Xilinx SystemIO

© Copyright 2011 Xilinx, Inc. XILINX, the Xilinx logo, Virtex, Spartan, ISE, and other designated brands included herein are trademarks of Xilinx in the United States and other countries. PCI, PCIe and PCI Express are trademarks of PCI-SIG and used under license. All other trademarks are the property of their respective owners.

体都应如下:

Step1:通过 DRP 接口更新相关属性:

RXCDR_CFG,值具体参照表 1

RX_BIAS_CFG

RX_DFE_KL_CFG2,值具体参照图 9

RX_DFE_LPM_CFG

RXOUTDIV

TXOUTDIV

Step2:复位 GTX,参照 GTX 的复位流程。

值得注意的是,由于不同的链路速率下信道的表现不一致,RXCDR_CFG,RX_DFE_KL_CFG2

的最佳值都会有不同,所以在切换速率时,必须通过 DRP 接口将最佳值配置到 GTX。在切

换 LPM 模式和 DFE 模式时,也必须从 PMA 开始进行一次完整复位。

CPRI 下的 COMMA 对齐

对于 GTX,其 RX 端是需要在每次 RX 的 RXP/RXN 连接上时,都需要有次复位操作的。

对于单板上有 2 个 FPGA 互联,由于加载顺序有差异,这导致先起来的 FPGA 的 GTX 接收端

工作异常。推荐采用 CPRI 的 LOF 信号进行 GTX 的防护。如果长时间 LOF,可以考虑复位 GTX。

CPRI 的 LOF 信号的状态机如下: