一、整体概念一帧图像是逐行扫描出来的一帧图像不是一次性传输的而是按照从左到右、从上到下的顺序一个像素一个像素地传送行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一帧有效行数如480VFPVertical Front Porch最后一行有效数据结束后 → VSYNC 前的空闲行数VSWVertical Sync WidthVSYNC 同步脉冲持续的行数VBPVertical Back PorchVSYNC 结束后 → 第一行有效数据前的空闲行数关键公式VTOTAL VACT VFP VSW VBP四、一帧图像的完整传输过程下面以800×480 分辨率为例完整走一遍流程像素时钟 PCLK ─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─...每个时钟传1个像素 ↑ 每个上升沿采样数据 ═══════════════════════════════════════════════════════════════ 【阶段0】场消隐开始上一帧的 VFP13行 VSYNC1(高), DE0, 无有效数据传输 【阶段1】VSYNC 脉冲VSW 3行 VSYNC拉低(假设低有效)___|‾‾‾|___ ★ 显示器收到信号准备回到屏幕左上角新一帧开始 【阶段2】场后肩VBP 29行 仍然是消隐行DE0不显示任何内容 【阶段3】有效行传输VACT 480行逐行进行 ┌─ 每一行内部又细分为 │ ① HBP40个PCLK行消隐DE0 │ ② 有效像素800个PCLKDE1逐像素传输RGB数据 │ 像素0(RGB888) → 像素1 → ... → 像素799 │ ③ HFP40个PCLK行消隐DE0 │ ④ HSYNC 脉冲HSW48个PCLK显示器换行 └─ 重复480次 【阶段4】回到阶段0开始下一帧 ═══════════════════════════════════════════════════════════════像素级传输示意一行内PCLK: ┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐ └┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘ DE: ───|████████████████████|─────────────────── ↑800个有效时钟↑ RGB: xxx|P0 |P1 |P2 |...|P799|xxx 每个时钟沿锁存一个24位像素 (R8G8B8) |←─ HACT800 ─→|←HFP40→|←HSW48→|←HBP40→| |←────────── HTOTAL 928 ──────────────→|五、为什么需要这些消隐区历史原因CRT 时代电子枪打完一行后需要时间回扫到下一行开头行回扫打完一帧后需要时间回到屏幕顶部场回扫回扫期间必须关闭电子束消隐否则屏幕上会有斜线现代意义LCD 时代依然保留兼容性沿用标准时序信号源/显示器统一接口控制信号传输消隐区可以传输非视频数据如 HDMI 的音频包、信息帧时钟稳定给源端和接收端留出 PLL 锁定、状态切换的时间实现帧率/分辨率调整增大消隐区可在不改变有效区域的情况下调整总时序六、时钟与帧率计算实例以800×48060Hz的典型 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 HBPVTOTAL 同理★PCLK HTOTAL × VTOTAL × 帧率★消隐区源自 CRT 回扫现代用于传辅助数据和时序兼容★ **DE数据使能**标记有效像素窗口DE1 的区域才是真实图像先有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行的有效数据 第N1行的有效数据即使是一帧的第一行也不例外——帧开头是垂直消隐区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 前必有 HSYNCHBPVSYNC 与 VBPVSYNC 在前VBP 在后每个 VBP 前必有 VSYNC
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一帧有效行数如480VFPVertical Front Porch最后一行有效数据结束后 → VSYNC 前的空闲行数VSWVertical Sync WidthVSYNC 同步脉冲持续的行数VBPVertical Back PorchVSYNC 结束后 → 第一行有效数据前的空闲行数关键公式VTOTAL VACT VFP VSW VBP四、一帧图像的完整传输过程下面以800×480 分辨率为例完整走一遍流程像素时钟 PCLK ─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─...每个时钟传1个像素 ↑ 每个上升沿采样数据 ═══════════════════════════════════════════════════════════════ 【阶段0】场消隐开始上一帧的 VFP13行 VSYNC1(高), DE0, 无有效数据传输 【阶段1】VSYNC 脉冲VSW 3行 VSYNC拉低(假设低有效)___|‾‾‾|___ ★ 显示器收到信号准备回到屏幕左上角新一帧开始 【阶段2】场后肩VBP 29行 仍然是消隐行DE0不显示任何内容 【阶段3】有效行传输VACT 480行逐行进行 ┌─ 每一行内部又细分为 │ ① HBP40个PCLK行消隐DE0 │ ② 有效像素800个PCLKDE1逐像素传输RGB数据 │ 像素0(RGB888) → 像素1 → ... → 像素799 │ ③ HFP40个PCLK行消隐DE0 │ ④ HSYNC 脉冲HSW48个PCLK显示器换行 └─ 重复480次 【阶段4】回到阶段0开始下一帧 ═══════════════════════════════════════════════════════════════像素级传输示意一行内PCLK: ┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐ └┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘ DE: ───|████████████████████|─────────────────── ↑800个有效时钟↑ RGB: xxx|P0 |P1 |P2 |...|P799|xxx 每个时钟沿锁存一个24位像素 (R8G8B8) |←─ HACT800 ─→|←HFP40→|←HSW48→|←HBP40→| |←────────── HTOTAL 928 ──────────────→|五、为什么需要这些消隐区历史原因CRT 时代电子枪打完一行后需要时间回扫到下一行开头行回扫打完一帧后需要时间回到屏幕顶部场回扫回扫期间必须关闭电子束消隐否则屏幕上会有斜线现代意义LCD 时代依然保留兼容性沿用标准时序信号源/显示器统一接口控制信号传输消隐区可以传输非视频数据如 HDMI 的音频包、信息帧时钟稳定给源端和接收端留出 PLL 锁定、状态切换的时间实现帧率/分辨率调整增大消隐区可在不改变有效区域的情况下调整总时序六、时钟与帧率计算实例以800×48060Hz的典型 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 HBPVTOTAL 同理★PCLK HTOTAL × VTOTAL × 帧率★消隐区源自 CRT 回扫现代用于传辅助数据和时序兼容★ **DE数据使能**标记有效像素窗口DE1 的区域才是真实图像先有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行的有效数据 第N1行的有效数据即使是一帧的第一行也不例外——帧开头是垂直消隐区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 前必有 HSYNCHBPVSYNC 与 VBPVSYNC 在前VBP 在后每个 VBP 前必有 VSYNC