3. LVDS时钟基础:像素时钟(PCLK)与链路时钟(LCLK)

在LVDS显示链路中,时钟是数据采样的基准。理解像素时钟(PCLK)与链路时钟(LCLK)的关系,是正确配置DRM Encoder驱动的前提。错误的时钟频率会导致画面偏移、闪烁甚至无显示。

3.1 核心概念定义

时钟类型 英文缩写 定义 典型来源
像素时钟 PCLK 每个像素数据被送入显示控制器时的同步时钟。一个PCLK周期对应一个像素的RGB数据。 CRTC(显示控制器)输出
链路时钟 LCLK LVDS串行器将并行RGB数据串行化后,在差分线上传输的位时钟。一个LCLK周期对应一个串行位。 LVDS Transmitter(串行器)PLL
关键认知: LCLK 总是 PCLK 的整数倍。这个倍数由每个时钟周期内传输的位数(数据通道数 × 每通道位数)决定。

3.2 时钟频率计算公式

LVDS链路时钟频率由以下公式决定:

LCLK = PCLK × (BPP / (Data_Lanes × Bits_Per_Lane))

其中:

  • BPP:每像素位数(Bits Per Pixel),常见24bit(RGB888)或18bit(RGB666)。
  • Data_Lanes:LVDS数据通道数,通常为4通道或5通道(含奇偶像素映射)。
  • Bits_Per_Lane:每通道每时钟传输的位数,LVDS标准固定为7位(7:1串行化)。
工程速查: 对于标准4通道LVDS(24bit RGB),公式简化为 LCLK = PCLK × 24 / (4 × 7) = PCLK × 6/7。实际驱动中常近似为 LCLK ≈ PCLK × 0.857。

3.3 典型配置参数表

显示分辨率 PCLK (MHz) BPP 数据通道 LCLK (MHz) 备注
1024×600 @60Hz 51.2 24 4 43.9 常见7寸工控屏
1366×768 @60Hz 85.5 24 4 73.3 笔记本面板
1920×1080 @60Hz 148.5 24 4 127.3 全高清屏
1920×1080 @60Hz 148.5 30 5 127.3 10bit色深屏
注意: 上表中的LCLK为理论计算值。实际硬件中,LVDS串行器PLL可能引入±5%的抖动,驱动配置时需参考面板数据手册的时钟容差范围。

3.4 时钟关系SVG结构图

下图展示了从像素时钟到链路时钟的生成路径,以及数据串行化的时序关系:

LVDS时钟生成与数据串行化结构图 LVDS时钟生成与数据串行化结构 CRTC PCLK 输出 并行RGB总线 24bit / 18bit LVDS Transmitter 串行化 + PLL 7:1 串行化 PLL 倍频 LCLK 输出 差分时钟对 LVDS数据通道 4对差分线 PCLK RGB并行数据 参考时钟 倍频后时钟 串行数据流 时序关系说明: • 每个PCLK周期,CRTC输出一个像素的并行RGB数据到总线。 • LVDS Transmitter在每个LCLK周期内,从每个通道串行输出7个数据位。 • LCLK频率 = PCLK × (BPP) / (通道数 × 7),确保数据吞吐量匹配。

3.5 时钟频率计算实例

以1920×1080 @60Hz面板为例,逐步计算LCLK:

  1. 计算PCLK: 总像素数 = (1920 + H_blank) × (1080 + V_blank) × 60。假设H_blank=280, V_blank=45,则PCLK ≈ 148.5MHz。
  2. 确定BPP: 标准24bit RGB888。
  3. 确定通道数: 4通道LVDS。
  4. 代入公式: LCLK = 148.5 × 24 / (4 × 7) = 148.5 × 24 / 28 = 127.3MHz。
驱动验证: 在DRM Encoder的 atomic_check 回调中,应检查面板支持的LCLK范围。若计算值超出面板规格,需调整PCLK(如降低刷新率)或增加数据通道数。

3.6 时钟抖动与链路裕量

实际硬件中,时钟抖动(Jitter)会降低有效数据采样窗口。驱动配置时需关注:

  • PCLK抖动: 来自CRTC PLL,通常 < 200ps RMS。
  • LCLK抖动: 来自LVDS串行器PLL,通常 < 100ps RMS。
  • 链路裕量: 数据有效窗口 = LCLK周期 - 总抖动。裕量 > 0.5ns 为安全设计。

在DRM驱动中,可通过 drm_display_mode 的 clock 字段传递PCLK,而LCLK由Encoder内部PLL根据上述公式自动计算。部分SoC允许通过寄存器直接配置LCLK分频比,此时需手动验证公式一致性。