XILINX专家大讲堂-FPGA篇

35

description

Xilinx提供综合而全面的多节点产品系列充分满足各种应用需求。除以上系列器件外,该系列还包含采用业界一流28nm HPL工艺技术的7系列 All Programmable FPGA其可在优化性能价格与功耗比的同时,实现突破性性能、容量与系统集成度。

Transcript of XILINX专家大讲堂-FPGA篇

Page 1: XILINX专家大讲堂-FPGA篇
Page 2: XILINX专家大讲堂-FPGA篇

XILINX All Programmable FPGA

All Programmable FPGA

FPGA

Xilinx

28nm HPL 7

All Programmable FPGA

可编程器件资料

开发工具

开发板与套件

IP核

技术解决方案

Xilinx 20nm UltraScale

Virtex® Kintex® FPGA

3D IC

ASIC

Xilinx 28nm

20nm

用V7GTH的自驱动能力简化评估链路

性能

如何将 MicroBlaze 输入时钟从差分时

钟改为单输入

7 系列 GTX 40G10G 动态切换流程

使用 S6 GTP 实现 OC3 接口

一种多芯片串行收发器纠偏方法

SFP+光模块接口设计调试优化方法

7 系列 GTX 的复位设计

Page 3: XILINX专家大讲堂-FPGA篇

XILINX All Programmable FPGA

V7GTH

作者:Jinhua Li, Xilinx SystemIO 专家

All Programmable FPGA

FPGA

Xilinx

28nm HPL 7

All Programmable FPGA

可编程器件资料

开发工具

开发板与套件

IP 核

技术解决方案

Xilinx 20nm UltraScale

Virtex® Kintex® FPGA

3D IC

ASIC

Xilinx 28nm

20nm

作为用户,我们在拿到供应商关于 SERDES 的 datasheet 或特性报

告时,知道了 TX/RX 的相关技术指标,却往往没有办法直接跟我们的应

用场景联系起来。换句话说,没办法直观地给出能或不能满足现有或将要

采用的传送链路要求。

这是因为,供应商在给出这些数据时的出发点是为了表征 SERDES

本身。比如:发送机的抖动(Jitter)、摆幅(Swing)、预加重(Pre-Emphasis)

能力,接收机的灵敏度、抖动容限(Jitter Tolerance)、均衡量等。而我

们现在需要的是应用相关数据,比如:这样能力的 SERDES 究竟能不能

满足我们的传送链路要求。不幸的是,由于应用场景的千差万别,大多数

情况下是没有相关标准的,除非可以参考 10G Base-KR。因此,我们需

要知道 SERDES 本身的极限参数:比如,在没有串扰、反射的情况下的

自驱能力。有了这些数据,我们就可以针对实际应用场景做合理的判断和

方案选取。

例如:GTH 在 12.8Gbps 时的自驱能力是约 38dB(奈奎斯特频率:

6.4GHz),见表 1,需要与一款自驱能力是 40dB 的 SERDES 互联,信

道质量优异,插损在该速率上常温下约 24dB,串扰小于-50dB(可以忽

略),插损波动 ILD 小于 4dB。双方的 TX 预加重能力差不多,都在 13dB

左右。因此,链路余量 = 38dB – 4dB(背板插损因温变增加量)– 2 4dB

(背板插损) – 4dB(ILD)~= 6dB。

表 1:GTH 自驱动能力表

奈奎斯特频率(GHz) 3 5 6.4 7.5

自驱动能力(dB) 43 42 38 32

Page 4: XILINX专家大讲堂-FPGA篇

XILINX All Programmable FPGA

图 1 链路 S 参数

Page 5: XILINX专家大讲堂-FPGA篇

XILINX All Programmable FPGA

© Copyright 2012 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. All other trademarks are the property of their respective owners.

图 2 信道仿真模型

例子 2-1: testbench 仿真数据与保存的 Golden 数据比较

图 3 信道性能仿真结果

结论:用 V7GTH 的自驱动能力来简单评估该系统是可行的并且是安全的。经过在客户的实际背板系统

