GTY时钟架构简介
GTY收发器的时钟系统,说白了一句话:一切速度都卡在时钟上。我做过好几款100G以上的项目,最头疼的往往不是逻辑,而是时钟怎么分、怎么选、怎么管。所以这一章,咱们把GTY内部的时钟家底翻一翻。
先从整体架构入手。GTY收发器内部有三层时钟体系:
- 全局时钟层:处理参考时钟输入、全局缓冲和扇出。
- PLL 层:将参考时钟倍频到线速率所需的频率。
- 通道分配层:把 PLL 输出分发给各收发器通道。
记得我刚接触 GTY 时,文档里一张大图看得眼花。后来我总结了一句话:先看参考时钟从哪进,再看 PLL 怎么锁,最后看时钟怎么走到通道。你想想看,只要把这三步理清,架构就通了。
2.1 全局时钟与参考时钟
GTY 的参考时钟可以来自差分晶振、板级时钟芯片,甚至是另一个收发器的输出。我个人习惯优先用 差分 LVDS 或 LVPECL,因为抗干扰好。下面是常见的参考时钟输入路径:
- 专用参考时钟引脚(如 REFCLK0/1)—— 直连 PLL,路径延迟最小。
- 全局时钟引脚(如 MRCC/SRCC)—— 通过 BUFG 后再进 PLL,用于多路复用。
- 内部 PLL 级联 —— 一个 PLL 输出作为另一个的参考,用于特殊频率。
我踩过的坑:曾经在一个 25G 项目中,参考时钟走全局缓冲后抖动了 0.5 ps,导致误码率不达标。后来改为直连专用引脚,问题立刻解决。所以,能用专用引脚就别走全局网络。
2.2 收发器内部的 PLL 家族
GTY 收发器里有两种 PLL:CPLL(通道 PLL)和 QPLL(四通道 PLL)。两者分工明确:
| 特性 | CPLL | QPLL |
|---|---|---|
| 覆盖通道数 | 单个通道(或相邻 2 个) | 最多 4 个通道 |
| 输出频率范围 | 1.25 – 6.6 Gbps 线速率 | 6.6 – 28.2 Gbps 线速率 |
| 鉴相器类型 | 模拟鉴相 | 数字鉴相 + 锁定检测 |
| 占用资源 | 小,每个通道独立 | 较大,需共享 |
| 适用场景 | 低速多协议(如 SATA、1G/10G) | 高速单协议(如 100G 以太网) |
你可能会问:为什么还要留 CPLL? 嗯,这里有个实际原因。QPLL 锁定时间较长(毫秒级),而 CPLL 只需几十微秒。我遇到过做动态速率切换的应用,CPLL 的快速锁定就派上了用场。当然,如果线速率超过 10G,老老实实用 QPLL。
2.3 时钟分配与复用
PLL 输出之后,时钟需要分配到各收发器通道。GTY 内部有一组 时钟分配网络,可以灵活选通:
- 同一 Quad 内的通道:可以直接用 QPLL 生成的
gty_common_rx/tx_outclk。 - 跨 Quad:要用全局时钟资源(BUFG)复制后分发,注意 skew 约束。
- 发送/接收独立:RX 和 TX 可以用不同 PLL,支持异步速率。
我曾经犯过的错:把所有 16 个通道都配成同一个 QPLL。结果其中 2 条通道的 PCB 走线长了 12mm,导致时序裕量不足。后来我改成分组使用两个 QPLL,才通过验证。
下面是 GTY 时钟架构的核心框图,帮你把刚刚讲的三层串起来:
图中你可以看到,参考时钟可以直连 CPLL,也可以通过 BUFG 后再进 QPLL 或 CPLL。PLL 输出进入时钟分配网络后,再扇出到同一个 Quad 内的四个通道。跨 Quad 的时钟分配需要额外全局资源,图中没画全,但我建议你当作一个约束条件来记住。
2.4 时钟设计的两条铁律
根据我多年的 Debug 经验,写几条避坑指南:
- 优先使用专用参考时钟路径——抖动小,锁定快。
- 线速率超过 6.6 Gbps 只用 QPLL——CPLL 在这里抖动会失控。
- 同一个 Quad 内的通道尽量共享 PLL——节省资源,减少跨域。
- 跨 Quad 分发时钟时,加入 BUFG 并约束 max delay——否则工具可能会把路径画到 FPGA 的另一角。
总结一下:GTY 时钟架构就是“参考时钟 → PLL → 分配网络 → 通道”。PLL 类型选对,路径走短,你的设计就成功了一大半。