自学内容网 自学内容网

Vivado - 在硬件中调试 Serial I/O (IBERT)

目录

1. 简介

2. 硬件平台

2.1 ZCU102

2.1.1 Clock Sources & Destinations

2.2 ZCU106

2.2.1 Clock Sources & Destinations

2.2.2 IP 配置

2.2.3 约束

3. 结果

3.1.1 IBERT UI

3.1.3 配置链路

3.1.4 扫描参数

3.1.5 Scan Plot

4. 总结


1. 简介

IBERT ,即 Integrated Bit Error Ratio Tester(集成比特误码率测试仪)。

In-System IBERT (ISI) 和 IBERT Ultrascale GTY 都是用于高速串行接口测试的 IP Core,用于在 Xilinx FPGA 设计中进行串行收发器(SerDes)的性能和功能验证。

In-System IBERT v1.0

1)功能:

  • In-System IBERT允许用户在系统运行时对FPGA内的高速串行收发器进行实时测试和监控。
  • 支持多种串行协议和接口标准。
  • 提供了一个图形用户界面,通过它用户可以配置测试参数,如数据率、编码方式等,并监控测试结果。
  • 可以进行眼图分析,帮助用户评估信号完整性。

2)应用场景:

  • 适用于系统级的调试和验证,特别是在硬件已经部署后的性能调优和问题诊断。

IBERT Ultrascale GTY v1.3

1)功能:

  • IBERT Ultrascale GTY 专为 Ultrascale 架构中的 GTY 收发器设计,提供高精度的信号完整性测试。
  • 支持高达 32.75 Gbps 的数据速率测试。
  • 同样提供眼图分析工具,以及其他高级分析功能,如误码率测试(BER)。
  • 用户界面允许详细配置各种测试参数,并可以保存和回放测试配置。

2)应用场景:

  • 主要用于设计和验证阶段,确保GTY收发器能在规定的性能指标下工作。
  • 适用于需要高数据速率和高信号完整性的应用,如数据中心、高性能计算和高端网络设备。

主要区别:

1)目标平台和收发器类型:

  • In-System IBERT 可以支持多种 Xilinx FPGA 平台和不同类型的收发器。
  • IBERT Ultrascale GTY 专门针对 Ultrascale 平台上的GTY类型收发器。

2)功能和性能:

  • IBERT Ultrascale GTY提供了更专业的测试功能,特别是在高速数据通信领域,支持更高的数据速率和更复杂的信号分析。
  • In-System IBERT更侧重于通用性和在系统运行时的调试与测试。

3)用户界面和操作复杂度:

  • 两者都提供图形用户界面,但IBERT Ultrascale GTY的界面可能提供更高级的配置和分析工具。

2. 硬件平台

  • ZCU102,包含6个 GT Bank
  • ZCU106,包含5个 GT Bank

2.1 ZCU102

2.1.1 Clock Sources & Destinations

Source:
----------------------------------------------------------------------
U56(SI570)(156.25 MHz) -> USER_MGT_SI570_P(N) -> U51(SI53340-B-GM) ->|


Destinations(xczu9eg-ffvb1156-2-e):
-------------------------------------------------------------------------------------
|-> USER_MGT_SI570_CLOCK1_P -Cap-> USER_MGT_SI570_CLOCK1_C_P -> U1.L27(MGT.129.CLK0P)
|-> USER_MGT_SI570_CLOCK1_N -Cap-> USER_MGT_SI570_CLOCK1_C_N -> U1.L28(MGT.129.CLK0P)
|
|-> USER_MGT_SI570_CLOCK2_P -Cap-> USER_MGT_SI570_CLOCK2_C_P -> U1.C8(MGT.230.CLK0P)
|-> USER_MGT_SI570_CLOCK2_N -Cap-> USER_MGT_SI570_CLOCK2_C_N -> U1.C7(MGT.230.CLK0P)

2.2 ZCU106

2.2.1 Clock Sources & Destinations

Source:
----------------------------------------------------------------------
U56(SI570)(156.25 MHz) -> USER_MGT_SI570_P(N) -> U51(SI53340-B-GM) ->|


Destinations(xczu7ev-ffvc1156-2-e):
-------------------------------------------------------------------------------------
|-> USER_MGT_SI570_CLOCK1_P -Cap-> USER_MGT_SI570_CLOCK1_C_P -> U1.U10(MGT.226.CLK1P)
|-> USER_MGT_SI570_CLOCK1_N -Cap-> USER_MGT_SI570_CLOCK1_C_N -> U1.U9(MGT.226.CLK1N)
|
|-> USER_MGT_SI570_CLOCK2_P -Cap-> USER_MGT_SI570_CLOCK2_C_P -> U1.R10(MGT.227.CLK1P)
|-> USER_MGT_SI570_CLOCK2_N -Cap-> USER_MGT_SI570_CLOCK2_C_N -> U1.R9(MGT.227.CLK1N)

