3.1 时钟:高速收发器的心脏
说句实在话,搞高速收发器,时钟就是命脉。信号能不能跑起来,眼图好不好看,抖动大不大,八成问题都在时钟上。我刚开始接触 GTY 时,就被这复杂的时钟架构搞得有点懵。什么 CPLL、QPLL,还有什么参考时钟分配,绕来绕去。
但摸爬滚打几年后,我发现事情没那么玄乎。这节咱们就把它拆开揉碎了讲。你明白了时钟怎么来、怎么分、怎么用,GTY 就掌握了三成。
3.1.1 时钟从哪来?参考时钟是关键
GTY 的收发器,本身不产生时钟。它需要外部喂一个“参考时钟”。
这个参考时钟通常来自板上的晶振或时钟芯片。它的频率不一定跟实际数据速率相同。比如我要跑 25.78125 Gbps,参考时钟可能只是个 156.25 MHz 的差分信号。
参考时钟通过专用引脚进入 GTY 的时钟模块。我个人习惯把参考时钟比作“原料”,PLL 就像“加工厂”,把原料精炼成高速信号需要的“成品”。原料不行,后面再好的工厂也白搭。
关键要点: 参考时钟的质量直接决定了输出时钟的抖动。我用过质量一般的晶振,结果眼图怎么调都不过。后来换上超低抖动的时钟芯片,问题立马解决。别在参考时钟上省钱。
3.1.2 CPLL 与 QPLL:两个“加工厂”
GTY 内部有两个 PLL:CPLL 和 QPLL。名字挺像,但分工完全不一样。
- CPLL (Channel PLL):每个 GTY quad 包含 2 个。专为单通道或低速率场景设计。锁定快,功耗低。我常用的线速率在 1-10 Gbps 之间,CPLL 是首选。
- QPLL (Quad PLL):每个 GTY quad 只有 1 个。专门应对高速率、多通道的场景。比如你想跑 25 Gbps 及以上,或者一个 quad 里多个通道共享同一个时钟,那就得上 QPLL。
怎么选?说白了就是看你的线速率和目标。
| 特性 | CPLL | QPLL |
|---|---|---|
| 每个 Quad 数量 | 2 个 | 1 个 |
| 支持最大线速率 | 约 16.375 Gbps | 最高 32.75 Gbps |
| 典型应用 | 低速单通道,功耗敏感 | 高速多通道,性能优先 |
| 锁定时间 | 较快 | 稍慢 |
我的经验: 设计初期,我会先查数据手册的线速率表。CPLL 够用就不用 QPLL。毕竟 QPLL 的锁定时间更长,启动流程也更复杂。省一个麻烦就少一个坑。
3.1.3 时钟分配:怎么把时钟喂给每个通道?
时钟分配,就是解决“时钟怎么从 PLL 走到每个收发通道”的问题。
GTY 的时钟分配有两种主要模式:独立模式和共享模式。
- 独立模式:每个通道或每个 PLL 各自用一套参考时钟、CPLL/QPLL。独立性最强,但占用引脚多、功耗大。一般用于多个不同速率的通道混搭的场景。
- 共享模式:多个通道共用一个 PLL 的时钟输出。省资源、省功耗,是工程中最常用的方式。我曾经在一个 4x25G 的项目里,用一个 QPLL 同步驱动了 4 个通道,校验全过。
时钟分配路径通常走的是 GTY 内部的 GTY_REFCLK 网络。这个网络支持多种时钟源选择,比如来自相邻 quad 的布线。
曾经踩过的坑: 共享时钟时,一定要保证走线等长。跨 quad 的时钟分配,如果绕线太长,相位噪声会恶化。我建议在 IBERT 中先测试一下每个通道的眼图和抖动,看看有没有时钟分配引入的不一致。
3.1.4 时钟架构全景图
下面这张图,帮你把 GTY 时钟架构的脉络串起来。从外部参考时钟进来,经过 CPLL/QPLL 的选择,再到多路分配,最后喂给每个收发通道。你记住这个流程,基本就懂了。
3.1.5 实战中的配置技巧
搞懂了架构,怎么配置呢?在 Vivado 里,配置 GTY 时钟主要涉及这几个属性:
REFCLK_SOURCE:选参考时钟源,比如从哪个引脚进来。PLL_TYPE:选 CPLL 还是 QPLL。PLL_REFCLK_DIV和PLL_FBDIV:设置分频和倍频系数,算出最终线速率。CLKOUT_PHASE:时钟输出相位,有些高速协议需要精细调整。
一个小诀窍: 配置时,别直接用 Vivado 自动生成的时钟向导。我习惯先手动算一下目标线速率对应的分频比,再对比向导给出的值。曾经有一次自动生成的配置抖动偏大,手动微调后才达标。