高清晰度多媒体接口(HighDefinition Multimedia Interface,HDMI)是一种数字化视频/音频接口技术,是适合影像传输的专用型数字化接口,其可同时传送音频和影像信号。(在DVI的基础上推出的)同时无需在信号传送前进行数/模或者模/数转换,可以保证最高质量的影音信号传送。
HDMI有A,B,C,D,E五种引脚类型,目前市面中比较常见的就是Type A:
- 1-9 都是TMDS数据传输实际上用到的引脚,分为0,1,2三组传输通道
- 10-12 为TMDS时钟信号,如当前Video Timing为480p@60Hz(Htotal:800,Vtotal:525),则TMDS clock = 800x525x60 = 25.2MHz。TMDS clock就像是对像素的打包,一个clock分别在三个Channel传输一个像素的R、G、B(8bit)信号。
- 13 为CEC(consumer electronic control)类似一种扩展的HDMI功能,供厂家自己定制HDMI消息,(比如说你有一台sony的DVD与TV,两者用HDMI线接上,如果你用TV的遥控器可以控制DVD,另DVD执行某种功能,那么该功能的命令信号就是通过TV与DVD间的CEC引脚传输的)
- 14 为保留引脚,未使用(或者也可以为CEC提供多一个引脚)
- 15-16 为I2C引脚,用于DDC(Display Data Channel,主要用于EDID与HDCP的传输)传输,具体可以了解下 IIC.。在HDMI的流程中,DDC通信几乎是最先做的(前有Hotplug),因为HDMI的主从两个设备需要通过DDC来获得他们对方设备的EDID,从而得到各种信息,并且通过比较timming以确定以后送出来的timming为最合适的
- 17 为接地引脚
- 18 为5v的AC引脚
- 19 为Hotplug(热拔插)引脚(用于监测HDMI设备有没有存在,如果存在(Hotplug为high)那么可以通过DDC去读EDID),HDMI有规定在HDMI 5vAC断电时source device可以读reciever device的EDID,也就是需要Hotplug为High。其中有两种Hotplug相关的情况会导致HDMI被识别为DVI:
1.Hotplug为High,不过EDID并没有准备好,那么信号源设备会由于无法读到EDID而认为接收设备为DVI,这样会导致HDMI有图像无声的问题。
2.Hotplug为Low,也会导致信号源无法读到EDID而认为接收设备为DVI,从而导致HDMI有图无声
3.在TV这种有多个HDMI通道的情况下,有时会在多个HDMI通道进行切换,切换后HDMI通道应当先初始化,即先把Hotplug拉低,通知HDMIsource device之前所用的EDID已经改变,需要重新读取,那么source device在Hotplug被拉高的时候会去读取新的EDID,但是拉低这个过程至少需要100ms,否则source device有可能不会去读取新的EDID,从而输出DVI信号
DDC(Display Data Channel)通道用于HDMI发送端和接收端之间交换一些配置信息及HDCP密钥的交流。发送端通过DDC通道,读取接收端保存在EEPROM中的EDID数据,获取接收端的信息,确认接收端终端显示的设置和功能,决定跟接收端之间以什么格式传输音视频数据;通过HDCPKey的交流,可以实时的进行数据流的内容保护认证,从而达到数据内容保护的目的
CEC(Consumer Electronics Control)通道是可选通道。通过CEC通道,可以 实现一些音视频设备间的高级控制功能,旨在允许用户通过仅使用一个遥控器来命令和控制HDMI连接的设备。它是一种单总线双向串行总线,基于CENELEC标准AV.link协议,可执行远程控制比如支持视频源和数字电视间的双向通信,实现单键按下同时开机、自动上电、自动信号路由、远程控制等功能。
EDID(Extended DisplayIdentification Data)扩展显示标识数据,是VESA组织制定的PC显示器的显示格式规范。EDID中几乎包含所有有关显示器及其性能的参数,包括供应商信息、最大图像大小、颜色设置、厂商预设置、频率范围的限制以及显示器名和序列号的字符串。这些信息保存在显示器的EEPROM中,通过一个 DDC与系统进行通信。这是在显示器和PC图形适配器之间进行的。一个HDMI设备的EDID通常包含两个模块,第一个是EDID1.3 的数据模块,第二个是CEA861B模块。HDMI规范规定,EDID的第一个128Byte必须是符合EDID1.3的数据结构,第二个128Byte必须是符合EIA/CEA-861B 的CEAEDID时序扩展数据结构。
TMDS:每一个TMDS链路都包括3个传输RGB信号的数据通道和1个传输时钟信号的通道。每一个数据通道都通过编码算法,将8位的视、音频数据转换成最小化传输、直流平衡的10位数据,然后再进行串行化输出。最小化传输差分信号是通过异或及异或非等逻辑算法将原始8位信号数据转换成10位,前8为数据由原始信号经运算后获得,第9位指示运算的方式,第10位用来对应直流平衡。
一般来说,HDMI传输的编码格式中要包含视频数据、控制数据和数据包(数据包中包含音频数据和附加信息数据,例如纠错码等)。TMDS每个通道在传输时要包含一个2bit的控制数据、8bit的视频数据或者4bit的数据包即可。在HDMI信息传输过程中,可以分为三个阶段:视频数据传输周期、控制数据传输周期和数据包传输周期,分别对应上述的三种数据类型。
HDCP的保护原理:HDCP技术在影音内容的整个传送过程中都实施了保护。例如在电脑平台上,受到HDCP技术保护的影音内容在输出时,微软操作系统中的COPP(认证输出保护协议)驱动首先会验证显卡,只有支持HDCP的显卡才能实现内容的输出;随后操作系统会认证显示设备的密钥,只有符合HDCP要求的设备才能最终显示显卡传送来的影音内容。
在整个传输过程中,发送端和接收端都存储了一个可用密钥集,这些密钥都被秘密地存储起来,发送端和接收端根据密钥进行加密解密运算。在加解密运算中还要加入一个特别的值——KSV(密匙选择矢量)。支持HDCP的每个设备都会有一个唯一的KSV序列号,发送端和接收端的密码处理单元会核对对方的KSV值,以确定连接是合法的。其详细过程为:发送端会由自己的密码引擎产生一个64bit的伪随机序列,并将其和自己的KSV同时发送给接收端。接收端会随后反馈回自己的KSV和Repeater位。两个KSV必须符合正确的格式,都由20个0和20个1组成。发送端和接收端的密码处理单元会独立地计算出各自的R0、Mo和Ks的值,然后将两个R0值进行比较,只有在两者完全吻合的情况下才会通过认证。在加密过程中,HDCP会对每个像素进行处理,使画面变得毫无规律、无法识别。而只有相互认证同步后的发送端和接收端才能进行解密运算,还原数据。
HDMI TMDS传输的数据类型有三种(加上Hsync与Vsync就算4种):
- Preamble(控制信息),主要用于控制接下来传输的数据是Data Island或者Video Data
- Data Island(数据包),各种类型的包信息,包括音频数据包,图像信息包等
- Video Data(视频信息),视频像素数据,HDMI可以传输RGB与YUV两种格式的像素数据
- 如果传输的是Video Data,并且格式为RGB,那么会占用三个通道的所有24bit输入,Channel0[7:0]用于传输B,Channel1[7:0]用于传输G,Channel2[7:0]用于传输R。
- 如果传输的是Data Island,则占用三个通道共10bit输入,Channel0[3:2]用于传输Data Island Header(包头),Channel1[0:3]与Channel2[0:3]用于传输Data Island Content(包内数据)。
- 如果传输的是Preamble,则占用1,2两个通道共4bit输入,Channel1[1:0]与Channel2[1:0]分别为CTL0,CTL1,CTL2,CTL3,用于判断接下来输入的是Video Data或者Data Island
- 对于Hsync与VSync,会占用Channel0通道的两个bit输入,Channel0[0]为Hsync,Channel0[1]为Vsync
HDMI1.3版本以前电路中的时钟频率在最初制定时范围在25MHz-165MHz之间,也就是说一个TMDS通道每秒最多能传输165MHz×10bit=1.65Gbit的数据,(10bit里包含8位颜色数据、2位控制数据)3个TMDS通道一秒就可以传输1.65×3=4.95Gbit的数据,再加上控制数据,用标准方法表示就是4.96Gbps的带宽。而如果用像素点来表示,那就是一秒可以传输显示1.65G个像素点(一个完整的像素点信息由R/G/B三原色信息构成)所需要的数据量。而HDTV最高标准:像素位1920*1080,逐行扫描,帧频为30,假设每帧扫描两次,在1秒内的图像数据量1920×1080×30×2=1.25G像素点。另外还有音频数据和其他数据。由此可见,一个TMDS链路可以传输一个高清节目。
从HDMI1.3版本开始,时钟提高到340MHz,支持24bit/30bit/36bit/48bit的色深。假设采用24bit色深,每通道传输10bit。则一个HDMI连接的数据率为340MHz×10bit×3=10200Mbps=10.2Gps。如果采用30bit色深,则数据率为12.24Gbps。如果采用36bit色深,则数据率为14.28Gbps。如果采用48bit色深,则数据率为18.36Gbps。一般情况下,30bit色深已经达到人类眼睛所能分辨的色彩的极限,36bit/48bit色深只是具有象征意义。不过需要注意的是,不同比特的色深只是通过增加传输的数据量来提供更加丰富的色彩,如果用像素点来表示的话,仍然是1秒钟传输340M个像素所需的数据量。
以1080P/60Hz为例。每帧像素数为1920×1080=2073600(约为2.074M)个。刷新率为60Hz,则每秒需要信息的像素次数为2073600×60=124416000(约为124.42M)个,需要的数据量为124416000×10bit×3=3732480000(约为3.74Gbit)。由前面的计算可知,HDMI最初标准的数据率可以达到4.95Gbps,所以用起来绰绰有余。
在HDMI信息传输过程中,可以分为三个阶段:控制数据传输周期、数据包传输周期和视频数据传输周期。
一帧的总体周期如下:
参考链接HDMI的基本知识.
参考链接HDMI的介绍.
参考链接HDMI介绍与流程.