一.概述
1.Xilinx中把恢复时钟称为rxrecclk (recover clk)。
2.对于rxrecclk,定义如下图。
rxrecclk就是Transceiver中的RXOUTCLK。
3.CDR概念。
CDR是产生恢复时钟重要模块,时钟数据恢复主要完成两个工作,一个是时钟恢复,一个是数据重定时,也就是数据的恢复。时钟恢复主要是从接收到的 NRZ(非归零码)码中将嵌入在数据中的时钟信息提取出来。通常 CDR 是一个有振荡器的反馈环路,通过环路调节振荡时钟的相位来跟踪输入数据中的嵌入时钟。
二.由表入里
既然rxrecclk就是RXOUTCLK,那么下面就介绍RXOUTCLK。
可以看到图中的RXOUTCLK是由一个数据选择器选择,有四个输入。
(1)RXPLLREFCLK_DIV1:就是参考差分时钟产生的单端时钟,QPLLREFCLK其实就是参考差分时钟经过IBUFDS_GTE2产生的,前面关于GT高速收发器的博客有说到过。
(2)RXPLLREFCLK_DIV2:RXPLLREFCLK_DIV1的2分频。
总结:在不需要输出恢复时钟时,RXPLLREFCLK_DIV1或RXPLLREFCLK_DIV2可以作为系统时钟使用。通常情况下,TXOUTCLK通常被用作系统时钟。
(3)RXOUTCLKPCS:一个输出的冗余时钟。不建议使用RXOUTCLKPCS,因为它产生了来自PCS块的额外延迟。
(4)RXOUTCLKPMA:这个才是真正意义上的线路恢复时钟。从图中可以看出,该恢复时钟是由CDR从数据信息中进行提取的。只不过再进行了3次分频。第一次分频是由一个D分频器完成,对于D分频器的配置包含静态和动态,具体细节可以参考UG476。第二次分频是由RX_DATA_WIDTH决定,博主项目中是32B,所以对应/4。第三次分频是由RX_INT_DATAWIDTH决定,博主项目中设置的1(4-byte internal datapath),所以对应/4。
顺便附带一张TXOUTCLK的图(可以看到没有CDR):
NOTE:
(1)线路恢复时钟可以通过本地参考时钟进行帮助产生。
(2)RXOUTCLK除了驱动线路恢复时钟,还可以驱动RXUSRCLK和RXUSRCLK2。
(3)如果通道的发射器和接收器被配置成由同一个振荡器的参考时钟驱动,TXOUTCLK可以用来驱动RXUSRCLK和RXUSRCLK2,其方式与驱动TXUSRCLK和TXUSRCLK2相同。