描述
如何确保插入足够的空闲字符来解释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
没有回复内容