edid
EDID
介绍
EDID 是显示器给主机发的 “能力说明书”,核心是告诉主机 “我能接收什么格式的视频信号”,避免主机发一个显示器处理不了的信号(比如黑屏、画面撕裂)。
本质是显示器内部一个小存储芯片(通常是 EEPROM)里的二进制数据。
EDID 里包含 3 类关键信息:
- 基本信息:显示器品牌、型号、出厂日期(比如 “Dell U2723QE”);
- 显示能力:支持的分辨率(1080P/2K/4K)、刷新率(60Hz/144Hz)、色域(sRGB/DCI-P3);
- 时序参数:这是核心,决定 “视频信号怎么传、显示器怎么扫”
时序
时序的本质是 “主机发信号的节奏” 和 “显示器扫画面的节奏” 的匹配规则。
显示器怎么把 “1920x1080” 的画面显示出来?
是一次性把所有像素怼到屏幕上,而是像 “看书一行一行扫”,先扫第一行所有像素,再扫第二行,直到扫完最后一行(这叫 “逐行扫描”);扫完一整屏(一帧)后,再从头开始扫下一帧,反复循环。
时序参数就是规定 “扫一行 / 一帧的具体时间分配”,分为 水平时序(扫一行的节奏)和 垂直时序(扫一帧的节奏),我们用最常见的 “1920x1080@60Hz” 为例拆解(60Hz 指每秒扫 60 帧画面)。
1、水平时序
1920x1080 的 “1920” 就是 “一行有 1920 个有效像素”。但主机发信号时,一行的总像素数不是 1920,而是比 1920 多—— 因为扫到行尾后,显示器的 “扫描电子枪”(或液晶驱动电路)需要时间 “从右回到左”,准备扫下一行,这个 “回位时间” 需要专门的 “同步信号” 来控制。
水平时序的核心参数(以 1920x1080@60Hz 为例):
| 参数名称 | 通俗解释 | 1920x1080@60Hz 典型值 | 为什么需要这个参数? |
|---|---|---|---|
| 水平有效像素 | 一行中能显示画面的像素数(左到右的有效画面) | 1920 | 决定 “一行画面有多宽”,比如 1920 就是 1080P 的宽度。 |
| 水平同步前沿(HSYNC Front Porch) | 扫完有效像素后,先等一小段时间再发 “回位信号” | 88 | 给显示器电路 “反应时间”,避免刚扫完有效像素就急着回位,导致画面边缘错位。 |
| 水平同步脉冲宽度 | 发 “回位信号” 的时间(告诉显示器 “该回左了”) | 44 | 明确告诉显示器 “现在开始回位”,这个信号必须稳定,不然显示器不知道啥时候回左。 |
| 水平同步后沿(HSYNC Back Porch) | 回位到行头后,再等一小段时间才扫下一行有效像素 | 148 | 给显示器 “准备时间”,确保回位到准确的行头位置,再开始扫下一行,避免画面偏移。 |
| 水平总像素 | 一行的总时间对应的像素数(有效 + 同步相关) | 1920+88+44+148=2200 | 决定 “一行的总时长”,进而影响刷新率(总像素越少,一行越快,帧率能更高)。 |
简单说:水平时序的逻辑是 ——扫有效像素(1920)→ 等一下(前沿 88)→ 发回位信号(脉冲 44)→ 再等一下(后沿 148)→ 扫下一行。
2、垂直时序(一帧画面的 “扫描节奏”)
1920x1080 的 “1080” 就是 “一帧有 1080 个有效行”(能显示画面的行数)。和水平类似,扫完一帧后,显示器需要时间 “从下回到上”,准备扫下一帧,这也需要垂直同步信号控制。
垂直时序的核心参数(以 1920x1080@60Hz 为例):
| 参数名称 | 通俗解释 | 1920x1080@60Hz 典型值 | 为什么需要这个参数? |
|---|---|---|---|
| 垂直有效行 | 一帧中能显示画面的行数(上到下的有效画面) | 1080 | 决定 “一帧画面有多高”,比如 1080 就是 1080P 的高度。 |
| 垂直同步前沿(VSYNC Front Porch) | 扫完有效行后,先等一小段时间再发 “回位信号” | 4 | 给显示器电路 “反应时间”,避免刚扫完一帧就急着回位,导致画面底部错位。 |
| 垂直同步脉冲宽度 | 发 “回位信号” 的时间(告诉显示器 “该回上了”) | 5 | 明确告诉显示器 “现在开始回位到顶部”,信号稳定才能保证回位准确。 |
| 垂直同步后沿(VSYNC Back Porch) | 回位到顶部后,再等一小段时间才扫下一帧有效行 | 36 | 给显示器 “准备时间”,确保回位到准确的顶部位置,再开始扫下一帧,避免画面上下偏移。 |
| 垂直总行数 | 一帧的总时间对应的行数(有效 + 同步相关) | 1080+4+5+36=1125 | 决定 “一帧的总时长”,进而影响刷新率(总行数越少,一帧越快,帧率越高)。 |
简单说:垂直时序的逻辑是 ——扫有效行(1080)→ 等一下(前沿 4)→ 发回位信号(脉冲 5)→ 再等一下(后沿 36)→ 扫下一帧。
3、刷新率
核心是 “主机发信号的时钟频率”。EDID 里要写清楚时序参数,主机通过该参数计算发送多快速度的信号,与显示器正确匹配
以 1920x1080@60Hz 为例:
- 水平总像素 = 2200,垂直总行数 = 1125,所以一帧的总像素数 = 2200×1125=2,475,000;
- 要达到 60Hz(每秒 60 帧),主机需要每秒发 2,475,000×60=148,500,000 个像素信号,这就是 “像素时钟频率”(148.5MHz);
- 显示器的硬件(比如驱动板、面板)必须支持这个 148.5MHz 的时钟频率,才能跟上主机的信号节奏 —— 如果显示器只能支持 100MHz,那 1080P@60Hz 就用不了,只能降刷新率(比如 50Hz,此时像素时钟会降低)。
「1920×1080@60Hz」显示模式为例,方便直观参考。
| 字节位置 | 参数大类 | 参数名称 | 核心含义 | 单位 | 典型值(1920×1080@60Hz) |
|---|---|---|---|---|---|
| 1-2 | 像素时钟 | Pixel Clock | 显示设备每秒处理的总像素数,是分辨率、刷新率计算的基础 | 10kHz(需 ×10) | 字节值0x5C 0x02(对应 148.5MHz) |
| 3-4 | 水平时序 | Horizontal Active Pixels | 画面水平方向实际显示的有效像素数(即横向分辨率) | 像素 | 字节值0x07 0x80(对应 1920) |
| 5 | 水平时序 | Horizontal Front Porch | 水平有效像素后,到同步脉冲前的空白像素段(用于信号稳定) | 像素 | 148 |
| 6 | 水平时序 | Horizontal Sync Pulse | 触发显示设备 “换行” 的同步信号像素段 | 像素 | 44 |
| 7 | 水平时序 | Horizontal Back Porch | 水平同步脉冲后,到下一行有效像素前的空白像素段(用于信号稳定) | 像素 | 148 |
| 8-9 | 垂直时序 | Vertical Active Pixels | 画面垂直方向实际显示的有效行数(即纵向分辨率) | 行 | 字节值0x04 0x38(对应 1080) |
| 10 | 垂直时序 | Vertical Front Porch | 垂直有效行后,到同步脉冲前的空白行数 | 行 | 3 |
| 11 | 垂直时序 | Vertical Sync Pulse | 触发显示设备 “换帧” 的同步信号行数 | 行 | 3 |
| 12 | 垂直时序 | Vertical Back Porch | 垂直同步脉冲后,到下一列有效行前的空白行数 | 行 | 32 |
| 13 | 时序控制 | Timing Type | 定义显示模式(如扫描方式、同步极性),0x80为当前主流的 “非隔行扫描” |
无(标志位) | 0x80(非隔行扫描) |
| 14-15 | 物理尺寸 | Horizontal Size | 显示设备的物理宽度 | 0.1cm | 字节值0x68 0x00(对应 108cm,即 43 英寸屏) |
| 16-17 | 物理尺寸 | Vertical Size | 显示设备的物理高度 | 0.1cm | 字节值0x3C 0x00(对应 60cm) |
| 18 | 有效性标志 | Timing Block Flag | 标识该时序块是否有效,0x00为无效,0x01及以上为有效 |
无(标志位) | 0x01(有效时序块) |
问题
本质是 “解决显示器的物理延迟和信号稳定性问题”
1:画面边缘 “切角” 或 “错位”
如果没有 “同步前沿 / 后沿” 的等待时间,显示器刚扫完一行有效像素,就立刻回位,电路反应不过来,会导致 “行尾的像素还没显示完就开始回位”,画面右边会被切掉一块;同理,回位到行头后不等,直接扫下一行,会导致 “行头的像素显示到上一行的末尾”,画面整体左移、错位。
2:画面 “撕裂”(最常见的不兼容现象)
如果主机发信号的节奏和显示器扫画面的节奏不匹配(比如主机发得快,显示器扫得慢),就会出现 “上半帧是前一帧的画面,下半帧是后一帧的画面”,中间有一条明显的撕裂线。
时序参数的作用就是 “强制同步”:主机必须按照 EDID 里的时序发信号,显示器按照时序扫画面,两者节奏完全对齐,就不会撕裂。
3:信号 “传丢” 或 “显示错误”
显示器的硬件(比如液晶面板)有固定的 “响应速度”,比如扫一行像素需要的最小时间、回位需要的最小时间。如果主机发信号的 “像素时钟频率” 超过显示器的硬件极限(比如显示器只能扛 100MHz,主机发 150MHz),显示器就会 “跟不上”,导致部分像素信号传丢,画面出现花屏、闪烁。
