Artix-7 FPGA GTP收发器的设计咨询:量产芯片的RX复位序列要求-Xilinx-AMD社区-FPGA CPLD-ChipDebug

Artix-7 FPGA GTP收发器的设计咨询:量产芯片的RX复位序列要求

描述

该答复记录涵盖了Artix-7 GTP收发器生产芯片的RX复位序列要求。

下面将介绍在Artix-7 GTP生产收发器中发布GTRXRESET,RXPMARESET或RXRATE所需的顺序。这些复位序列也可用于通用ES芯片,但不是必需的。

这些序列在“ISE 14.4.1器件包”或ISE 14.5 / Vivado 2013.1工具版本中由7系列FPGA收发器向导v2.5生成的包装器中实现。复位序列添加到7系列FPGA GTP收发器用户指南 (UG482)的v1.4中。注意,仿真中需要特别小心。请参阅下面的“仿真的附加要求”部分。

在这些序列中,“user_ *”表示用户输入。该信号先前直接连接到GT原语。它现在将触发另一个重置序列,如下所述。
“gt_ *”表示与GT原语的连接。下图显示了此新序列的适用位置。
“DRP wr”表示对地址9’h011执行DRP写入的功能。未显示确切的DRP交易。

图片[1]-Artix-7 FPGA GTP收发器的设计咨询:量产芯片的RX复位序列要求-Xilinx-AMD社区-FPGA CPLD-ChipDebug

1)GTRXRESET:

当用户想要执行GTRXRESET时,必须遵循以下复位序列。

图片[2]-Artix-7 FPGA GTP收发器的设计咨询:量产芯片的RX复位序列要求-Xilinx-AMD社区-FPGA CPLD-ChipDebug

脚步:

  1. 用户通过断言user_GTRXRESET来触发重置请求。
  2. 设置并按住gt_GTRXRESET为高。这将导致gt_RXPMARESETDONE变低。
  3. 发出DRP写入GTPE2_CHANNEL原语,DRP地址9’h011,并将位[11]设置为1’b0。
  4. 为了确保仅修改DRP地址9h’011的位[11],最好执行读 – 修改 – 写功能。
  5. 在DRP写入完成且user_GTRXRESET检测为低时,设置并保持gt_GTRXRESET为低。如果在完成DRP写操作时user_GTRXRESET仍然有效,则继续断言gt_GTRXRESET,直到user_GTRXRESET为低。
  6. 等待gt_RXPMARESETDONE的下降沿。
  7. 发出DRP写入GTPE2_CHANNEL原语,DRP地址9’h011,恢复位[11]的原始设置。必须在gt_RXPMARESETDONE从低切换为高之前完成此DRP写入。 gt_RXPMARESETDONE将保持低至少0.66美元。

笔记:

  1. 确保gt_GTRXRESET是寄存器的输出。
  2. 确保RXPMARESET_TIME设置为5’h3。这应该是默认设置。
  3. 如果SIM_GTRESET_SPEEDUP设置为FALSE,则上述序列将仅正确仿真。如果SIM_GTRESET_SPEEDUP设置为TRUE,则必须绕过上述序列。

2)RXPMARESET:

当用户想要执行RXPMARESET时,必须遵循以下重置序列。

图片[3]-Artix-7 FPGA GTP收发器的设计咨询:量产芯片的RX复位序列要求-Xilinx-AMD社区-FPGA CPLD-ChipDebug

脚步:

  1. 用户通过断言user_RXPMARESET来触发RXPMARESET请求。
  2. 发出DRP写入GTPE2_CHANNEL原语DRPADDR 9h011,并将位[11]设置为1b0。
  3. 为了确保仅修改DRPADDR 9h011的位[11],最好执行读 – 修改 – 写功能。
  4. 在DRP写入完成后,设置并保持gt_RXPMARESET为高。
  5. 等待RXPMARESETDONE变低。
  6. 发出DRP写入GTPE2_CHANNEL原语DRPADDR 9h011,恢复位[11]的原始设置。
  7. 在DRP写入完成且user_RXPMARESET检测为低时,设置并保持gt_RXPMARESET为低。如果在完成DRP写入后user_RXPMARESET仍然有效,则继续断言gt_RXPMARESET,直到user_RXPMARESET为低。

注意:确保gt_RXPMARESET是寄存器的输出。

3)RXRATE:

当用户想要通过RXRATE触发RX速率变化时,必须遵循以下顺序。

图片[4]-Artix-7 FPGA GTP收发器的设计咨询:量产芯片的RX复位序列要求-Xilinx-AMD社区-FPGA CPLD-ChipDebug

脚步:

  1. 用户通过更改user_RXRATE来触发RX速率更改请求。
  2. 发出DRP写入GTPE2_CHANNEL原语DRPADDR 9h011,将位[11]设置为1b0。
  3. 为了确保仅修改DRPADDR 9h011的位[11],最好执行读 – 修改 – 写功能。
  4. 在DRP写入完成后,将gt_RXRATE设置为user_RXRATE的值。
  5. 等待RXPMARESETDONE变低
  6. 发出DRP写入GTPE2_CHANNEL原语DRPADDR 9h011,恢复位[11]的原始设置。必须在RXPMARESETDONE从低电平变为高电平之前完成此DRP写操作。 RXPMARESETDONE将保持低至少0.66美元。


注意:
如果SIM_GTRESET_SPEEDUP设置为FALSE,则上述序列将仅正确仿真。如果SIM_GTRESET_SPEEDUP设置为TRUE,则必须绕过上述序列。请参阅下面的“仿真附加要求”。

GTP属性:

除了上面所需的序列之外,还必须正确设置以下属性:

PMA_RSV2 = 32h’00002040。

仿真的附加要求

虽然这些序列是在7系列FPGA收发器向导生成的包装器中实现的,但是用户可能会在仿真中看到RXOUTCLK,RXUSRCLK和RXUSRCLK2以不正确的时钟速率运行。

例如,对于启用了8b10b解码器且内部数据宽度为20的配置,时钟速率是GT速率除以16而不是20的正确分频率。

要在仿真中解决/绕过此行为并生成正确的时钟速率,请执行以下操作:

  1. 将core_name_gtxreset_seq.v / .vhd中的DRP地址(drpaddr_o)设置为2C。默认情况下,此DRP地址设置为11,这是硬件的适当设置。
    2C的设置可以用作仿真的解决方法。
    对于Verilog,请参阅core_name_gtrxreset_seq.v中的第251和324行。
    对于VHDL,请参见core_name_gtxreset_seq.vhd中的第244行。
    注意:这需要仅针对仿真进行定义,而不是针对硬件操作进行定义。例如,在Verilog中定义`ifdef SIMULATION中的2C地址。
  2. 确保通过rtl hierarchery将EXAMPLE_SIM_GTRESET_SPEEDUP参数拉到gt_channel级别。 GT向导示例设计中需要此步骤。
  3. 确保EXAMPLE_SIMULATION参数设置为1。

在这些变化之后,在复位的约20us内仿真中将看到正确的时钟速率。

修订记录

2017年2月14日 添加了仿真的附加要求
2013年4月12日 使用重置序列更新了用户指南版本
2013年1月31日 初始发行
请登录后发表评论

    没有回复内容