3. LVDS时钟基础
在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结构图
下图展示了从像素时钟到链路时钟的生成路径,以及数据串行化的时序关系:
3.5 时钟频率计算实例
以1920×1080 @60Hz面板为例,逐步计算LCLK:
- 计算PCLK: 总像素数 = (1920 + H_blank) × (1080 + V_blank) × 60。假设H_blank=280, V_blank=45,则PCLK ≈ 148.5MHz。
- 确定BPP: 标准24bit RGB888。
- 确定通道数: 4通道LVDS。
- 代入公式: 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分频比,此时需手动验证公式一致性。