下仿真(图 1~3)、测试验证,都证明该评估方法是可行的。

Page 6: XILINX专家大讲堂-FPGA篇

XILINX All Programmable FPGA

MicroBlaze

作者:Hank Fu, Xilinx 处理器专家

All Programmable FPGA

FPGA

Xilinx

28nm HPL 7

All Programmable FPGA

可编程器件资料

开发工具

开发板与套件

IP 核

技术解决方案

Xilinx 20nm UltraScale

Virtex® Kintex® FPGA

3D IC

ASIC

Xilinx 28nm

20nm

如何将MicroBlaze 输入时钟从差分时钟改为单端时钟。

感谢 Ricky Su 的帮忙。

第一步,创建一个工程。

Page 7: XILINX专家大讲堂-FPGA篇

XILINX All Programmable FPGA

第二步,删除 clock_generator。

删除前:

例子 2-1: testbench仿真数据与保存的 Golden数据比较

删除后:

例子 2-1: testbench仿真数据与保存的 Golden数据比较

Page 8: XILINX专家大讲堂-FPGA篇

XILINX All Programmable FPGA

第三步,删除时钟输入信号。

删除前:

例子 2-1: testbench仿真数据与保存的 Golden数据比较

Page 9: XILINX专家大讲堂-FPGA篇

XILINX All Programmable FPGA

第四步,创建一个时钟输入信号。

例子 2-1: testbench仿真数据与保存的 Golden数据比较

创建后MHS 文件中有下列内容:

PORT clk_100_0000MHz = clk_100_0000MHz, DIR = I, SIGIS = CLK

第五步,将 proc_sys_reset 模块的 Dcm_Locked信号做完 external 信号。

如果外部用了 DCM,那么可以把那个 DCM的 Lock 信号进来,接到 Dcm_locked 信号上。如果没有,

就接 1。

例子 2-1: testbench仿真数据与保存的 Golden数据比较

Page 10: XILINX专家大讲堂-FPGA篇

XILINX All Programmable FPGA

第六步,使用新的时钟输入信号

关闭 XPS 工程。在 MHS 文件中,替换时钟信号。也可以在 XPS 工程中做,只是步骤很多。

例子 2-1: testbench仿真数据与保存的 Golden数据比较

然后再打开 XPS 工程,可以看到时钟信号已经全部改变。

第七步,生成顶层代码。

如果外部用了 DCM,那么可以把那个 DCM的 Lock 信号进来,接到 Dcm_locked 信号上。如果没有,

就接 1。

module module_3_stub

(

sm_fan_pwm_net_vcc,

RS232_Uart_1_sout,

RS232_Uart_1_sin,

RESET,

LEDs_8Bits_TRI_O,

DIP_Switches_TRI_I,

Clock_200

);

Page 11: XILINX专家大讲堂-FPGA篇

XILINX All Programmable FPGA

© Copyright 2012 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. All other trademarks are the property of their respective owners.

output sm_fan_pwm_net_vcc;

output RS232_Uart_1_sout;

input RS232_Uart_1_sin;

input RESET;

output [7:0] LEDs_8Bits_TRI_O;

input [3:0] DIP_Switches_TRI_I;

input Clock_200;

wire proc_sys_reset_0_Dcm_locked_pin;

module_3

module_3_i (

.sm_fan_pwm_net_vcc ( sm_fan_pwm_net_vcc ),

.RS232_Uart_1_sout ( RS232_Uart_1_sout ),

.RS232_Uart_1_sin ( RS232_Uart_1_sin ),

.RESET ( RESET ),

.LEDs_8Bits_TRI_O ( LEDs_8Bits_TRI_O ),

.DIP_Switches_TRI_I ( DIP_Switches_TRI_I ),

.Clock_200 ( Clock_200 ),

.proc_sys_reset_0_Dcm_locked_pin ( proc_sys_reset_0_Dcm_locked_pin )

);

assign proc_sys_reset_0_Dcm_locked_pin = 1'b1;

endmodule

