HDMI全称(High Definition Multimedia Interface)高清多媒体接口,支持在单线缆上传输全数字高清视频和多声道音频。
HDMI基于TMDS协议传输,主要用于DVD, 机顶盒等音视频source到TV,显示器等sink设备的传输。HDMI向下兼容 DVI,但是 DVI(数字视频接口)只能用来传输视频,而不能同时传输音频,这是两者最主要的差别。
术语
HDMI:High Definition Multimedia Interface高清多媒体接口,传输音视频。
HDCP:High-bandwidth Digital Content Protection 版权保护相关的,通过IIC获取。
EDID:Extended Display Identification Data 扩展显示标识数据,包含有关显示器及其性能的参数,包括供应商信息、最大图像大小、颜色设置、厂商预设置、频率范围的限制以及显示器名和序列号的字符串等。
DDC:Display Data Channel 显示数据通道,其实就是IIC通道,用来获取EDID、HDCP密钥等内容。
HDP:Hot Plug Detect热插拔检测。
CEC:Consumer Electronics Control 用户电气控制,CEC可以控制从设备的一些状态,即遥控器功能。
TMDS:Transition Minimized Differential Signaling最小化传输差分信号,一种差分传输技术
HEAC:HDMI Ethernet and Audio Return Channel 以太网和音频返回,HEAC需要额外的phy才能支持。
Source:A device with an HDMI output
Sink:A device with an HDMI input
CTS:Compliance Test Specification
物理结构
HDMI有A、B、C、D、E五种引脚类型,目前常用的是Type A:
1-9是TMDS data传输用到的引脚,共有三组;
10-12是TMDS clock传输用到的引脚,共有一组,TMDS clock就是pixel clock;
13是CEC引脚,一种消费电子兼容的传输协议;
14是保留引脚;
15,16是DDC的引脚,DDC是基于I2C协议传输,故引脚为SCL和SDA;
17是接地;
18是+5V power;
19是HPD引脚,用于热插拔检测
HDMI框图
HDMI 系统架构由Source端和Sink端组成:Source是指发送HDMI信号的一侧,Sink是指接收HDMI信号的一侧。
HDMI信号四路差分信号组成,包括三路TMDS Data信号和一路TMDS Clock信号。TMDS信号不仅仅用于传输video信号,还传输audio和辅助信息。
HDMI 提供一个 DDC 通道用于在source端和sink端交换状态。
HDP用于热插拔检测,CEC是用户电气控制,一般用作遥控,HEAC以太网和音频返回。CEC和HEAC是HDMI可选协议。
HDMI传输
TMDS信号
TMDS 传输系统分为两个部分:发送端和接收端。TMDS 链路包括 3 个传输数据的通道和1个传输时钟信号的通道。
发送端对这些数据进行编码和并/串转换,再将数据分别分配到独立的传输通道发送出去。
接收端接收来自发送端的串行信号,对其进行解码和串/并转换,然后发送到显示器的控制端。
TMDS不仅仅是对video进行编码,还包括audio和控制信号:
- 对于video周期采用的是video data encoding,将8bits数据转换成10bits数据
- 对于control周期采用的是CTL encoding,将2bits数据转换成10bits数据
- 对于DataIsland周期采用的是TERC4 encoding,将4bits数据转换成10bits数据
HDMI连接架构
HDMI传输由三组TMDS通道和一组TMDS clock通道组成,TMDS clock的运行频率是video信号的pixel频率,在每个TMDS 时钟通道周期,每个TMDS data通道都发送10bit数据。
channel0传输B数据和HSync、VSync
channel1传输G数据和CTL0、CTL1
channel2传输R数据和CTL2、CTL3
HDMI传输模式
HDMI的TMDS数据传输可以分为三个传输周期:
Control Period控制周期:主要用于控制接下来传输的是data island还是video data
Data Island Period数据岛周期:各种类型的包信息,包括音频数据包、辅助数据包、图像信息包等
Video Data Period视频数据周期:视频像素数据,HDMI可以传输RGB和YUV两种格式的像素数据
1、左边是Control period:传输有Hsync、Vsync与Preamble。占用1、2两个通道共4bit输入;channel 0传输HSYNC, VSYNC, channel1[1:0]和channel2[1:0] 传输Preamble,用来判断接下来输入的是Video Data还是Data Island。
2、中间是Data Island period:传输有Hsync、Vsync,以及两个Packet Header与Packet,占用三通道共12bit输入,Channel0[3:2]用于传输Data Island Header(包头),Channel1[3:0]与Channel2[3:0]用于传输Data Island Content(包内数据)
3、右边是Video Data period :视频信号经过编码生成三路TMDS数据通道,共24位视频流数据,输入到HDMI Tx中。24位像素的视频信号通过TMDS通道传输,将每通道8位信号转换为10位,在每个10位像素周期传送一个最小化的信号序列,视频信号将被调制为TMDS信号传送出去。
Control Period(preamble)
在数据岛或者视频数据传输周期之前,每一个TMDS通道包含2bit的控制数据,一共6位控制数据。
TMDS Channel | D0 | D1 |
---|---|---|
0 | HSYNC | VSYNC |
1 | CTL0 | CTL1 |
2 | CTL2 | CTL3 |
每个TMDS通道使用了D1:D0共2bit,采用2bit到10bit的编码方式。在每个控制周期的最后阶段,CTL0、CTL1、CTL2、CTL3组成的文件头说明下一个周期是视频数据还是数据岛。
CTL0 | CTL1 | CTL2 | CTL3 | 数据周期类型 |
---|---|---|---|---|
1 | 0 | 0 | 0 | video data |
1 | 0 | 1 | 0 | data island |
Video Data Period
视频数据周期用来传输视频线的像素,每个视频数据周期以报文头为前导,在报文头之后,视频数据周期以两个字符开始,做为视频前导保护边界。对于数据周期,没有末尾保护边界。
Data Island Period
数据岛用来携带音频和辅助数据的报文。辅助数据包括Info frame和其他用于音视频信息描述的数据。
每个数据岛以2个字符长度的前导保护边界开始,并以2个字符宽度的末尾保护边界结束。
TMDS Channel | BitN | 传输内容 |
---|---|---|
Channel0 | Bit0 | HSync |
Bit1 | VSync | |
Bit2 | packet header | |
Channel1 | Bit3:0 | packet |
Channel2 | Bit3:0 | packet |
数据岛包的结构
包括一个报文头、报文体(包含 4个子包)和相关的差错纠正位。
每个子包含有56bit的数据和8bit的ECC校验位组成。子包 0 加上它的奇偶校验位构成 BCH 块 0,这个块映射到通道 1 和通道 2 的bit0。
同样地,BCH 块 1(子包 1 加上它的奇偶校验位)映射到通道 1 和通道 2 的bit1上。
对于包头即BCH block4映射到通道0的bit2,包括3个byte共24bit,以及8bit ECC。
报文头
报文头包含 24 个数据位,附加 8 位 BCH(32,24) ECC 校验,其中24bit的数据分为8bit的报文类型和16bit的报文。
报文类型表格如下:
空包
source端可以在任何时候使用空包。空包的字节是未定义的,其包内都是 0 值。HDMI sink端应该忽略空包的包头 HB1 和 HB2,以及空包体中的全部字节。
Audio 时钟重生成包ACR
包头中只有包类型,没有报文数据,Sink设备应该忽略HB1和HB2。
包体中包含N和CTS(cycle time stamp),在生成音频时钟的时候会用到这两个值。
audio采样包
音频采样包携带 LPCM 和 IEC61937 压缩音频格式的数据。音频包包括 1 到 4 个音频采样。这些音频采样可能是不同的音频,也可能是同一音频的不同部分(比如 6 声道的 2 个声道数据)。
帧信息
CEA-861D 定义的所有的信息帧都可以在 HDMI 的信息帧中传输。
通用控制包
包头只有包的类型,没有报文数据,Sink端应该忽略HB1、HB2。
包体中包括AVMUTE、CD、PP等信息。
AVMUTE 被用以source端减少TMDS时钟变化或者中断带来的负面影响,比如pop音和噪音。
CD(color depth)用于指示色深:
如果sink端不支持Deep Color模式,CD域应该都设置为零。
video
像素编码
HDMI1.4 支持三种pixel encoding:RGB4:4:4, YCbCr4:4:4, YCbCr4:2:2
HDMI2.0补充支持了YCbCr4:2:0
视频格式
HDMI1.4支持CEA-861-D,HDMI2.0支持到CEA-861-F
color depth
color depth支持像素24bit、30bit、36bit、48bit,其中24bit是必须支持的。
大于24bit的属于“Deep Color”,如果sink设备支持Deep color,36bit是必须要支持的;如果sink不支持deep color,source设备不应该发送deep color mode。
video控制信号
在Video Data周期HDMI不发送HSync和VSync信号,Data Island周期Channel0会发送编码后的HSync和VSync,Control阶段的Channel0也会发送HSync和VSync。
Pixel-repetition
原始像素速率低于25HMz时需要使用pixel repetition才能通过TMDS链路传输。通过字段PR0~PR3:Pixel Repetition Factor指示像素重复的使用。