news 2026/7/22 7:43:28

LCD/VGA 视频时序详解:HSYNC、VSYNC、HFP、HBP、VFP、VBP

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
LCD/VGA 视频时序详解:HSYNC、VSYNC、HFP、HBP、VFP、VBP

一、整体概念:一帧图像是"逐行扫描"出来的

一帧图像不是一次性传输的,而是按照从左到右、从上到下的顺序,一个像素一个像素地传送:

行0: [像素][像素][像素]...[像素] → 行消隐 → 行1: [像素][像素][像素]...[像素] → 行消隐 → ... 行479: [像素]...[像素] → 场消隐 → 行0(下一帧): ...
  • HSYNC(行同步):每传完一行,发出一个同步脉冲,告诉显示器"换行"
  • VSYNC(场同步):每传完一帧,发出一个同步脉冲,告诉显示器"回到第一行"
  • HFP/HBP(行前/后肩):行消隐区内同步脉冲前后的空闲时间
  • VFP/VBP(场前/后肩):场消隐区内同步脉冲前后的空闲行数

⚠️命名易混点:Front Porch(前肩)在同步脉冲之前,Back Porch(后肩)在同步脉冲之后。这个名字来自模拟电视时代——以消隐脉冲为参考,同步头前面叫"前肩",后面叫"后肩"。


二、行时序(Horizontal Timing)详解

一行的完整周期 = 有效像素 + 行消隐(HFP + HSW + HBP):

一行的完整时间 = HTOTAL |───────────────────────────────────────────────────────────────────| |← HBP →|←──────── 有效数据 (HACT) ────────→|← HFP →|← HSW →| ___ HSYNC: ─────────────────────────────────────────────────_| |____ DE: ─|████████████████████████████████████████████|──────────── ↑ ↑ 第0个像素 最后一个像素 D[23:0]: 像素0 像素1 像素2 ......... 像素799 (无效)

各参数含义

参数全称含义方向
HACTHorizontal Active一行有效像素数(如800)
HFPHorizontal Front Porch有效数据结束→ 同步脉冲开始的空闲时间同步脉冲
HSWHorizontal Sync WidthHSYNC同步脉冲本身的宽度
HBPHorizontal Back Porch同步脉冲结束→ 下一行有效数据开始同步脉冲

关键公式:

HTOTAL = HACT + HFP + HSW + HBP

📌 注意:有些芯片手册把 HSW 算进 HBP 里(即 HBP = 同步宽度+后肩),阅读手册时务必确认定义方式。


三、场时序(Vertical Timing)详解

把"一行"看成垂直方向上的一个单位,一帧的结构与一行完全对称:

一帧的完整时间 = VTOTAL(单位:行) |────────────────────────────────────────────────────────────| |← VBP →|←──── 有效行 (VACT,如480行) ────→|← VFP →|← VSW →| ___ VSYNC: ────────────────────────────────────────────────| |____ 行数据: 行0 行1 行2 ... 行479 (消隐行) (同步) (消隐行)

各参数含义

参数全称含义
VACTVertical Active一帧有效行数(如480)
VFPVertical Front Porch最后一行有效数据结束后 → VSYNC 前的空闲行数
VSWVertical Sync WidthVSYNC 同步脉冲持续的行数
VBPVertical Back PorchVSYNC 结束后 → 第一行有效数据前的空闲行数

关键公式:

VTOTAL = VACT + VFP + VSW + VBP

四、一帧图像的完整传输过程

下面以800×480 分辨率为例,完整走一遍流程:

像素时钟 PCLK ─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─...(每个时钟传1个像素) ↑ 每个上升沿采样数据 ═══════════════════════════════════════════════════════════════ 【阶段0】场消隐开始(上一帧的 VFP,13行) VSYNC=1(高), DE=0, 无有效数据传输 【阶段1】VSYNC 脉冲(VSW = 3行) VSYNC拉低(假设低有效):___|‾‾‾|___ ★ 显示器收到信号:"准备回到屏幕左上角,新一帧开始!" 【阶段2】场后肩(VBP = 29行) 仍然是消隐行,DE=0,不显示任何内容 【阶段3】有效行传输(VACT = 480行,逐行进行) ┌─ 每一行内部又细分为: │ ① HBP(40个PCLK):行消隐,DE=0 │ ② 有效像素(800个PCLK):DE=1,逐像素传输RGB数据 │ 像素0(RGB888) → 像素1 → ... → 像素799 │ ③ HFP(40个PCLK):行消隐,DE=0 │ ④ HSYNC 脉冲(HSW=48个PCLK):显示器换行 └─ 重复480次 【阶段4】回到阶段0,开始下一帧 ═══════════════════════════════════════════════════════════════

