3. 显示时序基础:像素时钟、行同步、场同步与数据使能

在 SA8155 的 HDMI 显示链路中,GPU 生成的图像数据必须严格按照精确的时序信号进行传输,才能被显示器正确解析和显示。本章节将深入剖析构成显示时序的四大核心信号:像素时钟(Pixel Clock)、行同步(HSYNC)、场同步(VSYNC)和数据使能(DE),并介绍 VESA 与 CEA-861 两大标准体系。

核心要点:显示时序的本质是 GPU 与显示设备之间的一种“握手协议”。像素时钟提供数据传输的节拍,HSYNC 和 VSYNC 标记行与帧的边界,DE 信号则精确界定有效图像数据的范围。任何时序参数的偏差都可能导致画面偏移、闪烁或黑屏。

3.1 四大核心信号定义

下图展示了 HDMI 接口中,GPU 在发送一行图像数据时,各信号之间的典型时序关系。

显示时序信号关系图 显示时序信号关系图(一行数据周期) PCLK HSYNC 同步脉冲 后肩 有效数据区间 前肩 DE 数据使能(高电平有效) 时序参数说明: • H_total = H_Active + H_Front_Porch + H_Sync_Width + H_Back_Porch • 像素时钟频率 = H_total × V_total × 刷新率 • 在 SA8155 的 DPU 寄存器中,这些参数以像素时钟周期为单位进行配置

3.2 信号详细解析

3.2.1 像素时钟(Pixel Clock)

  • 定义:像素时钟是显示时序的基准节拍,每个时钟周期对应传输一个像素点的数据。在 HDMI 中,像素时钟频率决定了数据传输的速率。
  • 计算:Pixel_Clock = H_Total × V_Total × Refresh_Rate。例如,1920x1080@60Hz 的典型像素时钟为 148.5 MHz。
  • SA8155 调试要点:在 DPU(显示处理单元)的 PLL 配置中,需要精确设置像素时钟频率。频率偏差超过 ±0.5% 可能导致显示器无法锁定信号。

3.2.2 行同步(HSYNC)

  • 定义:行同步信号用于标识每一行像素数据的开始。通常为低电平有效或高电平有效(取决于标准),在同步脉冲期间,GPU 指示显示器开始新的一行。
  • 组成:一行完整的时序周期包括:同步脉冲(Sync)、后肩(Back Porch)、有效数据区间(Active)和前肩(Front Porch)。
  • 避坑指南:后肩和前肩的时长必须满足显示器的消隐要求。后肩过短可能导致图像顶部出现噪点,前肩过短可能引起行同步不稳定。

3.2.3 场同步(VSYNC)

  • 定义:场同步信号用于标识每一帧(一幅完整图像)的开始。其结构与行同步类似,也包含同步脉冲、后肩、有效数据区间和前肩,但时间单位是“行数”而非“像素时钟周期”。
  • 帧结构:V_Total = V_Active + V_Front_Porch + V_Sync_Width + V_Back_Porch。
  • SA8155 调试要点:在调试过程中,如果遇到画面上下抖动或滚动,应优先检查 VSYNC 的总周期(V_Total)是否与显示器的 EDID 要求一致。

3.2.4 数据使能(DE)

  • 定义:数据使能信号是一个高电平有效的控制信号。当 DE 为高电平时,数据总线上的 RGB 或 YCbCr 信号才是有效的图像数据;当 DE 为低电平时,数据总线处于消隐期,传输的是消隐数据。
  • 作用:DE 信号是 GPU 与显示器之间最直接的“数据有效”指示。在 HDMI 传输中,DE 信号直接映射到 TMDS 通道的控制信号中。
  • 调试价值:通过示波器观察 DE 信号与数据通道的对应关系,可以快速判断 GPU 是否在正确的时序窗口内输出了有效数据。

3.3 标准体系:VESA 与 CEA-861

显示时序标准主要分为两大阵营:VESA(视频电子标准协会)和 CEA-861(消费电子协会标准)。SA8155 的 DPU 需要同时兼容这两种标准,以适应不同显示设备。

