当前位置:   article > 正文

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

tx pre cursor

  基于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
    );

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

上板使用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下载。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/天景科技苑/article/detail/807812
推荐阅读
相关标签
  

闽ICP备14008679号