[转]HDMI协议
HDMI协议
1. 信号定义
Type A:
imgTMDS Data:采用差分传输,共有三路。
TMDS Data shield:
TMDS clock:A类型的时钟频率小于55MHz,即最大传输165Mpixels/sec。
TMDS clock shield:
SCL:串口通信时钟。
SDA:串口通信数据通路。
CEC:用户可以通过CEC协议对设备进行控制。
Hot Plug Detect:对供电电源进行检测信号,提示电源超过或者不足。
1. 链路层Frame结构
各种信号类型和传输界面如下:
img可以将数据分成三种类型:video data、data island、control。具体如下表:
img整个传输的帧结构如下:
img1.1. Control
控制preamble信号和HSYNC、VSYNC信号传输。Preamble信号出现在每个video data和data island信号之前,用于确定是哪种信号类型,如下:
img1.1. Video data
这部分传输图像像素,在发送有效图像像素之前,有2bit leading guard band。在链路层,对这部分数据没有要求,但是在物理层其根据TMDS通道产生,如下:
case (TMDS Channel Number):
0: q_out[9:0] = 0b1011001100;
1: q_out[9:0] = 0b0100110011;
2: q_out[9:0] = 0b1011001100;
Endcase
1.1. Data island
这部分可以传输audio data或者其它附加信息。在传输前,有8bit preamble。然后以2bit leading guard band开始。接下来不同的TMDS通道传输数据如下:
TMDS 1:D0——HSYNC,D1——VSYNC,D2——packetheader1,packet header2,……,D3——1。
TMDS 2,3:D0、D1、D2、D3——packet。
最后为2bit Trailing guard band。其在物理层被翻译为:
case (TMDS Channel Number):
0: q_out[9:0] = n.a.;
1: q_out[9:0] = 0b0100110011;
2: q_out[9:0] = 0b0100110011;
Endcase
整个data island中包含的packet数量范围为:1-18。允许在video data之间出现0个data island。
Packet包含4个子packet,每个子packet含有64bit数据,前56bit为有效数据,后8bit数据为8bit ECCparity。每个子packet都占据TMDS 1、2通道。具体如下:
img img子packet数据bit位顺序为从对应的TMDS通道pixel顺序由左至右,由TMDS1到TMDS2。
后8bit采用BCH编码,其生成多项式为:
imgdata island packetdefinitions
Data island数据包包头为32位,前1个字节为数据包类别,2字节包含了包的一些特别信息,最后1个字节为ECC校验。包类型为如下图:
img2.4.1 InfoFrame Packet
这个可以传送信息帧的格式,信息帧格式在EIA/CEA-861B标准中进行了定义。包头和数据结构如下:
img img2.4.2 General Control Packet
这个可以选择发送,用于提高TMDS时钟的稳定性,降低噪声。如果AVMUTE被置1,传输槽会认为无声音和图像传输。
img1. 物理层编码
物理层有三对传输线,用于串行发送TMDS数据。
1.1. Control signal
控制信号包括HSYNC、VSYNC以及CTL0……2。其具体映射到物理传输线上为:
img img1.1. Video data
Video数据8bit被编码为10bit,这样可以降低TMDS物理路径上电位转变次数。算法如下:
D | 输入数据,8bit |
---|---|
Cnt | 记录1和0的差异数量:正数,为1多出的数量,负数为多出0的数量。Cnt(t-1)是前8bit输入数据的量。 |
q_m | 中间量 |
q_out | 最终10bit输出 |
N1{x} | X中1的数量 |
N0{x} | X中0的数量 |
解码如下:
img1. Video中像素编码方式
1.1. 像素重复
使用HDMI协议,对于像素速率低于25MPixels/s,需要进行pixel的重复发送,比如729X789i。