SU200P IBERT GTH 高速串行链路实验说明
配套工程:
ibert_ultrascale_gth_0_ex工程环境:Vivado 2026.1目标器件:xcsu200p-sbva1024-2-e
1. 实验目的
本实验使用 Vivado IBERT UltraScale GTH IP 和 SU200P 开发板上的高速串行接口完成以下内容:
- 了解 IBERT IP 中协议、线速率、GTH Quad 和参考时钟的配置方法;
- 理解 IP 配置与开发板高速接口之间的对应关系;
- 认识 Vivado 导出的 IBERT 官方例程及其主要组成;
- 将官方例程生成的 PDI 下载到开发板;
- 使用 Vivado Serial I/O Analyzer 检查链路锁定、误码率和眼图。
2. 工程来源与实验定位
2.1 工程来源
当前提供的 ibert_ultrascale_gth_0_ex 工程不是从空白 RTL 工程开始编写的高速通信设计,而是在 Vivado 中完成 IBERT UltraScale GTH IP 配置后,通过 Open IP Example Design 导出的官方示例工程。
工程的基本生成流程如下:

Vivado 会根据 IP 配置自动生成 IBERT 核、GTH 通道、参考时钟连接、例程顶层以及在线调试结构。当前目录保留的工程入口为:
ibert_ultrascale_gth_0_ex/ibert_ultrascale_gth_0_ex.xpr
2.2 实验定位
IBERT 在 FPGA 内部集成测试码型发生器、接收码型校验器、误码统计和收发器参数控制。它不实现 SDI、以太网或其他完整通信协议,而是直接验证高速串行物理链路。
本实验的重点不是重新编写 GTH 收发逻辑,而是:
- 根据 SU200P 的高速接口和参考时钟完成 IP 配置;
- 理解官方例程如何连接 GTH 参考时钟和四路高速通道;
- 通过外部环回建立发送与接收链路;
- 使用 PRBS、BER 和眼图判断链路质量;
- 为后续开发实际高速通信接口验证板级硬件基础。
3. IP 配置
IBERT IP 配置需要同时考虑 FPGA 内部 GTH 资源和开发板上的实际连接。SU200P 将 Quad 223 的四路高速通道连接到两路 SDI 和两路 SFP 接口,并由板载时钟芯片提供 400 MHz 差分参考时钟。因此,协议参数、Quad 位置和参考时钟必须作为一组配置进行核对。
3.1 Protocol Definition:定义测试协议
工程使用 Custom 1 自定义协议。该协议不包含上层数据格式,只定义 IBERT 进行码型测试时所需的线速率、并行数据宽度、PLL 和参考时钟频率。
当前协议的最大线速率设置为 16 Gbit/s,内部数据宽度为 40 bit,PLL 选择 QPLL0,参考时钟频率设置为 400 MHz。
IP 配置截图预留: 在此放置 Protocol Definition 页面截图,建议完整显示
Custom 1、16 Gbit/s、40 bit、QPLL0 和 400 MHz 配置。
<samp>协议配置</samp>
| 配置项 | 当前配置 | 作用 |
|---|---|---|
| Protocol | Custom 1 | 建立不依赖具体上层协议的物理链路测试 |
| Maximum Line Rate | 16 Gbit/s | 设置当前协议允许使用的最高串行线速率 |
| Data Width | 40 bit | GTH 用户侧并行数据宽度 |
| PLL | QPLL0 | 为 Quad 内的高速通道产生串行时钟 |
| Reference Clock Frequency | 400 MHz | 与板载 GTH 参考时钟一致 |
16 Gbit/s 是当前 IP 的协议配置值。实际能够稳定测试的速率还受到板级接口、连接器、模块和线缆能力限制。特别是使用 SDI 接口时,应选择与 SDI 物理链路能力相符的速率,不能仅根据 IP 的最大线速率判断外部链路一定能够工作。
3.2 Protocol Selection:选择 Quad 223
SU200P 将 Quad 223 的四条 GTH Channel 分别连接到 SDI0、SDI1、SFP1 和 SFP2,因此工程只启用一个 Quad,并将 Quad 223 分配给 Custom 1 协议。
IP 配置截图预留: 在此放置 Protocol Selection 页面截图,建议标出 Quad 223 和四个启用的 Channel。
<samp>GTH 通道与板级接口</samp>
| 通道 | GTH 资源 | 板级接口 | 说明 |
|---|---|---|---|
| Channel 0 | GTHE4_CHANNEL_X0Y4 | SDI0 | 可通过匹配的 75 Ω 同轴链路进行验证 |
| Channel 1 | GTHE4_CHANNEL_X0Y5 | SDI1 | 可通过匹配的 75 Ω 同轴链路进行验证 |
| Channel 2 | GTHE4_CHANNEL_X0Y6 | SFP1 | 可使用兼容模块、DAC 或光纤链路验证 |
| Channel 3 | GTHE4_CHANNEL_X0Y7 | SFP2 | 可使用兼容模块、DAC 或光纤链路验证 |
GTH 位置由 FPGA 的专用高速管脚和开发板走线决定,不能为了改变界面顺序而随意选择其他 Quad。重新配置 IP 时,应先根据原理图确认目标接口连接到哪个 Quad,再在 Protocol Selection 页面选择相应资源。
原理图截图预留: 在此放置 Quad 223 与 SDI0、SDI1、SFP1、SFP2 的连接关系。
3.3 Clock Settings:选择参考时钟
板载时钟芯片向 Quad 223 提供两路 400 MHz 差分参考时钟。当前协议选择 MGTREFCLK1_223 作为收发器参考时钟,并选择 QUAD223_1 作为 IBERT 内部系统时钟来源。
IP 配置截图预留: 在此放置参考时钟和 System Clock Source 配置页面截图。
<samp>参考时钟配置</samp>
| 配置项 | 当前配置 | 硬件关系 |
|---|---|---|
| Reference Clock Source | MGTREFCLK1_223 | Quad 223 第 1 路专用参考时钟输入 |
| Reference Clock Frequency | 400 MHz | 与板载时钟芯片输出频率一致 |
| System Clock Source | QUAD223_1 | 使用第 1 路参考时钟的分频输出驱动 IBERT 控制逻辑 |
官方例程顶层保留两组 GTH 参考时钟输入。它们与 FPGA 管脚的关系如下。
| 顶层端口 | FPGA 管脚 | 说明 |
|---|---|---|
gth_refclk0p_i/n_i[0] | AA10 / AA9 | Quad 223 第 0 路 400 MHz 差分参考时钟 |
gth_refclk1p_i/n_i[0] | Y8 / Y7 | Quad 223 第 1 路 400 MHz 差分参考时钟,当前配置使用 |
参考时钟来源、频率和管脚必须同时匹配。若板载时钟未输出、频率设置错误或选择了错误的 MGTREFCLK,QPLL0 将无法锁定,后续 Link 也无法建立。
3.4 关键参数汇总
| 配置项 | 当前配置 | 配置依据 |
|---|---|---|
| IP 类型 | IBERT UltraScale GTH | 与目标器件的 GTH 收发器匹配 |
| Quad 数量 | 1 | 本实验只使用 Quad 223 |
| Protocol | Custom 1 | 用于独立的物理层码型测试 |
| Maximum Line Rate | 16 Gbit/s | 当前自定义协议的线速率配置 |
| Data Width | 40 bit | GTH 用户侧并行数据宽度 |
| PLL | QPLL0 | 为 Quad 223 的高速通道提供串行时钟 |
| Reference Clock Source | MGTREFCLK1_223 | 来自 Quad 223 第 1 路参考时钟输入 |
| Reference Clock Frequency | 400 MHz | 与板载时钟芯片匹配 |
| System Clock Source | QUAD223_1 | 为 IBERT 内部控制逻辑提供系统时钟 |
这些参数形成连续的硬件关系:板上的 SDI 和 SFP 接口决定使用 Quad 223,板载低抖动时钟决定选择 MGTREFCLK1_223 和 400 MHz,目标线速率与参考时钟共同决定 QPLL0 的工作参数。重新配置时,建议按照“板级接口—GTH Quad—参考时钟—目标线速率”的顺序核对。
完成配置并执行 Generate Output Products 后,IP 已经具备控制四路 GTH 的条件,但还缺少顶层端口、参考时钟缓冲和可直接实现的例程结构。使用 Open IP Example Design 导出官方例程后,这些内容由 Vivado 自动补齐,形成可以综合、下载和在线测试的完整工程。
4. 官方例程结构与工作原理
当前提供的 ibert_ultrascale_gth_0_ex 即为导出的官方例程。它以第 3 节配置完成的 IBERT IP 为核心,在外围加入两组参考时钟缓冲、四路 GTH 顶层端口以及 SFP 发送使能信号。以下内容只讲解该官方例程。
4.1 主要文件
| 文件 | 来源 | 作用 |
|---|---|---|
ibert_ultrascale_gth_0_ex.xpr | Vivado 官方例程 | 工程入口 |
imports/example_ibert_ultrascale_gth_0.v | Vivado 官方例程 | 综合顶层,连接参考时钟、IBERT IP 和板级控制信号 |
imports/example_ibert_ultrascale_gth_0.xdc | 工程约束 | 约束两路参考时钟和 SFP 发送使能信号 |
ibert_ultrascale_gth_0.xci | IP 配置文件 | 保存协议、Quad、线速率和参考时钟配置 |
example_ibert_ultrascale_gth_0.pdi | Vivado 实现结果 | FPGA 下载文件 |
example_ibert_ultrascale_gth_0.ltx | Vivado 调试文件 | Hardware Manager 识别 IBERT 调试核所需的信息 |
自动生成的 IBERT 内部文件通常不建议直接修改。若需要改变 Quad、线速率或参考时钟,应重新配置 IBERT IP,再生成 Output Products 和 Example Design。
4.2 总体结构
官方例程以 example_ibert_ultrascale_gth_0.v 为综合顶层。两组 400 MHz 差分参考时钟经过 GTH 专用缓冲后送入 IBERT 核;IBERT 核连接 Quad 223 的四路 GTH;四路串行收发端口再通过开发板走线连接两路 SDI 和两路 SFP 接口。