像素级传输示意(一行内)

PCLK: ┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐ └┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘ DE: ───|████████████████████|─────────────────── ↑800个有效时钟↑ RGB: xxx|P0 |P1 |P2 |...|P799|xxx 每个时钟沿锁存一个24位像素 (R8+G8+B8) |←─ HACT=800 ─→|←HFP=40→|←HSW=48→|←HBP=40→| |←────────── HTOTAL = 928 ──────────────→|

五、为什么需要这些"消隐区"?

历史原因(CRT 时代)

  • 电子枪打完一行后,需要时间回扫到下一行开头(行回扫)
  • 打完一帧后,需要时间回到屏幕顶部(场回扫)
  • 回扫期间必须关闭电子束(消隐),否则屏幕上会有斜线

现代意义(LCD 时代依然保留)

  1. 兼容性:沿用标准时序,信号源/显示器统一接口
  2. 控制信号传输:消隐区可以传输非视频数据(如 HDMI 的音频包、信息帧)
  3. 时钟稳定:给源端和接收端留出 PLL 锁定、状态切换的时间
  4. 实现帧率/分辨率调整:增大消隐区可在不改变有效区域的情况下调整总时序

六、时钟与帧率计算(实例)

800×480@60Hz的典型 LCD 时序为例:

参数说明
HACT800行有效像素
HFP40行前肩
HSW48行同步宽度
HBP40行后肩
HTOTAL928行总周期
VACT480帧有效行
VFP13场前肩
VSW3场同步宽度
VBP29场后肩
VTOTAL525帧总行数

像素时钟计算:

PCLK = HTOTAL × VTOTAL × 帧率 = 928 × 525 × 60 ≈ 29.25 MHz

验证一行时间:

行周期 = HTOTAL / PCLK = 928 / 29.25MHz ≈ 31.7 μs

七、记忆要点总结

  • 扫描顺序:从左到右传像素,从上到下行,一行接一行
  • HSYNC 管换行,VSYNC 管换帧
  • Front Porch 在同步脉冲前,Back Porch 在同步脉冲后(以脉冲为中心记方向)
  • HTOTAL = HACT + HFP + HSW + HBP;VTOTAL 同理
  • PCLK = HTOTAL × VTOTAL × 帧率
  • 消隐区源自 CRT 回扫,现代用于传辅助数据和时序兼容
  • ★ **DE(数据使能)**标记有效像素窗口:DE=1 的区域才是真实图像

先有hbp信号再有hsync信号吗?第一个hsync信号必须在第一个hact信号之后吗? 第一个vbp前肯定有一个vsync吗?

先有hbp信号再有hsync信号吗?第一个hsync信号必须在第一个hact信号之后吗? 第一个vbp前肯定有一个vsync吗?

问题1:先有 HBP 再有 HSYNC 吗?

不是,顺序相反:先有 HSYNC 脉冲,再有 HBP。

一行内的完整顺序(时间从左到右):

HACT(有效像素) → HFP → HSYNC脉冲(HSW) → HBP → 下一行HACT → ... ↑前肩 ↑后肩 同步之前 同步之后

记忆方法:以同步脉冲为"分水岭"——

  • Front Porch(前肩)= 脉冲之前
  • Back Porch(后肩)= 脉冲之后

问题2:第一个 HSYNC 必须在第一个 HACT 之后吗?

不是,恰恰相反:第一个 HACT 之前必然有一个 HSYNC。

因为时序是周期性循环的,任何一段 HACT 都严格被夹在HBP ← HSYNC的后面:

