HDMI协议

  • 概述
  • 物理结构
  • 传输
  • Control Period(控制数据)
  • Video Data Period(视频数据)
  • Data Island Period(数据包)
  • 三种数据传输注意事项
  • 实体模型
  • EDID & DDC
  • HPD

概述

HDMI是音视频传输协议,主要用于DVD, 机顶盒等音视频source到TV,显示器等sink设备的传输。传输基于的是TMDS协议。

物理结构

显示屏协议 java_引脚

上图是HDMI block结构图,可以看出HDMI用于source和sink之间的连接,HDMI cable由3组差分信号传输TMDS数据,1组差分信号传输clock。此外,HDMI还有一个DDC的通道连接到sink的EDID。CEC和HEAC都是HDMI的可选协议。

显示屏协议 java_数据_02


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传输由三组TMDS通道和一组TMDS clock通道组成,TMDS clock的运行频率是video信号的pixel频率,在每个cycle,每个TMDS data通道发送10bit数据。

显示屏协议 java_引脚_03

HDMI传输如下四种类型数据:

Preamble(控制信息):控制接下来传输的数据是Data Island或者Video Data
Data Island(数据包):各种类型的包信息,包括音频数据包,图像信息包等
Video Data (视频信息):视频像素数据,可以传输RGB与YUV格式的像素数据
Hsync与Vsync :

8bit的数据在source经过TMDS encoder后得到10bit数据串行输出;在sink端先进行复原成10bit的数据,再通过TMDS decoder得到8bit的源数据。

Control Period(控制数据)

Channel1[1:0]与Channel2[1:0]分别为CTL0~3
CTL0~3=1000代表接下来的是video data period
CTL0~3=1010代表接下来的是data island period

Channel0[1:0]为HSYNC, VSYNC此时也有可能发生变化

Video Data Period(视频数据)

格式为格式为RGB时,以2个字符长度的leading gurad band开始
guard band如下:

ch0: q_out[9:0] = 0b1011001100
ch1: q_out[9:0] = 0b0100110011
ch2: q_out[9:0] = 0b1011001100

接下来是RGB数据:
Channel0[7:0]用于传输B
Channel1[7:0]用于传输G
Channel2[7:0]用于传输R

Data Island Period(数据包)

data island period传输audio数据和辅助数据,辅助数据包括Infoframe和其他用于音视频信息描述的数据。

以2个字符长度的leading guard band开始,并以2个字符宽度的trailing guard band 结束。
guard band如下:

ch0: q_out[9:0] = n.a
ch1: q_out[9:0] = 0b0100110011
ch2: q_out[9:0] = 0b0100110011

Channel0[1:0]为HSYNC, VSYNC
Channel0[3:2]用于传输Data Island Header(包头)
Channel1[0:3]与Channel2[0:3]用于传输Data Island Content(包内数据)

三种数据传输注意事项

  • Video Data Period与Data Island Period中间必须有Control Period
  • data island period和control period都是在消隐区进行(Hblank与Vblank)

实体模型

EDID & DDC

sink设备在ROM中存放EDID信息,source在收到HPD后会通过DDC通道读取EDID得到显示设备的属性。

HPD

source会监测HPD pin的状态,当source和sink连接后,如果HPD为高电平,说明sink设备正常可以工作,source可通过DDC读取EDID,如果为低电平,说明sink已断开。
sink可通过拉低HPD超过100ms来向source表明EDID发生了变化,此时source会重新读取EDID。