4.3 参考时钟处理
顶层使用两个 IBUFDS_GTE4 分别接收 gth_refclk0p_i/n_i 和 gth_refclk1p_i/n_i。IBUFDS_GTE4 是 GTH 专用参考时钟输入缓冲,不能用普通逻辑时钟输入缓冲代替。
两路缓冲后的参考时钟均连接到 Quad 223。当前 IBERT 配置使用 refclk1 驱动 QPLL0;refclk1 的 ODIV2 输出还经过 BUFG_GT 形成 gth_sysclk_i,作为 IBERT 核的内部控制时钟。
这种结构使 GTH 串行时钟和 IBERT 在线控制逻辑都来自板载低抖动参考时钟。只要参考时钟未正常到达,QPLL 和 IBERT 控制链路便无法进入正常状态。
4.4 IBERT 核与四路 GTH
顶层只例化一个 ibert_ultrascale_gth_0。该 IP 内部包含 Quad 223 的四条 GTH Channel、测试码型发生器、接收数据校验器、误码计数和在线参数控制。
顶层将四组 gth_txp_o/gth_txn_o 和 gth_rxp_i/gth_rxn_i 直接连接到 IBERT 核。官方例程本身不产生视频帧、网络数据包或其他业务数据,所有测试数据均由 IBERT 内部产生和检查。
因此,四路板级接口在本实验中只是不同的高速物理通道:
- 发送器连续输出选定的 PRBS 码型;
- 数据经过 FPGA GTH、PCB 走线、连接器和外部环回;
- 接收器恢复时钟和数据;
- IBERT 校验收到的 PRBS,并统计错误数量。
4.5 SFP 发送使能
顶层将 tx_disable[1:0] 固定为 2'b00,并通过约束连接到 FPGA 管脚 AK14 和 AG22。低电平使两路 SFP 发送端保持使能,从而允许 SFP1 和 SFP2 输出高速串行信号。
tx_disable 只控制 SFP 模块是否允许发送,不参与 GTH 数据内容、线速率或 PRBS 码型的产生。若 SFP 通道没有输出,应同时检查该控制信号、模块供电和模块兼容性。
4.6 BER 与眼图测试原理
建立环回后,IBERT 发送端连续输出 PRBS 测试码型,接收端以相同规则检查每个收到的数据。任何不一致都会使 Error Count 增加。Vivado 根据错误数量和累计接收比特数计算 BER,BER 越低表示链路传输越稳定。
眼图扫描会改变接收端采样点的相位和电压位置,并统计各位置的误码情况。图中的开口反映当前线速率下的时序裕量和幅度裕量。参考时钟抖动、PCB 损耗、连接器、模块、线缆和收发器均衡参数都会影响眼图结果。
5. 板级验证
5.1 实验准备与硬件连接
实验需要以下硬件:
| 硬件 | 说明 |
|---|---|
| SU200P 开发板 | 运行 IBERT 官方例程 |
| JTAG 下载线 | 下载 PDI 并连接 Hardware Manager |
| 高速环回连接 | 根据被测接口选择 SFP 模块、DAC、光纤或 75 Ω 同轴线 |
| 安装 Vivado 的主机 | 运行 Hardware Manager 和 Serial I/O Analyzer |
推荐先使用 SFP1 或 SFP2 完成实验。关闭开发板电源后插入能够支持测试速率的 SFP28 兼容模块、DAC 线或光纤连接,使被测发送通道最终返回接收通道,再连接 JTAG 并给开发板上电。
若使用 SDI0 或 SDI1,应采用匹配的 75 Ω 高速同轴线,并根据 SDI 接口和附件能够支持的速率重新选择 IBERT 线速率。连接时应确认发送端与接收端、通道编号和差分极性均正确。

