0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Versal GTM如何用Tcl命令在IBERT生成QPRBS13序列

XILINX开发者社区 来源:XILINX开发者社区 2023-08-18 09:53 次阅读

本文作者:AMD 工程师 Cheng Zhang

一、关于 PRBS13、QPRBS13、PRBS13Q 和 QPRBS13-CEI 的定义。

1. PRBS13 的表达式为 x13 + x12 + x2 + x + 1。

2. 在 AR72117 中对 QPRBS13、PRBS13Q 和 QPRBS13-CEI 有以下定义:

PRBS13Q 按照 IEEE 802.3bs-2017 120.5.11.2.1 被定义为重复两次以格雷编码的 PRBS13

QPRBS13-CEI 与 PRBS13Q 相同

QPRBS13 是 PRBS13 和反转的 PRBS13 组合

目前对于 Vivado 2023.1 版本的 IBERT GUI 界面暂时不支持 QPRBS13 的设置,需要通过 tcl 或者端口设置的方法来实现。

Tips:不建议同时用 IBERT GUI 和 Properties 窗口设置 GTM 的 Attributes,可能会导致寄存器值出错。

3. PRBS13、QPRBS13、PRBS13Q 解析。

首先,根据 PRBS13 的表达式来构建一个数列表格, PRBS13 每 8191 个 bit 循环一次,此处选取前 64 位数据展示并且与仿真波形作对比:

3b71d85a-3cee-11ee-ac96-dac502259ad0.png

PRBS13 仿真波形 (TXQPRBSEN = 0, TX_GRAY_BYP_EN = 1)

3bc580e0-3cee-11ee-ac96-dac502259ad0.png

注意:按照 AM017 的描述,当 TX_GRAY_BYP_EN 为 1 时,关闭 GARY 编码器。当 TX_GRAY_BYP_EN 为 0 时,使能 GARY 编码器。

3be63f9c-3cee-11ee-ac96-dac502259ad0.png

PRBS13Q 仿真波形 (TXQPRBSEN = 0, TX_GRAY_BYP_EN = 0)

3c0b56e2-3cee-11ee-ac96-dac502259ad0.png

QPRBS13 仿真波形 (TXQPRBSEN = 1, TX_GRAY_BYP_EN = 1)

3c4faa86-3cee-11ee-ac96-dac502259ad0.png

当前输入为反转后的 PRBS13(连续12位“1”),因此按照 PRBS13 表达式产生的 64 位数据如下表所示:

3c6a728a-3cee-11ee-ac96-dac502259ad0.png

在了解 QPRBS13 的编码规则后,接下去搭建工程做实际的测试。

二、新建 Versal GTM 工程

对于 Versal GTM,IBERT 工具已经被集成到 GTM 内部。因此需要使用 Versal Transceivers Wizard 新建一个测试工程,本文的测试工程基于 VPK120 评估板设计。

在 Wizard 中主要更改两个地方的设置:

Transceiver type:设置为 GTM

Preset:选择 GTM(PAM4) Ethernet 51G

设置完成后打开 IP Example Design:

3ca40464-3cee-11ee-ac96-dac502259ad0.png

三、调整硬件设置

此处需要对 Example design 做四个调整:

1. 把 gpio_enable、gt_reset 和 rate_sel 三个信号连接到 VIO 的输出。

2. 添加 Clocking wizard 模块,设置 clk_out1 的频率为 200MHz,并且提供给 gt_bridge 和 gt_quad 的 apb3_clk 作为时钟

3. 设置 TX 和 RX 的 Reference Clock 频率为 156.25MHz。

4. 把 GT Quad 约束到 Quad 202,Reference clock 约束到管脚 V45。

修改完成后点击 Generate Device Image 生成 PDI 文件,连接 JTAG 并且把 PDI 下载到 VPK120。

四、构建寄存器读写函数

控制 GTM 相关寄存器需要按位操作,因此首先需要设计一个能够按位读写的函数,函数内部执行步骤如下:

1. 获取对象名称。

3cd9a07e-3cee-11ee-ac96-dac502259ad0.png

本文中的 IBERT 名称为 IBERT_0,在后面的操作中都以 IBERT_0 作为操作的对象名称。因为工程中用了 GT Quad202,所以 tcl 命令对于 Quad202 的 ch0 定义为:IBERT_0.Quad_202.CH_0 ,其他通道可参照这个命名类推。

2. 刷新全部寄存器。

这一步操作很重要,如果没有刷新全部寄存器的步骤,将无法读取到最新的寄存器数据,可能会读出来上一次的数据或者全 0 的数据。