2.2.2 IP 配置

1)添加 IP:IBERT Ultrascale GTH v1.4

2)打开示例设计

不用做任何更改,直接编译生成比特流。

2.2.3 约束

1)example_ibert_ultrascale_gth_0.xdc

  • Icon Constraints: 设置调试核心的时钟输入频率和使能时钟分频器。
  • GTH Refclk Lock Constraints: 定义了GTH参考时钟的引脚分配。
  • Refclk Constraints: 创建了GTH参考时钟,并将其分组为异步时钟组。
## Icon Constraints
set_property C_CLK_INPUT_FREQ_HZ 156250000 [get_debug_cores dbg_hub]
set_property C_ENABLE_CLK_DIVIDER true [get_debug_cores dbg_hub]

##gth_refclk lock constraints
set_property PACKAGE_PIN V8 [get_ports gth_refclk0p_i[0]]
set_property PACKAGE_PIN V7 [get_ports gth_refclk0n_i[0]]
set_property PACKAGE_PIN U10 [get_ports gth_refclk1p_i[0]]
set_property PACKAGE_PIN U9 [get_ports gth_refclk1n_i[0]]
set_property PACKAGE_PIN T8 [get_ports gth_refclk0p_i[1]]
set_property PACKAGE_PIN T7 [get_ports gth_refclk0n_i[1]]
set_property PACKAGE_PIN R10 [get_ports gth_refclk1p_i[1]]
set_property PACKAGE_PIN R9 [get_ports gth_refclk1n_i[1]]

## Refclk constraints
create_clock -name gth_refclk0_3 -period 6.4 [get_ports gth_refclk0p_i[0]]
create_clock -name gth_refclk1_3 -period 6.4 [get_ports gth_refclk1p_i[0]]
set_clock_groups -group [get_clocks gth_refclk0_3 -include_generated_clocks] -asynchronous
set_clock_groups -group [get_clocks gth_refclk1_3 -include_generated_clocks] -asynchronous
create_clock -name gth_refclk0_4 -period 6.4 [get_ports gth_refclk0p_i[1]]
create_clock -name gth_refclk1_4 -period 6.4 [get_ports gth_refclk1p_i[1]]
set_clock_groups -group [get_clocks gth_refclk0_4 -include_generated_clocks] -asynchronous
set_clock_groups -group [get_clocks gth_refclk1_4 -include_generated_clocks] -asynchronous

 2)ibert_ultrascale_gth_ip_example.xdc

针对每个GTH通道的发送和接收时钟,设置了异步时钟组。

