如何设置输入时钟相移以捕获ALTLVDS_RX宏功能中的数据?

ALTLVDS_RX宏功能提供有限的下拉列表选择,用于在非DPA模式下设置时钟和数据关系。参数是'rx_in'相对于'rx_inclock'的相位对齐什么 。通过设置此参数,ALTLVDS_RX宏功能可计算串行数据的正确捕获相位。

相移值基于rx_inclock周期,该周期可能因接口而异。以下是常见的rx_inclock使用场景:

  • 每个字的所有串行位一个rx_inclock周期(单数据速率时钟)
  • 每个字的所有串行位的两个rx_inclock周期(双倍数据速率时钟)
  • 每个字的所有串行位的相等rx_inclock周期数(全数据速率时钟)

宏功能中可用的相移选择将捕获时钟设置为串行数据中的不同位置。这是基于每个字的串行位数(反序列化因子)的rx_inclock周期数。在单个数据位周期内指定相移的能力取决于接收的每个串行字的rx_inclock周期数。

例如,考虑具有以下参数的接口:

  • 数据速率= 800 Mbps
  • 反序列化因子= 8
  • rx_inclock = 100 MHz

在这种情况下,接收的所有8个串行位都有一个rx_inclock周期。因此,您选择的每个设置在ALTLVDS_RX宏功能(0度,45度,90度等)中以45度为增量,将捕获相位设置为串行字中的不同位。此设置不会更改位周期内的相位捕获位置。这些选择中的每一个在界面的平行侧上产生不同的字对齐。

考虑具有以下参数的第二个示例:

  • 数据速率= 800 Mbps
  • 反序列化因子= 8
  • rx_inclock = 800 MHz

在这种情况下,每个串行位周期有一个rx_inclock周期。您选择的每个设置都将在一个位周期内更改捕获阶段。

在某些情况下,您可能希望使用ALTLVDS_RX宏功能下拉列表选择将“捕获”阶段设置为“rx_in”相对于“rx_inclock”参数的相位对齐的位置是不可能的

解决/修复方法

捕获相位的总可能数量取决于接口的反序列化因子。对于每个串行位周期,快速时钟可提供8个相位。 快速时钟以串行比特率运行。

可能的捕获阶段的总数等于8 *反序列化因子。

在上面的示例中,解串因子为8,因此总共有64个可用相位位置来设置串行字的所有8位的捕获时钟。您可以选择通过修改ALTLVDS_RX变体文件将捕获阶段设置在单个位位置,不同位位置或两者的组合中。

合法相位值的增量必须等于快速时钟周期除以8.每8个相移增量等于一个位周期。使用上面示例1中的参数,如果您希望将rx_inclock的上升沿指定为8位字的第三个串行位的中心对齐,则需要总共20个相移增量(每个相位增量为8个相位)前两个位周期,加上第三个位周期中中心对齐上升沿的4个相位增量。

此示例中的快速时钟工作在800 MHz,与数据速率相同。快速时钟周期为1.25 ns,每相移增量为156.25 ps。本例中描述输入时钟和数据关系所需的总相移为20 * 156.25 ps = 3.125 ns。

计算出所需的相移值后,在ALTLVDS_RX变量文件中输入。打开文件并找到以下参数:

对于Verilog: ALTLVDS_RX_component.inclock_phase_shift

对于VHDL: inclock_phase_shift

输入您计算的值,单位为皮秒。

注:串行数据的最高有效位(MSB)可能不是ALTLVDS_RX宏功能的rx_out端口上的反序列化并行数据的MSB。您需要使用bitlip电路在并行侧设置字边界。

有关更多信息,请参阅LVDS SERDES发送器/接收器(ALTLVDS_TX和ALTLVDS_RX)宏功能用户指南 (PDF)中的“对齐字边界”部分

编辑 重设标签(回车键确认) 标为违禁 关闭 合并 删除

提问于 2018-08-06 16:50:33 +0800

这个帖子被标记为一个社区wiki

这个帖子是一个wiki(维基). 任何一个积分 >500的人都可以完善它