3d04c3a8-3cee-11ee-ac96-dac502259ad0.png

3. 数据格式转换。

刷新寄存器后会发现在 GT Properties 窗口显示的数据从 0xXXXXXXXX 变为了 0xXXXX_XXXX,然而在 tcl 的按位与和按位或的运算中无法识别下划线,下划线会导致数据运算出错,这一步需要先从相应的寄存器把数据读取出来,然后将下划线移除。

这里的 channel 和 reg 是函数的参数,channel 代表 GT 的通道编号,reg 是需要操作的寄存器。

3d196bbe-3cee-11ee-ac96-dac502259ad0.png

4. 判断和位运算。

这里的 op 和 value 是函数的参数,op 代表运算操作是按位与还是按位或,value 是具体运算的值。

3d29072c-3cee-11ee-ac96-dac502259ad0.png

5. 将系数设回到相应的寄存器 。

3d461952-3cee-11ee-ac96-dac502259ad0.png

6. 操作函数定义。

操作函数有4个传递参数 proc change_gtm_attributes { channel reg value op },具体作用在上文已经说明。例如对于下面这个函数,其对应的操作是向 Quad_202.CH_0 的 CH0_FABRIC_INTF_CFG0 寄存器按位与的方式写入 0xFFFEFFDF,即将 CH0_FABRIC_INTF_CFG0 寄存器的 Bit5 和 Bit16 置为“0”,其余位保持不变。

3d632b28-3cee-11ee-ac96-dac502259ad0.png

五、配置 GTM 的相关寄存器产生 QPRBS13 序列

1. 打开 Attributes 控制使能,关闭端口控制。

3d7edf94-3cee-11ee-ac96-dac502259ad0.png

2. 设置 TX PRBS 的 Pattern。

3da21dce-3cee-11ee-ac96-dac502259ad0.png

3. 设置 RX PRBS 的 Pattern。

3db7974e-3cee-11ee-ac96-dac502259ad0.png

4. 打开 TXQPRBS 使能。

3dcc2934-3cee-11ee-ac96-dac502259ad0.png

5. 打开 RXQPRBS 使能。

3dd83364-3cee-11ee-ac96-dac502259ad0.png

6. 关闭 TX Gray Encoder 使能。

3df414f8-3cee-11ee-ac96-dac502259ad0.png

7. 关闭 TX Gray Decoder 使能。

3e0b2102-3cee-11ee-ac96-dac502259ad0.png

8. 设置 LOOPBACK 为 Near end PCS。

3e1d03b8-3cee-11ee-ac96-dac502259ad0.png

六、实际运行结果

1. 将 PDI 文件下载到器件中,并且运行 tcl 命令,先不使能 QPRBS,设置为常规 PRBS13 输出。

3e4aea26-3cee-11ee-ac96-dac502259ad0.png

可以看到 NEAR-END PCS 回环已经建立,并且 RXPRBSLOCKED 也已经拉高。

3e6afc4e-3cee-11ee-ac96-dac502259ad0.png

2. 运行 TCL 命令,打开 TXQPRBS 使能,对于 RX 继续输出常规 PRBS,此时 Link status 显示为 No Link 和实际速率之间翻转,且 RXPRBSLOCKED 输出状态也呈现为周期性翻转。

3e831a9a-3cee-11ee-ac96-dac502259ad0.png

3e9da19e-3cee-11ee-ac96-dac502259ad0.png

3. 再次运行 TCL 命令,打开 RXQPRBS 使能,此时的 Link status 再次恢复显示为实际速率,RXPRBSLOCKED 输出也再次呈现为高电平。

3eac5fcc-3cee-11ee-ac96-dac502259ad0.png

3ec91824-3cee-11ee-ac96-dac502259ad0.png

4. Versal GTM 除了不支持 QPRBS-7,其他的 Pattern 都是支持的。

3edaa97c-3cee-11ee-ac96-dac502259ad0.png

5. 这个方法也可以用于产生其他 QPRBS Pattern。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • amd
    amd
    +关注

    关注

    25

    文章

    5202

    浏览量

    132638
  • 仿真
    +关注

    关注

    50

    文章

    3872

    浏览量

    132166
  • 命令
    +关注

    关注

    5

    文章

    638

    浏览量

    21849
  • GUI
    GUI
    +关注

    关注

    3

    文章

    611

    浏览量

    38808
  • Versal
    +关注

    关注

    1

    文章

    151

    浏览量

    7535

原文标题:开发者分享|Versal GTM 如何用 Tcl 命令在 IBERT 生成 QPRBS13 序列