... → HSYNC → HBP → HACT → HFP → HSYNC → HBP → HACT → ... ↑ ↑ 第N行的有效数据 第N+1行的有效数据

即使是一帧的第一行,也不例外——帧开头是垂直消隐区(VSYNC + VBP),而水平时序从不停摆,VBP 期间 HSYNC 脉冲照常输出。第一个 HACT 到来前的最后一个消隐行里,必然有一个 HSYNC 脉冲 + HBP 为它"开路"。

问题3:第一个 VBP 前肯定有一个 VSYNC 吗?

肯定。与行时序完全对称,场方向也是严格循环的:

... → VSYNC脉冲(VSW) → VBP → VACT(有效行) → VFP → VSYNC → VBP → VACT → ...

VBP 紧跟在 VSYNC 脉冲结束之后、有效行开始之前,不可能存在"没有 VSYNC 的 VBP"。


二、完整时序图(帧起始部分)

帧开始 ↓ ┌─────────────────────────────────────────────┐ VSYNC: ____|‾‾‾‾|__________________________________________ ←VSW→←────────── VBP ──────────→←──── VACT ────→ HSYNC: _|‾|_|‾|_|‾|_|‾|_|‾|_|‾|_|‾|_|‾|_|‾|_|‾|_|‾|_|‾|_|‾|_ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ 消隐行期间的HSYNC脉冲 ★第一个HACT前的HSYNC DE: ___________________________|█████████████|___________ ↑ 第一个HACT(第0行有效像素)

关键点:

  • 消隐区(VBP)内 HSYNC持续振荡,水平计数永不停止
  • 每个 HACT 前面都有一个 HSYNC + HBP 作为"行开始标志"
  • 每个 VACT 前面都有一个 VSYNC + VBP 作为"帧开始标志"

三、一句话总结

信号对先后顺序
HSYNC 与 HBPHSYNC 在前,HBP 在后(HBP 是"后肩")
HSYNC 与 HACTHSYNC 在前,HACT 在后(每个 HACT 前必有 HSYNC+HBP)
VSYNC 与 VBPVSYNC 在前,VBP 在后(每个 VBP 前必有 VSYNC)
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/22 7:42:30

Strarling分布式系统设计:CAP定理实践与架构解析

1. 从Strarling看分布式系统的设计哲学第一次接触Strarling这个项目时,我正被公司自研的分布式存储系统折磨得焦头烂额。那是个典型的"大泥球"架构——各种临时方案像补丁一样层层叠加,性能监控数据像过山车般忽高忽低。直到某天深夜&#xff…

作者头像 李华
网站建设 2026/7/22 7:40:50

深入解析TI EMAC驱动:硬件QoS、帧分类与中断处理实战

1. 项目概述与核心价值在嵌入式网络设备开发中,以太网控制器(EMAC)的性能和可靠性直接决定了整个系统的网络通信能力。很多开发者初次接触EMAC驱动时,往往只关注如何让数据“通起来”,而忽略了其内置的硬件级高级功能&…

作者头像 李华
网站建设 2026/7/22 7:37:13

零代码Python自动化实战:从RPA到智能生成,解放重复劳动

1. 项目概述:当“零代码”遇上Python自动化最近在技术社区和社交媒体上,一个概念被反复提及,热度居高不下:“不用写一行代码的Python自动化神器”。这听起来像是一个悖论,Python本身就是一门编程语言,其魅力…

作者头像 李华
网站建设 2026/7/22 7:32:53

华为模拟器静态路由综合实验

一、设备:5台路由器A2220二、实验要求:1.除了R5的环回地址固定5.5.5.0/24,其他网段基于192.168.1.0/24进行合理划分;2.R1-R4每个路由器存在两个环回接口,模拟PC,地址也在192.168.1.0/24网络内;3…

作者头像 李华
网站建设 2026/7/22 7:32:44

扫码营销怎么把首扫、复扫和复购串起来?

说明:本文基于现有知识库整理,用于方案判断与选型参考。当前证据主要来自内部案例记录与产品资料;如涉及客户名称、活动页面、量化结果,对外发布前需再次确认授权,未确认部分统一标注“待补充”。 关键词: …

作者头像 李华