高清多媒体接口(HDMI)EDID规范详解
1. 引言
1.1 术语定义
- HDMI
High-Definition Multimedia Interface, 高清晰度多媒体接口,是一种数字化音视频技术,适合影像传输的专用型数字化接口 - EDID
Extended Display Identification Data,是有VESA定义的标准数据格式,包含有关监视器及其性能的参数,包括供应商信息,最大图像大小,颜色设置,厂商预设置,频率范围的设置以及显示器名和序列号的字符等 - Source
HDMI交互中的源端,有时候也写作Host Device,例如机顶盒等 - Sink
HDMI交互中的终端,有时候也写作Display Device,例如显示器等 - VESA
Video Electronics Standards Association,视频电子标准协会
1.2 EDID来源
EDID是VESA定义的标准数据格式。早期显卡没有标准办法简单获取到显示器的性能参数,一些VGA应用时使用部分管脚传输显示器性能信息,但这不是标准的、统一的,故推出EDID标准。在2006.9推出EDID v1.4版本。
2. HDMI1.4b的EDID规范详解
2.1 Block0内容详解
2.1.1 Header Infomation头信息(厂商信息、EDID版本等)
包含20Bytes,前8个固定写00 FF FF FF FF FF FF 00;9-10两个Bytes写厂商名字,包含三个字母,需要参照微软定义的PNP ID(http://www.uefi.org/pnp_id_list);11-12两个Bytes写Product Code;13-16四个Bytes写序列号;17 Byte写出厂周;18 Byte写年份;最后两个Bytes是EDID版本,一般填写0103,表示Version1 Revision3
2.1.2 Basic Display Parameters and Features 基本显示参数(数字/模拟接口、屏幕尺寸、格式支持等)
共5 Bytes,第1个Byte是视频输入参数信息:
第2/3个Bytes填写纵向、横向屏幕尺寸,单位cm,前投影机可以填写0000h,第4个Byte填写Gamma值(约定俗成的,显示器Gamma一般是2.2),最后一个Byte是Supported Feature信息:
2.1.3 色度信息
共10 Bytes,定义内容如下:
2.1.4 Established Timings(VESA定义的电脑使用Timings)
共计3 Bytes,至少支持640480P60Hz,也就是第1个Byte的第3个Bit,所以常见的200000h就是只支持640480P60Hz
每个Byte中的数据对应关系如下:
2.1.5 Standard Timings(01为填充,未定义Timing)
2.1.6 Detailed Timing Descriptor Block
拆分为4组Block:First Detailed Timing Descriptor, Second Detailed Timing Descriptor, First Monitor Descriptor(Monitor Name),and Second Monitor Descriptor(Monitor Range)
- First Detailed Timing Descriptor:共计188 Bytes,前17 Bytes描述Timing信息,最后一个Byte是Flag;(例如Flag 18h表示:Non-interlaced,normal display no stereo,digital separate, V. and H. sync polarity is negative)
Data Type标志位的意义,参见VESA E-EDID标准的3.10.3,如下:
- Second Detailed Timing Descriptor:共计18 Bytes,前17 Bytes描述Timing信息,最后一个Byte是Flag;例如示例EDID的Second Detailed Timing Descriptor,4B位写FEh,表示ASCII数据
- First Monitor Descriptor(Monitor Name):共计18 Bytes,前三个Bytes是Flag,填写000000h表示这个Block被用作Descriptor,第4个Byte是描述Data Type Tag;第5个Byte是Flag,填写00h表示这个Block被用作Descriptor,剩下的是Monitor Name,用ASCII码,最多13个Bytes,如果不到13 Bytes,用0Ah结尾,20填充剩余的Byte
- Second Monitor Descriptor(Monitor Name):共计18 Bytes,前三个Bytes是Flag,填写000000h表示这个Block被用作Descriptor,第4个Byte是描述Data Type Tag,填写FDh表示剩余的13 Bytes包含Monitor Range limints;第5个Byte是Flag,填写00h表示这个Block被用作Descriptor;接下来5个Bytes用来写最大/最小横向/纵向频率、最高像素时钟(the minimum and maximum parameters for horizontal and vertical frequencies, and maximum pixel clock);接下来一个Byte是Tag,填写00h表示没有secondary timing formula;最后的7 Bytes,取决于上一个Byte的Tag,当为00h时,用0Ah开头,20h填充剩余的Byte