Page 12: XILINX专家大讲堂-FPGA篇

XILINX All Programmable FPGA

7 GTX 40G/10G

作者:Galen Yang, Xilinx SystemIO 专家

All Programmable FPGA

FPGA

Xilinx

28nm HPL 7

All Programmable FPGA

可编程器件资料

开发工具

开发板与套件

IP 核

技术解决方案

Xilinx 20nm UltraScale

Virtex® Kintex® FPGA

3D IC

ASIC

Xilinx 28nm

20nm

在很多应用场景下,SERDES 需要在不同的工作模式之间进行动态

切换。例如,客户希望同一接口能够支持 40GBASE-KR4 和 10G XAUI

接口,并实现动态切换。

在动态切换过程中,需要对系统的时钟架构以及 SERDES 的配置进

行动态修改。我们首先分析时钟结构。

图 1 10G XAUI 接口的时钟架构

Page 13: XILINX专家大讲堂-FPGA篇

XILINX All Programmable FPGA

图 2 40GBASE-KR4 接口的时钟架构

我们将两者结合起来,得到一个可以动态工作的时钟架构,如图 3 所示。在这个时钟结构中,通过

DRP 接口对 MMCM 进行动态配置,得到当前运行模式下需要的时钟频率。同时,

RXUSRCLK/RXUSRCLK2 通过 BUFGMUX 动态切换时钟源,得到需要的时钟频率。

图 3 40G/10G 接口的时钟架构

Page 14: XILINX专家大讲堂-FPGA篇

XILINX All Programmable FPGA

除了时钟架构以外,GTX本身的参数也需要动态重配。例如,XAUI接口是使用SERDES内部的 8B10B

编解码部件的,但是 40G 接口使用 6466B 编解码。两者的位宽/工作速率/TXBUFFER 也不一样。这些切

换通过 DRP 和端口进行操作。表 1和表 2分别是需要修改的属性和端口。

表 1 需要修改的 GTX 属性

Page 15: XILINX专家大讲堂-FPGA篇

XILINX All Programmable FPGA

© Copyright 2012 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. All other trademarks are the property of their respective owners.

表 2 需要修改的 GTX 端口

除了以上内容以外,对复位流程的处理也需要注意。特别是 10G 接口没有使用 TX BUFFER,而 40G

接口使用了 TX BUFFER。在切换为 10G 接口时,在复位流程中还需要对 TX BUFFER 进行 bypass 的处

理。

目前,这一方案已经成功在客户应用中验证。

Page 16: XILINX专家大讲堂-FPGA篇

XILINX All Programmable FPGA

S6 GTP OC3

作者:Galen Yang, Xilinx SystemIO 专家

All Programmable FPGA

FPGA

Xilinx

28nm HPL 7

All Programmable FPGA

可编程器件资料

开发工具

开发板与套件

IP 核

技术解决方案

Xilinx 20nm UltraScale

Virtex® Kintex® FPGA

3D IC

ASIC

Xilinx 28nm

20nm

SERDES 有固定的速率范围,例如 S6 GTP 支持的速率从分几个

档,从 614 Mb/s 到 810 Mb/s,1.22 Gb/s 到 1.62 Gb/s,2.45 Gb/到

3.125 Gb/s。但是很多情况下,客户应用需要的速率超出这个范围,比如

OC-3 的应用需要的速率是 155M。这种情况下,由于 SERDES 本身的

速率不支持,需要采用其他的方式进行处理。通常在这种情况下,在

SERDES 的接收方向使用 DRU 进行数据恢复,在发送方向使用多周期

数据来实现低速率应用的支持。

在 XAPP875 里面,提供了一个 NI-DRU 的参考设计。这个 DRU 支

持速率范围从 0 Mb/s 到 1250 Mb/s, 参数(速率,带宽,PPM,JITTER)

动态可配。NI-DRU 的框图如图 1 所示,在 NI-DRU 后带 Barrel Shifter,

以便设计者处理有效数据。

图 1 NI-DRU 结构框图