## TX/RX out clock clock constraints
##
# GT X0Y12
set_clock_groups -asynchronous -group [get_clocks -of_objects [get_pins {u_ibert_gth_core/inst/QUAD[0].u_q/CH[0].u_ch/u_gthe4_channel/RXOUTCLK}] -include_generated_clocks]
set_clock_groups -asynchronous -group [get_clocks -of_objects [get_pins {u_ibert_gth_core/inst/QUAD[0].u_q/CH[0].u_ch/u_gthe4_channel/TXOUTCLK}] -include_generated_clocks]
# GT X0Y13
set_clock_groups -asynchronous -group [get_clocks -of_objects [get_pins {u_ibert_gth_core/inst/QUAD[0].u_q/CH[1].u_ch/u_gthe4_channel/RXOUTCLK}] -include_generated_clocks]
set_clock_groups -asynchronous -group [get_clocks -of_objects [get_pins {u_ibert_gth_core/inst/QUAD[0].u_q/CH[1].u_ch/u_gthe4_channel/TXOUTCLK}] -include_generated_clocks]
# GT X0Y14
set_clock_groups -asynchronous -group [get_clocks -of_objects [get_pins {u_ibert_gth_core/inst/QUAD[0].u_q/CH[2].u_ch/u_gthe4_channel/RXOUTCLK}] -include_generated_clocks]
set_clock_groups -asynchronous -group [get_clocks -of_objects [get_pins {u_ibert_gth_core/inst/QUAD[0].u_q/CH[2].u_ch/u_gthe4_channel/TXOUTCLK}] -include_generated_clocks]
# GT X0Y15
set_clock_groups -asynchronous -group [get_clocks -of_objects [get_pins {u_ibert_gth_core/inst/QUAD[0].u_q/CH[3].u_ch/u_gthe4_channel/RXOUTCLK}] -include_generated_clocks]
set_clock_groups -asynchronous -group [get_clocks -of_objects [get_pins {u_ibert_gth_core/inst/QUAD[0].u_q/CH[3].u_ch/u_gthe4_channel/TXOUTCLK}] -include_generated_clocks]
# GT X0Y16
set_clock_groups -asynchronous -group [get_clocks -of_objects [get_pins {u_ibert_gth_core/inst/QUAD[1].u_q/CH[0].u_ch/u_gthe4_channel/RXOUTCLK}] -include_generated_clocks]
set_clock_groups -asynchronous -group [get_clocks -of_objects [get_pins {u_ibert_gth_core/inst/QUAD[1].u_q/CH[0].u_ch/u_gthe4_channel/TXOUTCLK}] -include_generated_clocks]
# GT X0Y17
set_clock_groups -asynchronous -group [get_clocks -of_objects [get_pins {u_ibert_gth_core/inst/QUAD[1].u_q/CH[1].u_ch/u_gthe4_channel/RXOUTCLK}] -include_generated_clocks]
set_clock_groups -asynchronous -group [get_clocks -of_objects [get_pins {u_ibert_gth_core/inst/QUAD[1].u_q/CH[1].u_ch/u_gthe4_channel/TXOUTCLK}] -include_generated_clocks]
# GT X0Y18
set_clock_groups -asynchronous -group [get_clocks -of_objects [get_pins {u_ibert_gth_core/inst/QUAD[1].u_q/CH[2].u_ch/u_gthe4_channel/RXOUTCLK}] -include_generated_clocks]
set_clock_groups -asynchronous -group [get_clocks -of_objects [get_pins {u_ibert_gth_core/inst/QUAD[1].u_q/CH[2].u_ch/u_gthe4_channel/TXOUTCLK}] -include_generated_clocks]
# GT X0Y19
set_clock_groups -asynchronous -group [get_clocks -of_objects [get_pins {u_ibert_gth_core/inst/QUAD[1].u_q/CH[3].u_ch/u_gthe4_channel/RXOUTCLK}] -include_generated_clocks]
set_clock_groups -asynchronous -group [get_clocks -of_objects [get_pins {u_ibert_gth_core/inst/QUAD[1].u_q/CH[3].u_ch/u_gthe4_channel/TXOUTCLK}] -include_generated_clocks]

3. 结果

3.1.1 IBERT UI

下载 bitstream 后,会出现 IBERT UI:

3.1.3 配置链路

  • TX Pre-Cursor:在信号的上升沿和下降沿之前增加的高频分量,减少码间干扰(ISI)。
  • TX Post-Cursor 是指在信号的上升沿和下降沿之后增加的高频分量,减少信号拖尾现象。
  • DFE:选择是否在接收器上启用决策反馈均衡器(Decision Feedback Equalizer)。
  • 回环方式:近端回环(在器件内部:1、2)和远端回环(两个器件之间:3、4)。


 

3.1.4 扫描参数

扫描类型包括:

  • 2-D full eye scan,二维全眼扫描
  • 1-D bathtub plot,一维浴缸图

扫描步进(水平、垂直):

  • 范围均在 1-16,数值越小,扫描图约精细,耗时越长。
  • 水平即时间(X轴),1UI=200ps(@5Gpbs)。
  • 垂直即电压(Y轴)。

扫描范围(水平、垂直):保持默认即可。

停留时间(Dwell):

  • 图表中的每个点都会被扫描一定的时间(用来绘制等高图,Z轴)。
  • 例如 1e-5 意味着每个扫描步进需要采集 1e5 个样本。

3.1.5 Scan Plot

测试条件:Near-end PMA,二维全眼扫描,增量(水平、垂直)=1。

Open Area:

  • 定义:眼图中没有被信号轨迹覆盖的区域称为 open area。
  • 用途:open area越大,表示信号的抖动和噪声越小,信号的完整性越好。

Open UI:

  • 定义:眼图中未被信号轨迹覆盖的单位间隔(UI)的百分比。
  • 用途:open UI 用于衡量信号在一个单位间隔内的稳定性。open UI越大,表示信号在单位间隔内的抖动越小,接收器能够更准确地判断信号的高低电平。

4. 总结

本文分享在 ZCU102 和 ZCU106 板卡上使用 IBERT Ultrascale GTY 进行眼图测量的示例。

参考:

https://zhuanlan.zhihu.com/p/660133545


原文地址:https://blog.csdn.net/DongDong314/article/details/142529322

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!