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 和各个分量的值,才能正确产生行同步信号。
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 和场同步参数来生成帧同步信号。
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 行。
// 行同步参数
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规格书要求的帧率范围。