NI-DRU 的参数选择通过输入 CENTER_F,G1,G1_P,G2 实现,

参数的选择可以参考 XAPP875 的公式 2 到公式 17。在当前设计中,参

考时钟 155.52M,过采样速率设置为 20 倍,即 3.11G。计算得到参数如

下:

CENTER_F = 37'b0000100000000000000000000000000000000

G1 = 5'b01010

G1_P = 5'b01011

G2 = 5'b01010

Page 17: XILINX专家大讲堂-FPGA篇

XILINX All Programmable FPGA

这个设计在 SP605 上运行,整个测试环境和设计的框图如图 2 所示,OmniBER718 连接到 SP605

的 SFP 上,进行测试。在接收方向,GTP 运行在 3.11G,GTP的 RX 对 155M 数据进行过采样。过采样

数据由 DRU 恢复出 155M 数据。在发送方向,155M 数据复制 20 倍,在 GTP 的 TX 以 3.11G 的速率发

送。实际有效数据率 155M。

图 2 OC3 测试环境

图 3 是输出的 jitter 测试结果,图 4是接收的 jitter tolerance 测试结果。两者均有较大余量,证明该设

计可以支持 OC3的应用。

图 3 OC-3 TX jitter test result

Page 18: XILINX专家大讲堂-FPGA篇

XILINX All Programmable FPGA

© Copyright 2012 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. All other trademarks are the property of their respective owners.

图 4 OC-3 RX JITTER TOLERENCE test result

由于 NI-DRU 的实现和器件具体结构无关,类似应用可以在 XILINX 的任一系列 FPGA 上实现,以支

持广泛的应用。

Page 19: XILINX专家大讲堂-FPGA篇

XILINX All Programmable FPGA

作者:Jinhua Li, Xilinx SystemIO 专家

All Programmable FPGA

FPGA

Xilinx

28nm HPL 7

All Programmable FPGA

可编程器件资料

开发工具

开发板与套件

IP 核

技术解决方案

Xilinx 20nm UltraScale

Virtex® Kintex® FPGA

3D IC

ASIC

Xilinx 28nm

20nm

在一些特定的应用场景下,需要支持单板内多芯片串行收发器纠偏。

要求各接收/发送机输入/出的数据相位差很小,比如 250pS。为了达到该

技术指标要求,必须使用多通道相位对齐技术、输入输出 FIFO旁路技术。

通常的相位对齐技术由于引入了 Delay_Aligner,会带来 2~4nS 的相位

不确定,不能满足系统指标要求。

这里介绍一种利用MMCM实现多芯片相位对齐的串行收发器纠偏方

法:

1) 利用图 1 所示电路实现多芯片间的全局时钟相位对齐。该电路通

过单板上的 low Skew时钟分配器分发同相位时钟到多个相同的芯片的相

同全局时钟管脚上,再由 MMCM 实现零延迟 BUFG 电路,实现到每个

GT 的 USRCLK/2 的延迟差最小,达到全板 GT 的 USRCLK/2 同相位的

目的。

Page 20: XILINX专家大讲堂-FPGA篇

XILINX All Programmable FPGA

图 1. 时钟架构图

2) 利用 7系 Tranceiver 的 Phase_Aligner 实现 TX/RXBUFFER Bypass。

7 系列 GT(GTX,GTH,GTP)支持 TXBUFFER/RXBUFFER Bypass 功能,该功能将 Tranceiver 内

部的 XCLK 的相位调整到与 TXUSRCLK 或 RXUSRCLK 同相(误差小于 1UI)。这样,由于整个单板的所

有通道的 TXUSRCLK 和 RXUSRCLK 同相位(由时钟架构保证。即使有误差,也可以重复并在设计中校

准)。具体 Phase_Aligner 控制时序见图 2.

Page 21: XILINX专家大讲堂-FPGA篇

XILINX All Programmable FPGA

© Copyright 2012 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. All other trademarks are the property of their respective owners.

图 2. 全局时钟作为 TXUSRCLK/RXUSRCLK 的 Phase_Aligner 控制时序图