对比维度 VESA 标准 CEA-861 标准
主要应用 PC 显示器、工业显示屏 电视、消费电子设备(HDMI)
典型分辨率 1920x1080、2560x1440、3840x2160 720p、1080i、1080p、4K
时序特点 消隐期较长,同步脉冲宽度固定 消隐期较短,支持隔行扫描(Interlace)
像素时钟 通常为整数倍(如 148.5 MHz) 支持降低时钟(如 74.25 MHz 用于 1080i)
色彩格式 优先 RGB 优先 YCbCr 4:4:4 / 4:2:2
EDID 信息 包含详细的时序描述符(DTD) 包含短视频描述符(SVD)
实战提示:在 SA8155 项目中,当连接电视时,应优先解析 EDID 中的 CEA-861 扩展块,并匹配 SVD 码对应的时序。如果连接的是 PC 显示器,则应使用 VESA 标准的 DTD 时序。错误的时序选择会导致显示器显示“无信号”或“超出范围”。

3.4 标准时序参数示例

以下为两种常见分辨率的 VESA 标准时序参数,供寄存器配置时参考。

参数 1920x1080 @ 60Hz 1280x720 @ 60Hz
像素时钟(MHz) 148.5 74.25
H_Active(像素) 1920 1280
H_Front_Porch(像素) 88 110
H_Sync_Width(像素) 44 40
H_Back_Porch(像素) 148 220
H_Total(像素) 2200 1650
V_Active(行) 1080 720
V_Front_Porch(行) 4 5
V_Sync_Width(行) 5 5
V_Back_Porch(行) 36 20
V_Total(行) 1125 750
HSYNC 极性 正极性(+) 正极性(+)
VSYNC 极性 正极性(+) 正极性(+)

3.5 SA8155 寄存器配置示例

在 SA8155 的 DPU 驱动中,时序参数通常通过 msm_display_timing 结构体进行配置。以下是一个针对 1920x1080@60Hz 的配置片段:

struct msm_display_timing timing = {
    .pixel_clock_khz = 148500,          // 像素时钟,单位 KHz
    .h_active = 1920,                    // 水平有效像素
    .h_front_porch = 88,                 // 水平前肩
    .h_sync_width = 44,                  // 水平同步宽度
    .h_back_porch = 148,                 // 水平后肩
    .v_active = 1080,                    // 垂直有效行数
    .v_front_porch = 4,                  // 垂直前肩
    .v_sync_width = 5,                   // 垂直同步宽度
    .v_back_porch = 36,                  // 垂直后肩
    .h_skew = 0,                         // 水平偏移(通常为 0)
    .v_skew = 0,                         // 垂直偏移(通常为 0)
    .flags = 0,                          // 极性标志位
};
调试警告:在修改时序参数后,务必通过示波器或逻辑分析仪抓取 HSYNC 和 VSYNC 的实际波形,与理论计算值进行比对。SA8155 的 DPU 内部可能存在时钟分频误差,导致实际输出的像素时钟与配置值有微小偏差。如果偏差超过 1%,建议调整 PLL 的反馈分频系数。

3.6 时序同步验证流程

在 SA8155 的 HDMI 调试中,验证 GPU 时序与 HDMI 接口是否同步,通常遵循以下步骤:

  1. 读取 EDID:通过 I2C 总线读取显示器的 EDID 数据,获取其支持的最佳时序(Preferred Timing)或 SVD 列表。
  2. 配置 DPU 时序:根据 EDID 信息,在 DPU 的时序控制器(Timing Controller)中写入对应的 H_Total、V_Total 等参数。
  3. 锁定 PLL:配置 DPU 的 PLL 模块,生成精确的像素时钟。使用频率计测量 PLL 输出,确保频率误差在允许范围内。
  4. 抓取波形:使用示波器探头测量 HDMI 接口的 HSYNC、VSYNC 和 DE 信号。验证 HSYNC 周期是否等于 H_Total × Pixel_Clock_Period。
  5. 检查 DE 对齐:确认 DE 信号的高电平区间是否精确对应 H_Active 和 V_Active 的窗口。DE 的上升沿应与有效数据的第一个像素对齐。
  6. 观察画面:连接显示器,观察画面是否完整、无偏移、无闪烁。如果出现异常,返回步骤 2 微调时序参数。
时序同步验证流程图 SA8155 HDMI 时序同步验证流程 读取 EDID 配置 DPU 时序 锁定 PLL 抓取波形 检查 DE 对齐 观察画面 失败回退

通过以上流程,可以系统性地定位 SA8155 显示链路中的时序问题,确保 GPU 输出的图像数据与 HDMI 接口的传输要求完全同步。