一、HDMI的连接
二、HDMI的HPD(热插拔)原理
HPD是从HDMI显示器端(Sink)生成并输出送往HDMI 源端(Source)的一个检测信号。
显示器与HDMI源端设备通过HDMI连接,HDMI源端从HDMI接口的HPD引脚中检测到显示器与HDMI源端的连接状态时,可通过HDMI接口显示设备的数据通道,读取到显示器中的存储数据。
当检测出显示器的工作模式和HDMI源端输出设置相匹配时,HDMI源端即可激活TMDS信号的发送电路,并向显示设备发送正常的HDMI信号。
如果显示器和HDMI处于断开状态,HDMI源端可通过HPD的引脚检测到显示器的HDMI接口和HDMI源端处于断开状态,那么HDMI源端就会立即停止向HDMI发送信号。
三、HDMI源端对HPD信号有什么要求?
HDMI源端检测到HDMI接口的HPD引脚的电压值大于2V时,即可判断出HDMI显示设备与HDMI源端已通过HDMI连接。而当HPD引脚的电压小于0.8V时,即可判断出HDMI显示设备与HDMI源端的连接处于断开状态。
HPD信号的状态通常是由HDMI的Sink端表现出来,由一个1K欧姆的电阻上拉到HDMI +5V,并且本地的主处理器也可通过GPIO来控制。
HDMI源端与HDMI 显示器端进行连接时,HDMI源端可通过HDMI的第18根引脚把+5V电压加到HDMI 显示器端中的DDC储存器中,并向DDC存储器中供电,使HDMI Sink启动。此外,HDMI源端也可通过HDMI接口的IIC引脚读取屏端EDID数据。
HDMI源端启动后生成+5V,并可通过第18根引脚向HDMI显示器端实现供电,当HDMI显示器接收到5V电压后,内部线路可以把HDMI接口的第19根引脚HPD转为高电平。
当HDMI显示器与HDMI 源端之间的HDMI连接断开时,HDMI 源端会检测到HDP信号为低电平,那么HDMI源端的TMDS信号发送电路将停止工作。
HDMI源端中的19Pin引脚可以接收到HPD的高电平,判断出HDMI显示器与HDMI源端处于连接状态,并通过HDMI接口的第15、16根引脚DDC通道,读取到显示器中的EDID数据,如果检测到显示器的工作模式范围与显卡相适应,激活HDMI源端的TMDS信号进行电路发送工作。
四、DDC通道(I2C)和CEC信号
1)DDC通道(I2C)
DDC:Display Data Channel。作用:告诉主机,显示器的生产厂商、生产日期、支持分辨率等信息。
DDC目的:实现即插即用。
EDID(Extended Display Identification DATA,即扩展显示识别数据),最初是为PC显示器设置的优化显示格式而设计的规范,存储在显示器专用的1Kb的EEROM存储器中(即EDID数据结构是128Bytes)。
HDMI接口在数字电视中的EDID数据结构,与PC显示器的最大区别是编程数据可以是128Byte的倍数,它不仅规定数字电视显示的格式,也规定数字视频信号和数字音频信号,基本的128Byte以外的数据都是附加数据,在基本数据的第127个字节定义EDID的附加数据块数量。
2)CEC信号
CEC:Consumer Electronics Control,消费类电子控制。通过CEC信号让用户可以控制HDMI接口上所连接的装置。如单键播放(One Touch Play),系统待机(System Standby)。即是如果用户将影碟放进蓝光播放器时,电视会由于CEC信号的通知而自动开机,然后视频通道亦会自动切换到播放器连接的通道上。而当用户关掉电视时,CEC信号亦会通知HDMI相连接的装置一同进入待机(如果不进入待机,该引脚一定要为高电平)。由于这样,所以就可以完全变成单一遥控器控制所有HDMI连接的装置。
综上所述,当HDMI线插到设备后,HPD引脚会被拉高,发送信号端检测到这个高电平信号后才会发送HDMI信号。当HDMI传输高速数字信号时,为了支持较高的传输速度,发送器与接收器的芯片都会采用抗静电技术保护电路。但一些技术不过关或偷工减料的HDMI传输线,由于没有合理的防静电设计或者是绝缘性能处理不科学,就容易导致产生热插拔损坏设备的情况发生。所以,选购专业光纤线品牌产品很关键。
五、HDMI工作原理
HPD(Hot Plug Detection),在HDMI的一对联接中,为热插拔的实现而设计的。简单地说,当发送端接入接受端时,接受端会回应HPD信号给发送端,进而发送端会启动DDC通道,而读取接受端EDID的信息,然后进行HDCP的交互,如果双方认证成功,则视频、音频正常工作,否则联接失败,不同系统会有不同的处理。
例如,如果EDID信息不支持HDMI,则发送端只发送视频信息,而没有音频信息,这时候的HDMI就只相当于DVI了;如果HDCP认证不成功,有的系统会出现雪花屏幕和噪音,有的系统会由高分辨率(1080I、720P)降低为低分辨率(480I、480P)而输出,这样一来,HDTV就不再是HD了,而变成了普通的SD。
HDMI线缆连接后,SINK端在没有检测到5V_DET前以及READY前都会保持输出HPD为LOW电平,SINK端在检测到5V_DET为高电平后,开始初始化,通常花费数百ms,然后切换HPD为高电平,Source端检测到Sink READY,开始初始化。
HDMI源端启动后生成+5V,并可通过第18根引脚向HDMI显示器端实现供电,当HDMI显示器接收到5V电压后,内部线路可以把HDMI接口的第19根引脚HPD转为高电平。
六、HDMI电路
1、HPD电路
状态检测,是输入状态还是输出状态
2、IIC双向转换电路
隔离是保证HDMI接口的电压不会影响开发板的电源,比如没有这个隔离电路,那么HDMI接口的3.3V电压直连到开发板的3.3V电源,如果在板子上电之前将外部的HDMI线连接到FPGA开发板上,外部仪器给HDMI接口供电,会导致电压倒灌到开发板内部,导致一些3.3V连接的LED之类的器件工作,但开发板此时还没供电,就会很奇怪。
3、信号部分上拉49.9R到3.3V
4、ESD防护电路
5、HDMI的Layout规则
HDMI座子尽量与芯片之间最短,从而使衰减最小化。为了使差分信号正常传输,因为不同电气长度的走线会引起信号之间的相移,也会导致严重emi,理想情况下,四对差分走线走线长度应该相等,
四组差分走线对内误差最好做到 5mil 范围之内,对与对的差分误差最好控制在 10mil 范围之内。同时,对与对之间的间距要求做到 20mil,空间充足的情情下,差分对尽量包地处理。当差分长不同时,我们采用在走线终点不匹配的地方进行绕线。差分对尽可能走TOP、BOTTOM。当差分需要当过孔时,我们尽可能在过孔的附近打下地孔。
6、HDMI的硬件设计
一般来说,接口都会人手接触,因此需要加ESD保护器件,TMDS上使用专用ESD保护,其他信号使用普通ESD。另外,为了通过EMC测试,TMDS需要串接共模电感。
7、HPD的电路设计
拉低Q4,使得设备自动进行一次training
由于在判断HDMI Sink端的HPD电路预留了一个控制端,如果HDMI Sink端的主处理器需要复位HDMI链接(包括重新HDCP握手认证),就可以拉低并再次拉高HPD来实现这个功能。
如前面介绍EDID时所述,HDMI规范规定,发送设备要检测接收设备的第一个CEAEDID 扩展块中是否包含HDMI VSDB,这个HDMI VSDB中是否包含IEEE 数据标识符0x000C03,只有包含这个数据标识符的设备,才会被认为是HDMI设备,否则,被当作DVI设备处理。
一个HDMI设备的EDID 通常包含两个模块,第一个是EDID1.3的数据模块,第二个是CEA 861B模块,这个861B模块中,一定要包含数据标示符0x000C03。HDMI发送设备(Source)检测到HPD 信号由低变高时,就会去读取Sink端的EDID数据,来确认接收装置是否出现变化,并确定是工作在HDMI模式还是DVI模式。
如果EDID内容发生改变,HDMI规范要求接收设备/中继设备复位HPD信号至少100us,以便源设备重新读取EDID信息。(这在处理中要注意)
七、故障处理
1、显示器传来的HPD不稳定
在实现过程中再次发现FPGA输出给显示器HDMI信号时,从显示器传输过来的HPD信号竟然会不稳定,周期性的发生跳变。
纠结了半天,突然想起这个问题以前也是遇到过的,当时的情况是这样的:由于HDMI输出的PLL配置错误(隐约记得是时钟频率比较高,PLL在反复配置),测试过程发现HDMI的接收到来自显示器的HPD信号竟然周期性跳变,虽然也怀疑过是HDMI输出座子有问题,但是经过更换也不能解决。最后把时钟的问题解决之后,HPD信号也随之正常。
今天的实验现象:下载官方的Demo直接环出的程序(其实管脚是重新配置过的,时钟也是完全一致的),当插入HDMI输入源时,HDMI输出的HPD信号出现周期性的跳变,造成一段时间内不能正常输出,但是一段时间之后会稳定并输出画面。
个人分析:因为刚插入HDMI源时信号不稳定,时钟也不稳定,输出部分的时钟也是由源的TMDS_CLK提供的,也是一样不稳定,这样就与以前的情况相似,就是因为PLL不稳定输出,造成HPD信号不稳定。
不明白为什么显示器会出现这样的情况,只有了解了显示内部处理HPD的原理之后才能解释清楚了。
2、HDMI点屏不了
现象:电路板一周前能够点亮,但是今天再点,HDMI接口屏幕不亮
措施:
1)测试HPD信号,是正常的
2)测试IIC波形,SCL引脚没有波形,怀疑是FPGA未输出
3)剔除IIC的电平转换芯片,波形又出现了,怀疑是屏端侧到该点位的路径有短路
4)逐步向屏端转移,剔除0R/33R等串接电阻,逐个排查
原因:双层HDMI的座子,因为引脚紧密,导致SCL引脚短路接GND,很奇怪,估计之前也有接触,不过没有完全触碰,后面有人使用或放置,引起焊锡触碰短路。