HDMI之EDID分析

HDMI(HighDefinitionMultimediaInterface),作为新一代数字多媒体接口,能够传输高速率无压缩的数字音频、视频数据,HDMl1.2像素时钟可达165MHz,数据速率达到4.95Gbps,而HDMl1.3像素时钟则高达340MHz,数据速率达到10.2Gbps。目前高清1080p的数据带宽是2.2Gbps,HDMI完全可以用在高清图像传输中。事实上,目前高清图像传输也大多数选用此接口。HDMI也已成为消费类电子的接口标准,在数字摄像机以及数字电视中广泛使用。
  EDID是VESA组织制定的PC显示器的显示格式数据规范,是HDMI接口的一个重要组成部分。HDMI接口的发送端和接收端,通过EDID(ExtendedDisplavIdentificationData)来协商双方传输的图像格式。发送端通过读取接收端的EDID数据,来判断接收端是否为HDMI设备。EDID发展到现在已有很多版本,EDID1.3是目前广泛使用的数据格式。
  本文结合HDMI规范,通过分析和设置EDID数据,使HDMI设备收发双方正确协商出高清图像格式,实现高清图像的传输。
  
  HDMI介绍
  
  一个HDMI系统包括发送装置和接收装置两部分,图1所示是HDMI系统结构图。通过3个TMDS通道,1个TMDS时钟通道,实现HDMI收发设备问音频、视频数据以及辅助数据的传输。
  TMDS(TransitionMinimizedDifferentialSignaling)的意思是传输最小化的差分信号。此技术在DVI设备中已经被使用。TMDS运用先进的编码算法把8bit数据(R、G、B中的每路基色信号)通过最小转换编码为10bit数据(包含行场同步信息、时钟信息、数据DE、纠错等),经过DC平衡后,采用差分信号传输数据,接收端在收到信号后,再将10bit数据解码成8bit的数据。它和LVDS、TTL相比有较好的电磁兼容性能,可以用低成本的专用电缆实现长距离、高质量的数字信号传输。
  
  DDC(DisplayDataChannel)通道用于HDMI发送和接收端之间交换一些配置信息。发送端通过DDC通道,读取接收端保存在EEPROM中的EDID数据,获取接收端的信息,确认接收端终端显示的设置和功能,决定跟接收端之间以什么格式传输音视频数据。
  CEC(ConsumerElectronicsContr01)通道是可选通道。通过CEC通道,可以实现一些音视频设备间的高级控制功能,比如支持视频源和数字电视间的双向通信,实现单键按下同时开机、自动上电、自动信号路由、远程控制等功能。
  
  E-EDID数据结构
  
  E-EDID是VESA组织定义的一种数据结构,是为PC显示器设置的优化显示格式数据规范,它存储在显示器中专用的EEPROM存储器中,数据结构是128Byte,PC主机和显示器通过DDC通道访问存储器中的数据,以确定显示器的显示属性,如分辨率、纵横比等信息。此数据结构被HDMI采用,在HDMI规范中,同样使用DDC通道访问EDID存储器,以确定显示设备的功能和属性。
  HDMI规范规定,EDID的第一个128Byte必须是符合EDID1.3的数据结构,第二个128Byte必须是符合EIA/CEA-861B的CEAEDID时序扩展数据结构。
  1)E-EDID数据结构
  如图2所示,是EDID1.3数据结构及其字段详细说明。
  2)CEA-861B数据结构
  如图3所示,是CEA861B数据结构各字段详细说明。
  
  EIA/CEA861B规范规定,CEAEDID数据传输的第一个时序扩展段中要包含VSDB信号。就是HDMIVendorSpecificDataBlock(HDMIVSDB)。这是一个EIA/CEA-861BVendorSpecificData数据块。包含一个24位的HDMI数据识别符(IEEERegistrationIdentifier)0x000C03,一个HDMI批准、许可的数据值。为了测定接收端是否是HDMI设备,HDMI源设备需要检测接收端设备的EDID数据传输扩展时序中,是否存在这个VSDB数据块(由HDMI设备制造厂商根据协议制定并提供的)。任何一个HDMI设备都会自动响应一个HDMIVSDB,这是一个合理长度的数据表述,含及IEEE注册、登记的标识符:0x000C03,只要HDMI源设备接到这个标示符相关数据的响应,就将接收端设备认定为HDMI设备。否则,HDMI规范指定:任何接收端设备在E-EDID数据传输时不回传包含这个HDMIVSDB,即合理长度的HDMI数据标识符的响应。就会被认为所连接的是DVI设备。
  
  HDMI高清图像传输中EDID的设置
  
  HDMI接口具有热插拔功能,发送设备检测到HPD信号为低时,去读取EDID的数据,来确认接收装置是否出现变化。
  HDMI规范规定,发送设备要检测接收设备的第一个CEAEDID扩展块中是否包含HDMIVSDB,这个HDMIVSDB中是否包含IEEE数据标识符0x000C03,只有包含这个数据标识符的设备,才会被认为是HDMI设备,否则,被当作DVI设备处理。
  一个HDMI设备的EDID通常包含两个模块,第一个是EDIDl-3的数据模块,第二个是CEA861B模块,这个861B模块中,一定要包含数据标示符0x000C03。
  下面以实际工作中的EDID为例,对EDID来做一些说明。如图4所示。
  
  图4中,0x00-0x7F,这是EDID第一段,EDID1.3的数据结构,从最后两个字节看,0x7E地址处的数据01H表明其后还有一个扩展段,0x7F处的81H则是第一段EDID的校验字段,第一段EDID所有128Byte加起来为0。
  0x00-0x07处的字段,是EDID的数据头,0x12-0x13处的0103表明EDIDversion1,revision30x36-0x47的字段,是第一个详细时序描述,011D80….这是1080i的详细描述符。0x48-0x59,这是第二个详细时序描述,8C,0A…这是480p的详细描述符。从0x5A开始是非时序描述块。000000FC00表明接下来的数据是监视器的描述,此处的48444D49表明是HDMI。接下来00000000FD00表明是监视器可接收信号范围描述符,这是在GTF标准里要求的。FC、FD标志表明的数据块,必须是13个字节,如果不够13个字节,则最后一个有用字节后紧跟0AH,其余填充20H,比如这里0x66-0x68的数据。
  0x80-0xFF,这是EDID第二段,也是CEA861B模块。从图上可以看出,包含有0x000C03的标识符。EDID第二段,必须包含此字符,否则,此设备会被当作DVI设备处理。同第一个EDID模块,0xFF处的1A是第二段EDID的校验:手段,第二段EDID所有128Byte加起来为0。同第一段的EDIDl.3不同的是,在CEA861B模块中,不用的字段可以填充0。所以从图上看,第二段EDID数据有很多O。
  0x83字段的19H,表明视频格式详细描述符的开始是从0x19处开始的。0x85处的数据85H,表明1080i图像格式,是此接收设备固有的特性,其中5,是1080i视频格式的短描述符。
  
  结语
  
  HDMI以其优异的性能被广泛使用在高清图像传输中,HDMI双方以什么方式传输图像,依赖于接收端EDID数据结构的内容。EDID数据决定了接收端显示设备的属性。发送端靠从接收设备读来的EDID,判断监视器的属性,决定用什么方式传输图像。如果EDID设置不正确,系统就有可能不能识别HDMI设备,不能以高清格式传输图像。因此,EDID的设置至关重要。

你可能感兴趣的:(linux驱动,数据结构,byte,扩展,存储,算法,c)