时钟与同步:Device Clock、SYSREF、LMFC

这一章我们聊聊时钟。说真的,JESD204B 链路能不能跑起来,一半靠时钟。

我刚开始接触这个标准的时候,总觉得只要给个 Device Clock 和 SYSREF 就能干活。后来发现,时序关系没理清,链路根本不会锁定。折腾好几个晚上,才搞明白这三个家伙——Device Clock、SYSREF、LMFC 之间的关系。

3.1 三根时钟线,各管一摊

先记住一句话:Device Clock 是心跳,SYSREF 是起跑哨,LMFC 是赛道上画的格子线。

信号角色关键特性
Device Clock基带参考时钟频率 = 线速 ÷ (帧字节数 × 40)
所有芯片必须同源
SYSREF确定性延迟触发脉冲单次或周期脉冲
必须与 Device Clock 边沿对齐
LMFC本地多帧时钟内部生成
由 SYSREF 对齐相位

3.2 Device Clock:那个永远在跑的基准

说白了,Device Clock 给芯片内部所有串行/解串逻辑提供参考。它必须是低抖动、低相噪的差分时钟,通常用 CML 或 LVDS 走线。

我遇到过最头疼的事:实验室里 FPGA 和 ADC 用的晶振是两个独立源,频率对上了,但相位差随时间漂移。链路锁定后每几分钟就掉一次。后来换成同一颗时钟缓冲器,问题才解决。

⚠ 高频时钟走线禁区:
  • 不要跨越分割地平面
  • 等长走线误差控制在 ±50 ps 以内
  • 串接 AC 耦合电容,容值 0.1 µF 或厂商推荐值

3.3 SYSREF:那个只有一瞬间的脉冲

SYSREF 是一个很窄的脉冲,宽度通常等于一个 Device Clock 周期。它的使命只有一个:告诉所有芯片,把内部 LMFC 计数器清到同一个相位。

嗯,这里要注意:SYSREF 的建立保持时间非常重要。你一定要保证它在 Device Clock 的上升沿稳定采到。

// 典型的 SYSREF 时序要求(数据手册常见写法)
// tSU(SYSREF) ≥ 100 ps (setup time)
// tHD(SYSREF) ≥ 100 ps (hold time)
// 脉冲宽度 ≥ 1 个 Device Clock 周期
// 周期模式:每 N 个多帧发一次,N 由 JESD 配置决定
💡 我个人的习惯: 调试时先用单次 SYSREF 模式,手动触发一个脉冲。等链路能锁定,再切换到周期模式。这样出现问题时,你能把不确定性范围缩小很多。

3.4 LMFC:芯片内部的“逻辑时间”

LMFC 在多帧边界对齐后开始计数。每个发送器在 LMFC 边界发送数据,每个接收器在同一个 LMFC 边界期望接收。这样,发射和接收之间的延迟就被固定为常数——这就是确定性延迟的根源。

我曾经踩过一个坑:寄存器配置里把 LMFC 偏移 (LMFC_OFFSET) 设成了 0,结果接收端一直拿不到对齐的数据。后来才理解,LMFC 偏移是用来补偿物理线长差异的。按芯片手册计算一下再写进去,立刻就好了。

下面这张图帮你把三者的关系串起来:

JESD204B 时钟同步核心关系 Device Clock 持续提供采样基准 SYSREF 对齐脉冲,边沿对齐 LMFC 内部多帧计数器 提供计数时钟 复位相位 TX RX 串行链路 对齐发射 对齐接收 重要原则: • 所有时钟必须同源 • SYSREF 必须与 Device Clock 边沿对齐 • LMFC 偏移必须计算准确

3.5 调试中常见的时钟问题

我把这些年踩过的坑列个清单,你照着查,基本能覆盖 80% 的时钟问题:

  1. SYSREF 没被采样到 — 检查建立保持时间,用示波器对比 Device Clock 上升沿和 SYSREF 边沿。我建议用高带宽差分探头。
  2. LMFC 计数器未对齐 — 读芯片寄存器里的 LMFC 计数值,看看多片之间是否一致。差一个计数就是全错。
  3. Device Clock 抖动过大 — 用频谱仪看相噪,RMS 抖动超过芯片限值会导致误码。你可以尝试加锁相环或更换低相噪源。
  4. SYSREF 走线过长 — 和 Device Clock 走线长度差不要超过 100 mil。我一般把它们排在同一层,做等长蛇形线。

✅ 快速验证清单(第 3 章):

  • 用示波器确认 Device Clock 频率和抖动是否合标
  • 在 FPGA 或测试板内读出 LMFC 计数值,确认所有设备同步
  • 发送一次单脉冲 SYSREF,检查链路锁定状态寄存器
  • 如果使用周期 SYSREF,计算好脉冲周期,不要超过芯片支持的重复率

你想想看,时钟这三兄弟配合不好,整条链路就是摆设。我每次开新项目都会先把这张时序图画在纸上,然后对着数据手册逐项检查。说白了,多花十分钟排时钟,后面少查两小时的错。