EDID的详细时序表是什么意思?

后端开发 2026-07-10

我正在为x86_64指令集架构构建一个操作系统。我开发已经到了一个阶段,想开始为用户进行图形显示,因此已经开始深入研究EDID表,以获取显示器的原生/首选/本机分辨率。虽然我能弄清楚如何获取分辨率本身,但EDID的“详细时序描述”部分的其他信息对我来说几乎毫无意义。参考Ralf Brown的中断列表,下面列出的项被定义为存在于详细时序描述结构中。

Offset  Size    Description
 00h    BYTE    horizontal frequency in kHz (if 00h, may be text)(see #00135)
 01h    BYTE    vertical frequency in Hz
 02h    BYTE    horizontal active time (pixels) and X resolution
 03h    BYTE    horizontal blanking time (pixels)
 04h    BYTE    horizontal active time 2 / horizontal blanking time 2
 05h    BYTE    vertical active time (lines) and Y resolution
 06h    BYTE    vertical blanking time (lines)
 07h    BYTE    vertical active time 2 / vertical blanking time 2
 08h    BYTE    horizontal sync offset (pixels)
 09h    BYTE    horizontal sync pulsewidth (pixels)
 0Ah    BYTE    vertical sync offset / vertical sync pulsewidth
 0Bh    BYTE    vertical/horizontal sync offset 2 / vert/hor. sync pulsewidth 2
 0Ch    BYTE    horizontal image size (mm)
 0Dh    BYTE    vertical image size (mm)
 0Eh    BYTE    horizontal image size 2 / vertical image size 2
 0Fh    BYTE    horizontal border (pixels)
 10h    BYTE    vertical border (lines)
 11h    BYTE    type of display (see #00134)
  1. 第二组水平/垂直有效时间的用途是什么?

  2. “同步偏移量”是什么?

  3. 为什么程序员需要/想要知道水平/垂直的“边界”?

我能理解像有效区/消隐时间等基本概念,但这些东西确实让我困惑。

我应该如何解读这张表?

解决方案

总的来说:在处理某个结构时,通常有助于查阅该结构的规范性文档。尤其在查看EDID信息时,阅读关于EDID的专门文档会更有帮助,因为每个具体的API(本例中是VBE)都可能无法提供对这些“外部”数据结构的详细描述。因此,查阅“VESA ENHANCED EXTENDED DISPLAY IDENTIFICATION DATA STANDARD”作为信息的一个不错来源。

现在让我们逐条回答你的问题。

  1. 第二组水平/垂直有效时间的用途是什么?

它不是“第二组”有效时间;所有带有“2”的字段其实是对各自字段的延续。8位字段不足以表示分辨率,因此每个字段再增加4 位,总共12位,使它们的表示范围足以覆盖高达4K的分辨率。

注意,根据EDID标准,这些描述的不是“有效区域”,而是“可寻址区域”(关于两者差异,请参见关于“边界”问题的回答)。

  1. “同步偏移量”是什么?

它描述水平/垂直同步脉冲在空白间隔中的精确放置。这是你通常不需要知道的东西,除非你直接在为显卡硬件寄存器编程。

  1. 为什么程序员需要/想要知道水平/垂直的“边界”?

边界描述了有效视频区域与可寻址视频区域之间的差异。显示器本身其实并不关心边界,因为它的唯一职责是显示有效视频;不过它确实提供了将抽象标准分辨率(如“640x480@60Hz”)映射到显卡应生成的具体视频信号时序的机制。真正关心边界尺寸的是显卡——它需要知道在每一行中何时开始把视频内存中的数据放到信号上。

例如,再看一次VGA的“640x480@60Hz”。标准VGA水平时序是:640个可寻址像素,144个消隐像素,总共800像素。有效区域为800-144=656像素,因此边界占用656-640=16像素,左右各8 像素。在该模式下,EDID应该有一个名为“h border”、值为8 的字段。

因此,如果你只是使用VBE函数切换到某个视频模式,你不需要了解这些;但如果你要直接为显卡编排时序,可能需要知道。或者,从这些时序中计算出一个精确的刷新率(这大概是 pixel rate / horiz total / vert total——你需要考虑边界来求总和)。

站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章