<kbd>硬件连接</kbd>
5.2 打开工程并下载 PDI
打开以下 Vivado 工程:
ibert_ultrascale_gth_0_ex/ibert_ultrascale_gth_0_ex.xpr
如需重新生成下载文件,依次运行 Synthesis、Implementation 和 Generate Device Image。当前工程的下载文件位于:
bit/example_ibert_ultrascale_gth_0.pdi
下载步骤如下:
- 单击 Open Hardware Manager;
- 选择 Open Target → Auto Connect;
- 在识别到的 FPGA 器件上选择 Program Device;
- 选择
example_ibert_ultrascale_gth_0.pdi; - 若 Vivado 未自动关联调试文件,选择同目录下的
example_ibert_ultrascale_gth_0.ltx; - 单击 Program 完成下载。
PDI 和 LTX 应来自同一次实现结果。重新配置 IP 并完成实现后,应同时更新这两个文件。
5.3 创建 Link 并检查锁定状态
下载完成后,在 Hardware Manager 中打开 IBERT 或 Serial I/O Analyzer 界面。找到 Quad 223,再选择与外部环回相对应的 TX 和 RX 创建 Link。
第一次测试可将发送端和接收端都设置为 PRBS7,然后执行 Link Reset。正常情况下,应观察到:
- QPLL0 完成锁定;
- 接收端 CDR 完成锁定;
- TX 与 RX 使用相同的 PRBS 码型;
- Link Status 进入正常状态;
- 接收端能够识别并校验测试数据。
若 QPLL 或 CDR 尚未锁定,不应直接运行眼图。应先检查参考时钟、外部环回、通道选择和线速率,确认基本链路已经建立。
5.4 误码率测试