应用案例:某公司需要一个 2048 通道,且延迟差在 250pS 内的解决方案。系统分解到 8 块单板实现,

每块单板支持 128 通道。通过背板设计,可以保证到达每块单板的 100MHz 高质量时钟的相位是同相的。

这样,只要单板内的各通道延迟差能控制在 200pS 内,就可以实现该要求。XILINX 采用上述解决方案,

实现了该需求,且在实际的系统中满足了系统要求。

Page 22: XILINX专家大讲堂-FPGA篇

XILINX All Programmable FPGA

SFP+

作者:Jinhua Li, Xilinx SystemIO 专家

All Programmable FPGA

FPGA

Xilinx

28nm HPL 7

All Programmable FPGA

可编程器件资料

开发工具

开发板与套件

IP 核

技术解决方案

Xilinx 20nm UltraScale

Virtex® Kintex® FPGA

3D IC

ASIC

Xilinx 28nm

20nm

大多数的 SFP+光模块内部电口不含 Retimer,只是简单的限幅放大

器。由于限幅放大器的行为是非线性的,入口上的可被均衡码间干扰(ISI)

会被固定下来成为不可被均衡的限定性不相关抖动( bounded

uncorrelated jitter (BUJ))。工业界为了解决 Host 与模块间的电气互操作,

制定了电气标准 SFF8431。该规范规定了 SFP+模块和与之接口的 Host

的电气指标,测量方法。

SFF8431详细规定了 SFP+模块和与之接口的 Host的建议走线长度

(表 1)或插入损耗(图 1)。

表 1 Host 板可实现的走线长度

Page 23: XILINX专家大讲堂-FPGA篇

XILINX All Programmable FPGA

用户在 PCB 互联设计时,必须遵循该要求。特别是 HOST 到光模块侧,因为大多数 SFP+光模块内

部没有均衡器且接收灵敏度不是太高。但从 SFP+光模块到 HOST 侧,则有优化空间。XILINX 的 7 系列

高速收发器 GTX 和 GTH 的接收机有很强的自适应均衡器(CTLE+DFE),可以抵偿更多的因插损造成的

码间干扰(ISI)。这就给我们提供了一种成本优化的可能,我们可以将 GTX 或 GTH 的发送侧放在最优先

的 PCB 布线策略上。比如:发送侧表层走线,最少过孔,最短走线。接收侧走内层,可以绕线,更多过

孔。

当用户完成设计、安装后,进入调试阶段。怎样设定 HOST 的发送、接收参数?发送侧:建议将发送

摆幅 TXDIFFCTRL[3:0] 开到最大( 1000mV ), TXPRECURSOR[4:0] 开到 0.22 或 0.45dB ,

TXPOSTCURSOR[4:0]视链路插损情况定;如果 HOST PCB 在来奎斯特频率上的插入损耗是 4.5dB,建

议 TXPOSTCURSOR[4:0]设成 5.5dB。因为连接器+模块内部插损还有约 1dB(见图 2),单侧取一半。接

收侧:由于 XILINX 的 7系列接收机是自适应的,因此,接收侧可以不做调试。

图 2 对插MCB-HCB 差分插入损耗模板

怎样用实验方法来验证和优化参数呢?可以在发端发送 PRBS31,将上一步得到的大致参数设到发送

端,插上 HCM 板,通过 SMA 同轴线接到眼图仪表上。调整 TXPOSTCURSOR[4:0]使得 TJ 最小,有条

件的话,还可以进一步做不同温度,电压下的 TJ最优化。到此,调试就算完成了,并且性能最优化。

实践证明,该方法快捷、可靠、性能最优化。已经广泛用于某大客户 SFP+光模块接口设计、调试以

及优化。

© Copyright 2012 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. All other trademarks are the property of their respective owners.

Page 24: XILINX专家大讲堂-FPGA篇

XILINX All Programmable FPGA

7 GTX

作者:Antony Gu, Xilinx SystemIO 专家

All Programmable FPGA

FPGA

Xilinx

28nm HPL 7

All Programmable FPGA

