描述
该答复记录涵盖了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)GTRXRESET:
当用户想要执行GTRXRESET时,必须遵循以下复位序列。
脚步:
- 用户通过断言user_GTRXRESET来触发重置请求。
- 设置并按住gt_GTRXRESET为高。这将导致gt_RXPMARESETDONE变低。
- 发出DRP写入GTPE2_CHANNEL原语,DRP地址9’h011,并将位[11]设置为1’b0。
- 为了确保仅修改DRP地址9h’011的位[11],最好执行读 – 修改 – 写功能。
- 在DRP写入完成且user_GTRXRESET检测为低时,设置并保持gt_GTRXRESET为低。如果在完成DRP写操作时user_GTRXRESET仍然有效,则继续断言gt_GTRXRESET,直到user_GTRXRESET为低。
- 等待gt_RXPMARESETDONE的下降沿。
- 发出DRP写入GTPE2_CHANNEL原语,DRP地址9’h011,恢复位[11]的原始设置。必须在gt_RXPMARESETDONE从低切换为高之前完成此DRP写入。 gt_RXPMARESETDONE将保持低至少0.66美元。
笔记:
- 确保gt_GTRXRESET是寄存器的输出。
- 确保RXPMARESET_TIME设置为5’h3。这应该是默认设置。
- 如果SIM_GTRESET_SPEEDUP设置为FALSE,则上述序列将仅正确仿真。如果SIM_GTRESET_SPEEDUP设置为TRUE,则必须绕过上述序列。
2)RXPMARESET:
当用户想要执行RXPMARESET时,必须遵循以下重置序列。
脚步:
- 用户通过断言user_RXPMARESET来触发RXPMARESET请求。
- 发出DRP写入GTPE2_CHANNEL原语DRPADDR 9h011,并将位[11]设置为1b0。
- 为了确保仅修改DRPADDR 9h011的位[11],最好执行读 – 修改 – 写功能。
- 在DRP写入完成后,设置并保持gt_RXPMARESET为高。
- 等待RXPMARESETDONE变低。
- 发出DRP写入GTPE2_CHANNEL原语DRPADDR 9h011,恢复位[11]的原始设置。
- 在DRP写入完成且user_RXPMARESET检测为低时,设置并保持gt_RXPMARESET为低。如果在完成DRP写入后user_RXPMARESET仍然有效,则继续断言gt_RXPMARESET,直到user_RXPMARESET为低。
注意:确保gt_RXPMARESET是寄存器的输出。
3)RXRATE:
当用户想要通过RXRATE触发RX速率变化时,必须遵循以下顺序。
脚步:
- 用户通过更改user_RXRATE来触发RX速率更改请求。
- 发出DRP写入GTPE2_CHANNEL原语DRPADDR 9h011,将位[11]设置为1b0。
- 为了确保仅修改DRPADDR 9h011的位[11],最好执行读 – 修改 – 写功能。
- 在DRP写入完成后,将gt_RXRATE设置为user_RXRATE的值。
- 等待RXPMARESETDONE变低
- 发出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的正确分频率。
要在仿真中解决/绕过此行为并生成正确的时钟速率,请执行以下操作:
- 将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地址。 - 确保通过rtl hierarchery将EXAMPLE_SIM_GTRESET_SPEEDUP参数拉到gt_channel级别。 GT向导示例设计中需要此步骤。
- 确保EXAMPLE_SIMULATION参数设置为1。
在这些变化之后,在复位的约20us内仿真中将看到正确的时钟速率。
修订记录
2017年2月14日 | 添加了仿真的附加要求 |
2013年4月12日 | 使用重置序列更新了用户指南版本 |
2013年1月31日 | 初始发行 |
没有回复内容