<kbd>两路 SFP 通道的 IBERT 链路与误码测试结果</kbd>
链路锁定后,清零 Error Count,并保持测试运行一段时间。正常情况下,错误计数应长期保持为 0,或处于具体测试标准允许的范围,BER 则应随着累计接收数据增加保持稳定。
图中的两条 Link 使用 Quad 223 的 Channel 2 和 Channel 3 交叉连接:Link 0 从 MGT_X0Y6/TX 发送并由 MGT_X0Y7/RX 接收,Link 1 的方向相反。两路 TX 和 RX 均使用 PRBS7,链路状态指示为绿色,速率分别显示为 16.007 Gbit/s 和 16.000 Gbit/s。
测试期间,Link 0 累计接收 9.943E10 bit,Link 1 累计接收 9.945E10 bit,两路 Error Count 均为 0E0。界面显示的 BER 为 1.006E-11,它表示在当前累计比特数和零错误条件下能够达到的观测量级,不能理解为已经实际检测到约 10⁻¹¹ 的误码。继续延长测试时间且 Error Count 仍保持为 0,才能进一步降低可报告的 BER 上限。
完成基础检查后,可以将码型改为 PRBS31,并延长测试时间。若 Error Count 持续快速增加,说明链路虽然能够锁定,但当前速率下的信号质量、模块带宽、线缆质量或均衡设置可能不满足要求。
5.5 眼图扫描

