最早的EDID版本,数据格式只有128个字节。
但是随着显示器的发展,功能不断增加,
128个字节已经无法满足显示器日益增长的发展需求,
因此,相关组织对EDID进行了扩展,定义了EDID扩展块来包含新的视频格式和多声道音频等功能
从EDID 1.3版本以及更高的版本开始,
每多一个扩展块,数据格式就多出128字节。
如图:0x7E地址中的字节就是扩展块的标志
0x01表示有1个扩展块,0x02表示有2个扩展块,以此类推增加
0x00表示没有扩展块。
这些扩展块有几种不同的结构,如下表
CEA-EXT:CEA 861系列扩展
VTB-EXT:视频时序块扩展
DI-EXT:显示信息扩展
LS-EXT:本地字符串扩展
DPVL-EXT:数字分组视频链路扩展
其中CEA-EXT是显示器最常用的EDID扩展结构。
CEA-EXT扩展有3个版本,
版本1:仅提供了一种提供额外详细时序描述符的方法。
版本2:该版本不再使用。
版本3:适用于大多数设备,是目前主流使用版本。
下面将以CEA-861的版本3来进行说明。
CEA-861-EXT Block的128 Byte,如下表所示:
DTD:Detailed Timing Descriptor(详细时序描述符)
常规的Data Block的类型有5个[1-5],还有一个扩展类型[7]
Bit[7-5]:确定Data Block的类型
Bit[4-0]:确定Data Block的length
如果 Tag Code为 7(扩展标签),则数据块的第二个字节就是扩展标签代码,它指示数据块的实际类型。
根据Data Block结构,首字节“0x49”—>“0100 1001”
bit7~5 = 010 = 2, 类型为Video Data Block
bit4~0 = 10001 = 9, 为Video Data Block长度,因此后面有9个字节
后面的字节为多个CEA short Video Descriptor,结构如下:
首个Video字节“0x90”—>“1001 0000”
bit7 = 1, 为Native Format = 1
bit6~0 = 0010000 = 16, 为1920x1080p的定义
第二个Video字节“0x05”—>“0000 0101”
bit7 = 0, 为Native Format = 0
bit6~0 = 0000101 = 5, 为1920x1080i的定义
后面第三~九的Video字节同理配置
根据Data Block结构,首字节“0x23”—>“0010 0011”
bit7~5 = 001 = 1, 类型为Audio Data Block
bit4~0 = 00011 = 3, 为Audio Data Block长度,因此后面有3个字节
后面跟的字节为CEA short Audio Descriptor,
每个CEA short Audio Descripto由三个字节组成,
所以当前Audio Data Block数量只有一个
Audio Format Code及CEA short Audio Descriptor结构如下:
当前这个CEA short Audio Descriptor由三个字节组成,
这3个Audio字节为“0x09”、“0x07”、“0x07”
第一个字节“0x09”—>“0000 1001”
Bit6~3 = 0001 = 3, 查表可知为Linear PCM
Bit2~0 = 001 = 1, Max Number channels 为1+1 = 2
第二个字节“0x07”—>“0000 0111”
查表可知频率为48KHz、44.1KHz、32KHz
第三个字节“0x07”—>“0000 0111”
查表可知位宽为24bit、20 bit、16 bit
③Speaker Allocation Data Block
根据Data Block结构,首字节“0x83”—>“1000 0011”
bit7~5 = 100 = 4, 类型为Speaker Allocation Data Block
bit4~0 = 00011 = 3, 为Speaker Allocation Data Block长度(固定为3)
后面跟的3字节,结构如下:
注:F为前置,L为左置,R为右置,C为中置,Fxx=0表示预留位
3个Audio字节为“0x01”、“0x00”、“0x00”
第一个字节“0x01”—>“0000 0001”
Bit7~0 = 0000 0001 = 1, 查表可知支持FL/FR的喇叭
后两字节为“0x00”,所以都不支持
Xk=,size_16,color_FFFFFF,t_70)
④HDMl Vendor Specific Data Block
根据Data Block结构,首字节“0x67”—>“0110 0111”
bit7~5 = 011 = 3, 类型为Vendor Specific Data Block
bit4~0 = 00111 = 7, 为Vendor Specific Data Block长度,所以后面跟7个字节
后面数据参照HDMI标准中的Vendor Specific Data Block结构来配置
根据Data Block结构,首字节“0xE3”—>“1110 0011”
bit7~5 = 111 = 7, 为扩展结构,所以具体扩展标签要查看第二个字节
第二字节“0x05”—>“0000 0101”
查Extended Tag Code表可知当前类型为Colorimetry Data Block
第三个字节“0x03”—>“0000 0011”
查表可知支持xvYCC709和xvYCC601
第四个字节“0x01”—>“0000 0001”
查表可知支持MD0
n是0x83地址设置 Native detailed time number 的数值
因为前面的0x83中的Bit[3-0]设置了n=1,所以目前只有一组DTD
没有用到的字节,默认用0x00填充
校验和的计算方式:前127个字节的和 + Checksum字节 = 0x00
也就是说这128个数的总和,是0x100的整数倍,即256的整数倍.
所以Checksum = 256 – (前127字节的和 % 256)