可编程器件资料

开发工具

开发板与套件

IP 核

技术解决方案

Xilinx 20nm UltraScale

Virtex® Kintex® FPGA

3D IC

ASIC

Xilinx 28nm

20nm

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

越强。现在单片的处理能力都在 1Tbit 以上。而要处理这么多的数据,

单靠原来的 LVDS, LVPECL 已经无法满足芯片接口吞吐量的要求。所

以,如今越来越多的应用都用到高速 SERDES。

XILINX 的 SERDES 作为业界翘楚,越来越多地被客户接受并广泛

应用。而随之而来设计、调试问题,也是让客户感到害怕的问题。特别是

客户容易对高速 SERDES 犯怵,碰到问题又无从着手,导致进度受阻,

压力倍增。

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

这次主要讲 SERDES 复位设计。

复位的作用

众所周知,现在主流的 FPGA 上实现的都是时序逻辑。时序逻辑有

一个特点就是前面的状态会影响到后面的状态。所以在这种应用里,初始

状态的确定是整个设计里非常重要的一个环节。复位就是用来初始化逻辑

状态用的。

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

SERDES 的状态,特别是 BUFFER 的状态会受到很大的影响。由于

BUFFER 的读写时钟有效稳定的时间不同,大致会引起以下 2 种情况:

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

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

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

设计打下良好的基础。

7 系列 GTX 的时钟结构

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

系列 GTX/GTH 的时钟结构。

Page 25: XILINX专家大讲堂-FPGA篇

XILINX All Programmable FPGA

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 26: XILINX专家大讲堂-FPGA篇

XILINX All Programmable FPGA

复位设计的案例

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

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

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

号才能拉高。

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

Page 27: XILINX专家大讲堂-FPGA篇

XILINX All Programmable FPGA

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

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

RXUSERRDY。

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

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

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

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

Page 28: XILINX专家大讲堂-FPGA篇

XILINX All Programmable FPGA

整个复位顺序都是从 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 29: XILINX专家大讲堂-FPGA篇

XILINX All Programmable FPGA

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

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

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 稳定后才能拉高。

Page 30: XILINX专家大讲堂-FPGA篇

XILINX All Programmable FPGA

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

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

三、TXOUTCLKSEL = TXPLLREFCLK_DIV1/2

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

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

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

四、TXOUTCLKSEL = TXPLLREFCLK_DIV1/2,用到 MMCM

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

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

以用下面的复位方法

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

Page 31: XILINX专家大讲堂-FPGA篇

XILINX All Programmable FPGA

五、TXBUFFER BYPASS 情形

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

有相位对齐电路的复位。

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

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

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

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

作就可以了。

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

整个复位的波形图如下

和前面不同的是,这里用 TXPHALIGNDONE 作为后续逻辑的复位信号。这是因为这个信号拉高了,

表示 SERDES 的初始化已经完成,可以工作了。而前面的几种应用,TXRESETDONE 的拉高是

SERDES 能够正常发送数据的标志。

RX 复位设计

这里只包括用到 RXOUTCLK 时的复位。如果是用 TXOUTCLK 作为 RXUSRCLK/RXUSRCLK2 时

钟源的情形,可以参考 TX 复位设计部分。

RX 的结构比 TX 要复杂。相对应的复位也会复杂一些。主要原因是 RXOUTCLK 的源头可能是

CDR 送出的恢复钟。也就是说,需要 CDR 稳定工作后才能有稳定的 RXOUTCLK 输出。所以后续的复

位需要与此相配。

CDR 在有信号送入时,会跟踪上输入信号的频率、相位;当没有信号送入时,它会慢慢锁到本地时

钟上,直到又有信号送入。这个不是跃变的过程,而是慢慢变化的。这里不会引入恢复时钟的跳变。

一、RXOUTCLKSEL = RXOUTCLKPMA

这种情形下,RXOUTCLK 的源头就是 CDR 的恢复钟。

Page 32: XILINX专家大讲堂-FPGA篇

XILINX All Programmable FPGA

