基于Ultrascale+系列GTY收发器8b/10b编码方式的数据传输(三)——利用In System IBERT优化信号质量

  基于Ultrascale+系列GTY收发器8b/10b编码方式的数据传输(二)——数据收发及上板测试 一文介绍了利用GTY高速收发器进行8B/10B编码数据收发的使用方式,本文继续介绍使用In System IBERT IP核构建ibert眼图测试,以及通过设置参数以优化信号传输质量的方法。

添加In System IBERT IP核

在现有GT工程中添加In System IBERT IP核

  Vivado中构建眼图的方式存在两个IP核,IBERT Ultrascale GTY是专门用于一或多个GT通道进行眼图测试的IP核,它难以与自行搭建的GT工程相结合,因此本文主要介绍In System IBERT IP核的使用方法。

图片

  In System IBERT IP核的配置界面如下,只需选择需要测试的GTY位置即可完成配置,这里由于要测试VCU128开发板的QSFP1_1所在GT bank,因此选择quad124的第一个GT。

图片

  In System IBERT IP核的输入为两个时钟信号,其中clk为freerun时钟,其时钟频率与GT DRP(动态配置接口)的时钟频率保持一致;rxoutclk时钟使用GT COMMON产生的rxclkout2时钟。

  In System IBERT IP核的输出需要接到GT的DRP接口和几个ibert测试专用接口,在GTY IP核的配置界面include in-system ibert core一栏选择开启。

修改GTY IP核的配置

图片

  在代码中添加相关引脚链接,一一对应即可,完成后重新综合生成比特流。

    in_system_ibert_0 in_system_ibert_0_inst (
        .drpclk_o(drpclk_in),                       // output wire [0 : 0] drpclk_o
        .gt0_drpen_o(drpen_in),                     // output wire gt0_drpen_o
        .gt0_drpwe_o(drpwe_in),                     // output wire gt0_drpwe_o
        .gt0_drpaddr_o(drpaddr_in),                 // output wire [9 : 0] gt0_drpaddr_o
        .gt0_drpdi_o(drpdi_in),                     // output wire [15 : 0] gt0_drpdi_o
        .gt0_drprdy_i(drprdy_out),                  // input wire gt0_drprdy_i
        .gt0_drpdo_i(drpdo_out),                    // input wire [15 : 0] gt0_drpdo_i
        .eyescanreset_o(eyescanreset_in),           // output wire [0 : 0] eyescanreset_o
        .rxrate_o(rxrate_in),                       // output wire [2 : 0] rxrate_o
        .txdiffctrl_o(txdiffctrl_in),               // output wire [4 : 0] txdiffctrl_o
        .txprecursor_o(txprecursor_in),             // output wire [4 : 0] txprecursor_o
        .txpostcursor_o(txpostcursor_in),           // output wire [4 : 0] txpostcursor_o
        .rxlpmen_o(rxlpmen_in),                     // output wire [0 : 0] rxlpmen_o

        .rxoutclk_i(gtwiz_userclk_rx_usrclk2_out),  // input wire [0 : 0] rxoutclk_i
        .clk(gtwiz_reset_clk_freerun_in)            // input wire clk
    );

上板使用In System IBERT

查看眼图扫描

图片

  重新上板In-System IBERT将出现在ila所在窗口,使用Auto-detect link或create link创建串口链路。右键create scan可创建2D眼图扫描。

图片

  下两图展示了默认配置下的眼图结果,眼图扫描结果代表不同情况下误码率的高低。眼图中心区域越大,代表信号传输质量越好。第二张图展示了RX接收来自TX数据的结果,可以看到数据帧能够被正确解析。

图片

图片

  除了查看眼图外,IBERT还支持设置TX预加重(Pre Cursor)、TX后加重(Post Cursor)、TX差异摆动(Diff Swing)、是否使用DFE均衡器四个GT参数,这四个参数的选择会显著影响眼图大小,即信号传输质量。这四个参数会受多种因素的影响,因此当遇到误码率较高、甚至RX收到的完全为乱码的情况时,可以尝试调整这四个参数解决。

  下两张图展示了参数设置不合理的眼图,此时眼图Open UI为0%,第二张图展示了RX接收来自TX数据的结果,可以看到RX此时完全无法收到正确数据。

图片

图片

使用深度扫描查找最佳GT参数

  想要获取TX预加重(Pre Cursor)、TX后加重(Post Cursor)、TX差异摆动(Diff Swing)、是否使用DFE均衡器四个GT参数的最佳数值,可以在如下界面右键scan sweep。

图片

  在create sweep选项卡中,sweep properties中可以选择设置几个参数,IBERT能够对这些参数进行排列组合,对每种组合均进行眼图扫描,用户可以根据最好的眼图扫描结果配置参数。

图片

  由于IBERT通过DRP接口读写实现GT参数的配置,因此除了上述4个GT参数外,也可以对其他DRP能够访问的GT参数进行读写配置以查看眼图结果。

图片

工程代码

  本文所使用的工程代码可在同名公众号回复GTY_8B10B_IBERT下载。

  • 39
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wjh776a68

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值