<kbd>Link 0 在 16 Gbit/s 下的二维眼图扫描结果</kbd>
误码率测试稳定后,对当前 RX 运行 Eye Scan。正常眼图应在中心区域形成清晰开口,采样点附近不应出现大面积高误码区域。
图中扫描对象为 Link 0,发送端为 MGT_X0Y6/TX,接收端为 MGT_X0Y7/RX。二维全眼扫描状态为 Done,水平范围为 -0.500 UI~0.500 UI,垂直范围为 100%,水平和垂直步进均为 8,Dwell BER 设置为 1e-5。扫描得到的 Open Area 为 6144,Open UI 为 77.78%。
眼图中心形成了连续且较宽的蓝色低误码区域,左右边沿和上下边沿之间保留了明显的采样裕量。这说明在当前 16 Gbit/s、PRBS7、模块和线缆组合下,Link 0 已经具备较好的采样窗口。该结果只代表本次被测连接和当前收发参数,不能直接代替其他通道、模块、线缆或线速率下的测试结果。
眼图结果与测试速率、发送摆幅、预加重、接收均衡、模块和线缆条件有关,因此不能为所有连接方式规定同一个固定眼宽。实验时可以保持硬件连接不变,逐步调整线速率或均衡参数,比较 BER 和眼图开口的变化。
5.6 板级验证结果
本次板级验证得到以下结果:
- Vivado 能够识别下载后的 IBERT 调试核和 Quad 223;
- Channel 2 与 Channel 3 组成两条方向相反的 SFP 测试链路;
- 两路均以约 16 Gbit/s 运行,TX 与 RX 使用 PRBS7;
- 两路分别累计接收约
9.94E10bit,Error Count 均保持为 0; - Link 0 的二维眼图扫描完成,Open UI 为 77.78%,中心低误码区域具有明显开口。
上述结果表明,当前外部环回连接下两路 SFP 高速通道能够完成 16 Gbit/s PRBS7 传输,短期误码测试未检测到错误,Link 0 也具有可用的眼图裕量。若需要形成更严格的链路质量结论,还应延长 BER 测试时间,并分别对 Link 1、其他 PRBS 码型以及不同模块和线缆组合进行眼图扫描。
6. 常见问题与解决办法
| 现象 | 可能原因 | 解决办法 |
|---|---|---|
| Hardware Manager 找不到 IBERT 核 | PDI 与 LTX 不配套,或器件未正确下载 | 使用同一次实现生成的 PDI 和 LTX 重新下载 |
| QPLL0 无法锁定 | 参考时钟未到达,频率或来源配置错误 | 检查板载时钟,确认 400 MHz 和 MGTREFCLK1_223 配置 |
| RX CDR 无法锁定 | TX/RX 未形成正确环回,通道或极性错误 | 检查环回连接、通道编号和差分极性 |
| Link 无法建立 | TX 与 RX 码型不同,通道选错或速率过高 | 统一 PRBS 设置,核对通道并降低线速率测试 |
| SFP 通道没有发送信号 | 模块未供电、tx_disable 状态错误或模块不兼容 | 检查 SFP 模块、供电和发送使能信号 |
| Error Count 持续增加 | 模块或线缆带宽不足,连接质量或均衡不合适 | 更换合适模块和短线,降低速率并调整收发参数 |
| 眼图开口较小 | 链路损耗、反射或参考时钟抖动较大 | 检查连接器和时钟,并比较不同速率及均衡设置 |
7. 总结与扩展
本实验首先根据 SU200P 的板级高速接口和 400 MHz 参考时钟配置 IBERT UltraScale GTH IP,选择 Quad 223 的四路 GTH,并建立 16 Gbit/s 的自定义测试协议;随后通过 Open IP Example Design 导出官方例程,完成综合、下载和在线链路测试。
官方例程负责连接参考时钟、IBERT 核和四路 GTH,Vivado Serial I/O Analyzer 则负责 PRBS 控制、链路状态检查、BER 统计和眼图扫描。借助这套流程,可以在实现具体高速通信协议之前,先验证 SU200P 高速物理通道是否具备稳定传输能力。
在此基础上,可以进一步比较 SDI 与 SFP 通道在不同线速率、PRBS 码型、模块和线缆条件下的测试结果,也可以调整发送摆幅、预加重和接收均衡参数,分析这些设置对 BER 和眼图的影响。