由于初始化复位时,我们还是用 QPLLLKDET/CPLLLKDET 作为 RXUSERRDY 的输入,这样在

PLL 锁定后可以完成 PMA/PCS 的初始化。

但是在工作起来后,CDR 会锁到输入信号上。在跟踪过程中,恢复钟(也就是 RXBUFFER 的写时

钟)会有个渐变的过程。这个可能会导致 RXBUFFER 溢出。所以用 RXBUFSTATUS[2]送到

RXBUFRESET。这样在 RXBUFFER 溢出时复位 RXBUFFER。

对于多通道应用,也是需要在所有 RXRESETDONE 都拉高时复位 RXBUFFRESET 一下,这样可

以减少各路的偏移。当然,任意一路有前面说到的溢出,也需要复位所有的 RXBUFFER。

二、RXOUTCLKSEL = RXOUTCLKPMA,且用到 MMCM

这个情形下,我们需要注意的就是 MMCM/PLL 输入时钟源于 CDR 恢复时钟并给 RXPCS 提供用

户时钟。所以需要

1. MMCM 必须在 PLL 锁定后延时一段时间释放复位,这其中的时间就是 CDR 锁定的时间。

2. MMCM 的 LOCK 信 号 控 制 RXUSERRDY , 以 保 证 RXPCS 的 复 位 是 在

RXUSRCLK/RXUSRCLK2 都稳定后释放的。

这种应用里,如果外部输入信号丢失,比如拔掉再插上光纤,那需要对接收侧做整体复位以保证接收

的可靠。这时整个时钟都会重新复位一遍。

三、RXOUTCLKSEL = RXPLLREFCLK_DIV1/2

Page 33: XILINX专家大讲堂-FPGA篇

XILINX All Programmable FPGA

这种情形, RXUSRCLK/RXUSRCLK2 的源头都是参考钟,所以和 TXOUTCLKSEL =

TXPLLREFCLKDIV1/2 的情形是一样的。在现实中会合并用 TXOUTCLK 来驱动 TXUSRCLK 和

RXUSRCLK。

所以复位的方法参考 TX。

四、RXOUTCLKSEL = RXPLLREFCLK_DIV1/2, 且用到 MMCM

这 种 情 形 , RXUSRCLK/RXUSRCLK2 的 源 头 都 是 参 考 钟 , 所 以 和

TXOUTCLKSEL = TXPLLREFCLKDIV1/2 + MMCM 的情形是一样的。在现实中会合并用 TXOUTCLK

通过 MMCM 来驱动 TXUSRCLK 和 RXUSRCLK。

所以复位的方法参考 TX。这里画出 2 中复位连接图:

五、RXBUFFER BYPASS

RXUBFFER BYPASS 模式下,由相位对齐电路实现 RXCLK 和 RXUSRCLK 的相位对齐。此时

RXUSRCLK 的源头必须来自 RXOUTCLKPMA, 而 RX_XCLK_SEL = RXUSR。

在大多数情况下,RX 工作在 SINGLE LANE 模式下。所以 RXPHASEALINGMENT 只要工作在

AUTO 模式下就可以了。

对于 GTX,RXPHASEALIGNMENT 的复位连接和波形如下:

Page 34: XILINX专家大讲堂-FPGA篇

XILINX All Programmable FPGA

RXPHALIGNDONE 作为 RX 逻辑的复位信号。

对于 GTH,RXPHASEALIGNMENT 的复位连接和波形如下:

RXSYNCDONE 作为 RX 逻辑的复位信号。

同样的要求:

1. RXDLYSRESET 的脉宽不能超过 50ns。

2. 相位对齐操作必须在 RXRESETDONE 拉高后进行。

总结

对于时序系统,复位的设计会极大影响到系统的工作结果。对于 7 系列的 SERDES,其重要性是不

言而喻的。这里列举的是一些应用场景以及对应的复位设计。希望对大家有帮助。

© Copyright 2012 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. All other trademarks are the property of their respective owners.

Page 35: XILINX专家大讲堂-FPGA篇