1.EDID是什么?
EDID(Extend Display Identification Data)扩展显示器识别数据,是VESA在制定DDC(Display Data Channel)显示器数据通道通信协议时,制定的有关显示器识别数据的标准。其中包含有关显示器及其性能的参数,包括供应商信息、最大图像大小、颜色设置、厂商预设置、频率范围限制以及显示器名和序列号的字符串。
VGA、DVI的EDID由主块128字节组成,HDMI的EDID增加扩展块(128字节),扩展块的内容主要是和音频属性相关的,DVI和VGA没有音频,HDMI自带音频,扩展块数据规范按照CEA-861x标准定义,未来可能增加到512或256的整数倍。
目前使用比较广泛的版本是EDID1.3。自EDID1.3后,VESA又制定了E-EDID(增强型EDID)和EDID2.0标准,其数据容量也扩大为256Byte,但这不是强制性标准,仍然可以使用EDID1.3。
2.EDID作用
形象地说,EDID就是显示器的身份证、户口本、技能证书等证件的集合,目的就是告诉别人我是谁,我从哪来,我能干什么。
使用EDID是为了让PC或其他图像输出设备更好地识别显示器属性。EDID并非古而有之,在古老的CRT时期是没有EDID这个概念的,那为什么后来会有呢?因为随着显示设备的发展,显示器的种类越来越多,模拟的、数字的、普屏的、宽屏的、17寸、19寸、22寸……这让PC傻了眼,分辨率和时序的种类太多了,而每种显示器又不可能支持所有的分辨率,那怎么知道该给显示器一个什么样的分辨率啊?显示出的效果是最佳效果吗?不仅如此,随便输出一个分辨率还有损坏显示器硬件的可能,这可太危险了。于是,EDID临危受命,担当起显示器和PC之前的传话筒。“PC你好,我是A显示器,我能显示N种分辨率,最佳分辨率是XXX”。“显示器你好,收到你的信息,现在就按最佳分辨率给你输出”。这下大家明白了吧,EDID就是为了能让PC或其他的图像输出设备更好的识别显示器属性而出现的。
每个显示器有可能有多个EDID。现在的显示器功能很强大,通常都提供多种视频接口,常见的有DVI、VGA、HDMI、Display Port等,由于每种接口的特性和带宽不同,使得不同接口的EDID也不同。使用哪个接口,PC读到的就是哪个接口的EDID。我们的设备主要使用DVI、VGA、HDMI几种接口。由于VIDEO接口的几种制式如PAL、NTSC等,其分辨率场频都是固定的,没有使用EDID的必要,故不在讨论之列。
3.EDID传输
EDID信息有多种存储方式,常见的如I2C接口的EEPROM,另外很多DVI、HDMI解码芯片都集成EDID存储。显示端存储着与其对应的EDID信息,Host端去获取,获取到后得知显示端的最佳输出方式,Host就按照最佳方式输出图像到显示端。
EDID数据通常是由DDC通道(类似I2C)来传输,比如HDMI/DVI接口。也有通过AUX来传输,比如DP/eDP接口。大多数的显示接口都支持这种读取EDID方式来获取屏幕参数,但并不是所有,比如MIPI接口。
在DVI接口中,PC是通过DDC Clock和DDC Data针脚读取显示设备的EDID信息的,而触发PC去读取EDID是通过Hot Plug Detect针脚来实现的。PC识别EDID的顺序如下:
(1)Hot Plug Detect:当PC检测到Hot Plug Detect针脚的电平由低变高后,就会去读取EDID信息。
(2)Get EDID Information:PC通过DDC通道,按照I2C的数据格式连续读取EDID数据。
(3)Video Output:当PC获取到正确的显示设备信息后,就会按照推荐的分辨率输出信号,否则不输出。
4.屏幕参数及Timing
EDID规格书中对屏幕参数示意如下。
屏幕规格书中相关参数
屏幕刷新率
刷新率计算公式:刷新率 = (Pixel Rate) / (Pixel Count)
一般情况下,刷新率是可以微调的。如在上图中,Pixel Rate参考值是156.8Mhz,最大159.9Mhz。如果按照参考值来算刷新率,可得到:
刷新率 = 156800000 / (1343 * 1946) = 59.997,系统下显示出来的刷新率可能还带着小数点,显得不大好看。所以计算的时候,可以用像素数乘以刷新率来得到像素速率,即:
Pixel Rate = (Pixel Count) * (Refresh Rate) = (1343 * 1946) * 60 = 156808680,此时系统下便可显示完整的刷新率60。
X86平台VBT DTD Timing配置例子
BOE NV126A1M-N51 Preliminary Product Specification
Horizontal Sync = H Sync Pluse width
Horizontal Front Proch = Hor Sync Offset
Horizontal Blank = Horizontal Front Proch + Horizontal Sync + Horizontal Back Proch
5.EDID相关工具
5.1编辑工具
EDID的编辑工具介绍几种
(1)Phoenix EDID Designer
(2)Deltacast E-EDID Editor
查看工具有很多,如HE、RW都可以查看。
5.2烧录工具
EDID信息有多种存储方式,常用的如I2C接口的EEPROM,另外很多DVI,HDMI解码芯片都集成EDID存储。这里用Microchip的24LC04B器件举例。使用的烧录工具是Minpro100B或Minpro100E,在淘宝上均有卖,相关烧录软件和驱动都有提供。
烧录时只需将芯片4,5,6,8脚与烧录器的对应脚连接即可。
打开编程器软件后界面如下,如连接到芯片会有提示信息。然后打开.bin文件,点击烧录即可。
6.EDID获取方式
想研究一下那些EDID工具是通过什么方式获取EDID的,但在网上没搜到什么资料。只看到可以通过注册表查看显示器的EDID,先记录一下。
(1)打开注册表
(2)路径:计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\DISPLAY
选择要查看的显示器,选择Device Parameters,可以看到EDID
如下图:
参考文章
显示器视频显示核心EDID的解密和解析
BIOS开发笔记 6 – 液晶显示器
EDID编辑器介绍
注册表查看显示器EDID