[业界/制造] 详解Xilinx FPGA高速串行收发器GTX/GTP(3)--GTX的时钟架构

[复制链接]
查看21 | 回复0 | 前天 23:18 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区

您需要 登录 才可以下载或查看,没有账号?立即注册

×

1、参考时钟
     GTX的时钟架构如下:

231756dbd76f40.png
  对于QPLL来说,它的时钟来源有3个:

  • 外部差分差分时钟,通过IBUFDS_GTE2原语后变成单端时钟,然后给到QPLL。这种时钟有两个,分别叫做GTREFCLK0和GTREFCLK1。


  • 来自北边(GT Quad的排布是南北向排布的)的时钟,这个时钟是北边的GT Quad的来自外部的时钟。


  • 来自南边(GT Quad的排布是南北向排布的)的时钟,这个时钟是南边的GT Quad的来自外部的时钟。


     GTXE2_COMMON原语实际上就是对QPLL的再封装,所以它的时钟方案和QPLL是一样的,如下所示:

23175765cfd5b4.png
    其中的QPLLREFCLKSEL是对输入时钟进行选取的信号,因为我们的输入时钟一般是固定的,所以这个值一般也不会改变。注意GTGREFCLK端口是指来自FPGA内部逻辑的时钟信号,这个端口只能用作仿真,不能在实际中使用。

    CPLL和GTXE2_CHANNEL的时钟结构与QPLL基本一致,只不过CPLL位于高速收发器通道内部,其示意图如下:

2317579c9b9837.png
在QUAD中,GTXE2_CHANNEL/GTHE2_CHANNEL原语以及GTXE2_COMMON/GTHE2_COMMON原语都必须例化,不管使用还是不使用QPLL,GT_COMMON都是要例化的(这是工具自动操作的)。

2、时钟方案
    上文说了,每个Quad都有两个专用的外部差分输入时钟,但这两个时钟不是必须使用的,因为参考时钟还可以是来自北边或者南边的外部输入时钟。根据线速率的要求,每个通道的TX端和RX端的参考时钟都可以是不同的,这无疑提供了最大的灵活性。

2317577069bd55.png
2.1、单个外部参考时钟驱动单个QUAD中的多个transceiver
     差分输入时钟的一般使用方式如下所示,即采用一个时钟驱动同一Quad内部的4个高速收发器通道以及GTXE2_COMMON,这是最常见的方式了。

2317572d5b0008.png
2.2、单个外部参考时钟驱动多个QUAD中的多个transceiver
     单个外部参考时钟也可以驱动多个QUAD中的多个Transceiver,例如:

231758d5c414ae.png
这样使用有一定的限制:

  • 源QUAD上方的QUAD数量不能超过1个;


  • 源QUAD下方的QUAD数量不能超过1个;


  • 1个外部参考时钟所驱动的QUAD总数不超过3个,或驱动的Transceiver不超过12个。所谓的源QUAD,指的是直接连接到外部参考时钟的QUAD。


2.3、同一个Quad中,多个GTX Transceiver使用多个参考时钟
   每个Quad有两个专用的差分时钟输入引脚(MGTREFCLK0[P/N]或 MGTREFCLK1[P/N]) ,可以连接到外部时钟源。在多个外部参考时钟使用模型中, 每个专用的参考时钟引脚对必须例化它们对应IBUFDS_GTE2,以使用这些专用的参考时钟资源。在同一个Quad中,多个GTX Transceiver使用多个参考时钟。如下图所示:

23175863b02ebc.png
2.4、不同Quad中,多个GTX Transceiver 使用多个参考时钟
    上面的Quad位于下面bank的北面,那么下面的bank可以将北面bank的差分时钟通过GTSOUTHREFCLK0、GTSOUTHREFCLK1端口作为自己的QPLL的时钟输入。

     同样的道理下面的bank位于上面bank的南面,上面bank可以通过GTNORTHREFCLK0、GTNORTHREFCLK1把下面bank的差分时钟作为自己的QPLL的输入时钟。

23175804452311.png
注意这里的NORTH和SOUTH不是表示时钟来自NORTH还是SOUTH,而是表示自己Quad所在的位置。举个例子,Quad0、Quad1和Quad2从北到南依次排布,Quad1位于正中,那么从Quad0也就是北边来的时钟就要接到GTSOUTHREFCLK0和GTSOUTHREFCLK1这两个端口,因为Quad1相对于Quad0它处于南边;同样的从Quad2也就是南边来的时钟就要接到GTNORTHREFCLK0和GTNORTHREFCLK1这两个端口,因为Quad1相对于Quad2它处于北边。

3、QPLL和CPLL的工作原理
    本质上QPLL和CPLL都是PLL即锁相环,尽管二者有细微差异,但它们的结构是一致的。

    每个GTX收发器通道包含一个CPLL,内部通道时钟架构如下图所示。TX和RX时钟分频器可以分别选择来自QPLL或CPLL的时钟,从而允许TX和RX数据路径使用不同的参考时钟输入以异步频率工作。

    TX和RX时钟分频器模块控制PMA和PCS模块使用的串行和并行时钟的产生。如果TX和RX数据路径以相同VCO频率的整数倍线路速率工作,则它们可以共享CPLL。

23175901a0996a.png
    下图是CPLL的内部原理框图,M、N这些参数都可以在原语中设置,进而改变倍频/分频系数,但很多时候都是直接在GT IP中对其他数据、协议参数配置后,自动生成CPLL的时钟,不需要人为配置系数,可以暂时不关心。GTX收发器中的CPLL的额定工作范围在1.6 GHz至 3.3 GHz

    对于分频和倍频系数的计算,主要就是抓住锁相环的负反馈结构,即输出信号频率及phase Frequency Detector的关系,当其两个输入信号的频率相等时,整个回路锁定。

231759b1d21d01.png

①处的频率为f PLLClkin,③处的频率为f PLLClkout,②处的频率则为f PLLClkout/(N1*N2)。当输入和输出相等时,锁相环通过负反馈处于一个稳定的状态,即有等式:

2317595b0b8e57.png
    从上式可知,CPLL的输出频率由输入频率和三个因子共同决定。线速率(line rate (Gb/s))则由以下等式决定,其中的D是个分频因子,2则表示在上升沿和下降沿均有采样到DDR技术。

231800a021fe1b.png
    以Aurora 8B/10B协议为例,它的CPLL设置与输入频率及线速率之间的关系如下:

23180072f3fdd8.png
    假设你要求的线速率是3.125Gb/s,那么一个比较参考的输入时钟频率则是156.25MHz,此时N1可以设置为5,N2可以设置为4,M可以设置为1,D可以设置为2(这些都是IP会自动设置的,不需要自己设置),那么CPLL的频率则为:156.25×5×4/1 = 3.125GHz ,线速率则是 3.125G × 2 / 2 = 3.125Gb/s,和预期设置一致。

    QPLL的内部结构和CPLL基本一致,有一些细微的差别。GTX收发器中的QPLL的额定工作范围在 5.93 GHz至 12.5 GHz。

231800ad36e40c.png
  依然是用负反馈那一套来分析,有如下等式:

23180002241de0.png
线速率则依然这样计算:

231801c20b4bc7.png

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

hdy

222

主题

317

回帖

639

积分

二级逆天

积分
639