VelTEX II职业ROKETIO -我如何确保我的设计不会溢出或下溢的RX(接收器)弹性缓冲区,因为RX/TX时钟差异(时钟校正)?-Xilinx-AMD社区-FPGA CPLD-ChipDebug

VelTEX II职业ROKETIO -我如何确保我的设计不会溢出或下溢的RX(接收器)弹性缓冲区,因为RX/TX时钟差异(时钟校正)?

描述

如何确保插入足够的空闲字符来解释RX和TX侧之间的时钟差异?

解决方案

时钟校正序列的数目取决于TX和RX侧上的时钟的频率容差。用于在RX弹性缓冲器中时钟数据的时钟是恢复时钟(RXRCTCLK)。这是在RocketIO块内部执行的。RXURCLK用于从RX弹性缓冲器中输出时钟数据。在定义振荡器的频率公差(它可以从指定的频率输出到多远)为DelTayf时,以下是正确的:

CcValue=每一个额外的或丢失的Rx字符=1(/ DeltAffTx+DeltAffx Rx)

这是在RX弹性缓冲器中出现一个或多个字符之前发生的TX时钟周期数。要使缓冲区保持满,必须删除一个额外的字符(缓冲区已满),或者必须添加丢失的字符(缓冲区为空)。这意味着必须在TXUSCLCK的每个CCL周期周期中发送一个时钟校正字符(8或10位)。

例如

时钟为100 MHz,具有5%的频率容差,RX和TX时钟具有相同的容差,并且使用8B/10B编码。

CCI期=1(/ 05±05)=10。

对于这种设置,必须在每10字节中插入一个可移动/可重复字节(时钟校正字节)。由于时钟校正序列可以高达四字节,您可以发送:

-每10字节一个1字节的序列

-每20字节一个2字节的序列

-每30字节一个3字节的序列

-每40字节一个4字节的序列

如果没有8B/10B编码,每个字节将是一个10位字符。

然后,可以执行仿真,以确保设计不会溢出RX缓冲区。

要做到这一点,建立一个RokTiTo智能(SWIFT)模型在串行回送模式与TXUSCRCK和RXURCLK的最大误差幅度为两个时钟在实际设计中。例如,如果用于TX和RX的振荡器具有5%的容差,则将两个时钟设置为10%。这将导致在仿真中发生时钟校正。

监视RXBUFSTATE PIN以确保传入的串行数据流不会导致RX缓冲区溢出或下溢。如果观察到溢出或下溢情况,则TX设计的一侧插入更多的时钟校正字符(可以通过收发器逻辑在缓冲区中删除/重复)。

常见的精度和时钟校正频率要求:

校正前、修正前的最大周期

OSCC FrqQuysOSCORACKYYYXY线Survivy*(删除/重复1序列)

15625.1,100ppm,γ,3.125

15625A,γ,50ppm,γ,3.125

15625A,γ,20ppm,γ,3.125

125.00μl,100ppm,α2.5gbPS1,499

125.00μl,50ppm,α2.5gbPS1,99 99

125.00μm×20ppm×2.2500

62.500μl,100ppm,β1.250GbPSa,499

62.500μl,50ppm,α1.250GbPS1,99 99

62.500μm×20ppm×1.250GbPSa×2499

请登录后发表评论

    没有回复内容