文章出处:【微信号:gh_2d1c7e2d540e,微信公众号:XILINX开发者社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    如何使用GTM_TIM (TIM_EXT_CAPTURE) 作为触发源SOMP模式下触发GTM_ATOM频道?

    500us),计时器达到所需值(500us)后,会生成一个触发器,用于重置连接的 GTM_ATOM 通道的 CN0 值。 CAN 有人给我一些帮助吗?
    发表于 01-29 08:13

    怎么ibert中使用外部时钟

    我一直试图ibert中使用外部时钟。但我不能。任何人都可以帮助我?我使用核心生成器从ISE Designs Tools生成核心,并且放置了作为我的外部时钟源的引脚号。但是当我
    发表于 03-12 13:48

    如何使用IBERT生成眼图

    GTX端口是TX,另一个是RX)。以下是顶层模块中IBERTblock的实例化。 ibert_7series_gtx_0 ibert_0 //顶层生成
    发表于 05-22 10:18

    使用IBERT时,为什么MGT链路状态chipcope分析仪中没有链接

    问题是关于IBERT,首先让我描述一下我遇到的现象:我使用IBERT核心生成生成比特流文件并将其下载到我的板上以测试我的设计的BER,然后我打开I
    发表于 06-03 11:15

    IBERT设计如何配置?

    你好, 我遇到了生成IBERT设计的问题。第一个配置工作正常,但如果我示例项目中修改IBERT核心,那些更改将不会生效。对于Virtex设计,我修改了
    发表于 08-05 13:36

    如何使用ISE 14.7并且使用斯巴达6生成IBERT核心?

    我正在使用IBERT进行扫描测试,发现IBERT控制台上用于扫描测试日志,扫描测试图和扫描测试信息的单选按钮丢失了。我正在使用ISE 14.7并且使用斯巴达6生成IBERT核心。有没
    发表于 08-10 10:27

    IBERT GUI中,如果我将DWELL BER设置为1e-5是什么意思?

    嗨,我已经ISE 14.7中的芯片内窥镜IBERT核心上生成了以太网10G BASE-R核心,我能够成功运行眼睛扫描测试。IBERT G
    发表于 08-17 09:13

    如何在SystemVerilog中为状态机的命令序列生成建模

     我们将展示如何在SystemVerilog中为状态机的命令序列生成建模,并且我们将看到它是如何实现更高效的建模,以及实现更好的测试生成。​
    发表于 01-01 06:05

    Vivado图形化界面IDE中运行和调试Tcl命令

    管脚到内部的线长也需要考虑。fpga工程师可以vivado的Tcl Console中执行tcl命令生成对应器件的trace length
    发表于 06-17 14:52

    华为gtm900无线模块(AT命令手册)

    本手册包含7 章,内容如下。􀁺 AT 命令概述:从整体上对GTM900 提供的AT 命令进行了介绍,包括AT 命令类型、AT 命令
    发表于 08-14 22:21 192次下载

    详解如何用AD生成Gerber文件

    详解如何用AD生成Gerber文件
    发表于 11-23 11:07 0次下载

    在WCDMA中如何用FPGA生成下行扰码

    由两个M序列相加而成,且容易产生、自相关性优良的优点。本文介绍下行扰码的生成过程和如何用FPGA的实现。采用Verlog硬件描述语言进行功能描述,在写信号的作用下,予付扰码初值,在时钟信号的作用下,产生下行扰码的I,Q
    的头像 发表于 07-02 08:06 1540次阅读
    在WCDMA中如<b class='flag-5'>何用</b>FPGA<b class='flag-5'>生成</b>下行扰码

    【C语言应用】如何用C代码生成一维码?

    【C语言应用】如何用C代码生成一维码?
    的头像 发表于 08-25 12:42 2068次阅读
    【C语言应用】如<b class='flag-5'>何用</b>C代码<b class='flag-5'>生成</b>一维码?

    何用proc sql生成宏变量?

    上节我们讲了PROC SQL的基本结构,以及一些sql命令的使用,这节我们主要讲一下case...when...、order by 、group by 、update、delete语句以及如何用proc sql生成宏变量。
    的头像 发表于 05-19 16:13 1536次阅读
    如<b class='flag-5'>何用</b>proc sql<b class='flag-5'>生成</b>宏变量?

    Versal GTY/GTYP:使用PRBS生成器和检查器

    本文涵盖了在 Versal GTY 和 GTYP 中使用模式生成器和检查器时对以下操作的限制
    的头像 发表于 07-10 17:18 717次阅读