3. eDP时钟信号约束:差分时钟、频率、相位、抖动

时钟是eDP链路的心脏。它跳得稳不稳,直接决定了画面能不能正常显示。

我做eDP调试这么多年,遇到最多的坑就是时钟约束没做对。有时候示波器一看,波形挺漂亮,结果屏幕就是闪。说白了,很多问题藏在时序细节里。

3.1 差分时钟的本质

eDP用的是差分时钟。两条线,一个传正相,一个传反相。

为什么要用差分?抗干扰能力强。你想想看,外部噪声同时耦合到两条线上,一相减就没了。

关键指标:差分时钟的共模电压通常在0V附近,摆幅约±200mV ~ ±400mV。

我个人习惯在约束文件里这样写:

# 定义差分时钟
create_clock -name eDP_clk -period 10.000 [get_ports eDP_clk_p]

这里有个坑:必须显式约束主时钟。有些工具会自动推断,但我不依赖这个。人工写清楚,心里踏实。

3.2 频率约束

eDP的时钟频率取决于分辨率、色深和通道数。大致范围在162MHz到540MHz之间。

我常用的计算方法:

分辨率 色深 通道数 典型时钟频率
1920x1080 @ 60Hz 8bit 4 162 MHz
1920x1080 @ 60Hz 10bit 4 202.5 MHz
3840x2160 @ 60Hz 8bit 4 540 MHz
3840x2160 @ 60Hz 10bit 4 607.5 MHz
实践建议:约束时钟时,多留5%~10%的余量。比如理论值是162MHz,你按180MHz约束。这样温度、电压波动时还能跑。

约束命令示例:

create_clock -name eDP_clk -period 5.556 [get_ports eDP_clk_p]
# 对应180MHz,让工具多留余量

有一次我调试一款高分辨率面板,时钟频率怎么都压不上去。后来发现是PLL的环路带宽设得太窄。调整后,频率一下就稳了。

3.3 相位约束

eDP的时钟和数据之间有固定的相位关系。通常情况下,数据在时钟的边沿中心采样。

相位要求:

  • 时钟上升沿与数据眼图的中心对齐
  • 时钟下降沿用于数据锁存(双数据率模式)
  • 相位偏差控制在±0.15 UI以内

我在项目中曾经用示波器抓过时钟-数据的相位关系。最棘手的是走线长度不匹配导致的相位偏移。后来养成了习惯:所有差分对走等长线,误差控制在5mil以内。

注意:PCB走线时,差分时钟对的内间距保持一致。我的经验值是6~8mil,参考平面要连续,避免跨分割。

相位约束在SDC里通常这样写:

# 设置时钟不确定性(模拟相位抖动)
set_clock_uncertainty -setup 0.25 [get_clocks eDP_clk]
set_clock_uncertainty -hold 0.15 [get_clocks eDP_clk]

3.4 抖动约束

抖动是eDP时钟的隐形杀手。

抖动分两种:

  • 随机抖动(RJ):来自热噪声、闪烁噪声,服从高斯分布
  • 确定性抖动(DJ):来自串扰、电源噪声,有固定模式

eDP规范对抖动的总要求:

参数 最小值 典型值 最大值
周期抖动 (Tj) - 40 ps 100 ps
随机抖动 (Rj, rms) - 2 ps 5 ps
确定性抖动 (Dj, pp) - 30 ps 70 ps

为什么抖动这么重要?

因为抖动会缩小数据眼图的张开度。眼图闭了,误码率就上去了。屏幕就开始闪、出雪花。

我常用的抖动减措施:

  • PLL电源加足够的滤波电容(0.1μF + 10μF组合)
  • 时钟走线远离开关电源
  • 差分对周围加地孔防护
  • 使用展频时钟(SSC)降低EMI
展频时钟(SSC):通过缓慢调制时钟频率,将能量分散到更宽的频带上。调制深度通常为0.5%~2%,调制频率30~60kHz。

有一次我调试完抖动,发现眼图张开了不少。原来问题出在电源纹波上。加了LDO后,时钟干净多了。那次经验让我记住了一件事:时钟的抖动,往往不是时钟本身的问题,而是电源的事。

3.5 本章知识结构

下面的SVG图总结了eDP时钟信号约束的核心知识体系,方便你整体把握。

eDP时钟信号约束知识体系 eDP时钟信号约束 差分时钟 频率约束 相位约束 抖动约束 共模电压 / 摆幅 走线等长 / 阻抗 SSC展频设置 分辨率 → 色深 → 通道数 留5%~10%余量 数据眼图中心对齐 ∆偏差 ≤ 0.15 UI RJ / DJ / Tj 电源滤波 / 走线防护 眼图张开度

3.6 实战总结

做eDP时钟约束,记住三句话:

  1. 差分时钟走线等长,阻抗连续——这是硬件基础
  2. 频率留余量,相位对准心——这是约束核心
  3. 抖动主要靠电源和走线治——这是调试经验
再提醒一次:不要直接相信工具自动生成的时钟约束。手动检查每个时钟源的周期、占空比、抖动容限。我曾经因为相信工具,结果时钟偏移量差了0.3个UI,整屏都是水波纹。

嗯,时钟约束这部分基本就这些。记住一句话:时钟定好了,剩下的就是数据通道的问题了。