3. RGB时序详解:行同步与场同步参数及DE有效区域计算

RGB接口驱动LCD屏时,像素数据的传输必须严格遵循时序规范。本章将深入解析行同步(Horizontal Timing)与场同步(Vertical Timing)的三大核心参数:前肩(Front Porch)、后肩(Back Porch)和同步脉宽(Sync Width),并给出DE(Data Enable)有效区域的计算方法。理解这些参数是正确配置LCD控制器、避免图像偏移或撕裂的基础。

3.1 行同步时序(Horizontal Timing)

行同步控制每一行像素数据的开始与结束。在一行有效像素数据前后,需要插入空白周期(消隐区)来保证信号稳定。行同步参数包括:

参数 缩写 说明 典型范围(以800×480为例)
行同步脉宽 HSW (Hsync Width) 行同步脉冲的持续时间,用于同步信号发生器 1 ~ 40 像素时钟
行后肩 HBP (H. Back Porch) 同步脉冲结束后、有效像素数据开始前的空白周期 2 ~ 255 像素时钟
行前肩 HFP (H. Front Porch) 有效像素数据结束后、下一个同步脉冲开始前的空白周期 2 ~ 255 像素时钟
行有效像素 HACT 一行中实际显示的像素数(分辨率宽度) 800

行总像素数计算公式:

H_total = HSW + HBP + HACT + HFP

其中,H_total 是扫描一行所需的总像素时钟数。LCD控制器通常需要配置 H_total 和各个分量的值,才能正确产生行同步信号。

调试提示: 如果图像出现水平偏移或左侧/右侧出现黑边,通常是因为 HBP 或 HFP 配置不正确。增大 HBP 会使图像右移,增大 HFP 会使图像左移。
行同步时序结构图 行同步时序(Horizontal Timing) HSW HBP 有效像素数据(HACT = 800) HFP 下一行 同步脉冲 有效数据 H_total = HSW + HBP + HACT + HFP

3.2 场同步时序(Vertical Timing)

场同步控制整个帧(一屏画面)的刷新。与行同步类似,在有效行数据前后也需要插入空白行周期。场同步参数包括:

参数 缩写 说明 典型范围(以800×480为例)
场同步脉宽 VSW (Vsync Width) 场同步脉冲的持续时间(以行数为单位) 1 ~ 20 行
场后肩 VBP (V. Back Porch) 场同步脉冲结束后、有效行数据开始前的空白行数 2 ~ 255 行
场前肩 VFP (V. Front Porch) 有效行数据结束后、下一个场同步脉冲开始前的空白行数 2 ~ 255 行
场有效行数 VACT 一帧中实际显示的行数(分辨率高度) 480

场总行数计算公式:

V_total = VSW + VBP + VACT + VFP

其中,V_total 是扫描一帧所需的总行数。LCD控制器需要根据 V_total 和场同步参数来生成帧同步信号。

常见问题: 如果图像出现垂直滚动、上下偏移或底部/顶部出现黑边,通常是因为 VBP 或 VFP 配置错误。增大 VBP 会使图像下移,增大 VFP 会使图像上移。VSW 过短可能导致场同步不稳定。
场同步时序结构图 场同步时序(Vertical Timing) VSW VBP 有效行 VFP 场同步参数说明 • VSW:场同步脉冲宽度(行数) • VBP:场后肩,同步后到有效数据前的空白行 • VACT:有效显示行数(分辨率高度) • VFP:场前肩,有效数据后到下一个同步的空白行 V_total = VSW + VBP + VACT + VFP

3.3 DE有效区域计算

DE(Data Enable)信号用于指示当前传输的像素数据是否属于有效显示区域。在行同步和场同步的消隐区,DE信号为低电平;在有效像素和有效行区域,DE信号为高电平。DE有效区域的计算是配置LCD控制器的核心步骤。

DE有效区域的计算公式:

DE有效宽度 = HACT(分辨率宽度)
DE有效高度 = VACT(分辨率高度)
DE起始列 = HSW + HBP
DE起始行 = VSW + VBP

也就是说,DE信号在行方向上从第 HSW + HBP 个像素时钟开始变为高电平,持续 HACT 个像素时钟;在垂直方向上从第 VSW + VBP 行开始变为高电平,持续 VACT 行。

实际配置示例(以800×480分辨率,典型参数为例):
// 行同步参数
HSW = 2   // 行同步脉宽
HBP = 46  // 行后肩
HFP = 16  // 行前肩
HACT = 800 // 有效像素
H_total = 2 + 46 + 800 + 16 = 864

// 场同步参数
VSW = 2   // 场同步脉宽
VBP = 23  // 场后肩
VFP = 10  // 场前肩
VACT = 480 // 有效行
V_total = 2 + 23 + 480 + 10 = 515

// DE有效区域
DE起始列 = 2 + 46 = 48
DE起始行 = 2 + 23 = 25
DE有效宽度 = 800
DE有效高度 = 480

3.4 参数配置与调试对照表

下表总结了常见调试问题与对应参数的调整方向:

现象 可能原因 调整参数 调整方向
图像左移或右侧黑边 HBP 过小或 HFP 过大 HBP / HFP 增大 HBP 或减小 HFP
图像右移或左侧黑边 HBP 过大或 HFP 过小 HBP / HFP 减小 HBP 或增大 HFP
图像上移或底部黑边 VBP 过小或 VFP 过大 VBP / VFP 增大 VBP 或减小 VFP
图像下移或顶部黑边 VBP 过大或 VFP 过小 VBP / VFP 减小 VBP 或增大 VFP
图像闪烁或撕裂 同步脉宽不足或总周期不匹配 HSW / VSW / H_total / V_total 适当增大 HSW/VSW,确保总周期符合LCD规格

3.5 时序参数与像素时钟的关系

所有行同步参数的单位是像素时钟(PCLK),场同步参数的单位是行(H)。像素时钟频率决定了行扫描时间和帧率。帧率计算公式如下:

帧率 = PCLK频率 / (H_total × V_total)

例如,若 PCLK 频率为 33.3 MHz,H_total = 864,V_total = 515,则:

帧率 = 33,300,000 / (864 × 515) ≈ 74.8 Hz

调整 H_total 或 V_total 会直接影响帧率,因此在配置时序参数时,需要同时考虑LCD规格书要求的帧率范围。

工程建议: 在调试阶段,建议先使用LCD厂商提供的初始化代码或参考设计中的时序参数。如果自行调整,每次只修改一个参数(如 HBP 或 VBP),观察图像变化,避免同时修改多个参数导致问题难以定位。