在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 2983|回复: 2

[资料] HDMI

[复制链接]
发表于 2021-1-19 18:40:34 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
TMDS 也被称为过渡调制差分信号,它是一种微分信号机制,采用的是差分传动方式。HDMI 用 TMDS 技术编码时把视频信号分为 R、G、B 三种数据信号和行场控制信号 H、V。这五种信号分四个通道传输,R、G、B 分别占用通道0、通道1、通道2,行场控制信号在 C 信号通道里面传输,音频信号在 R、G 信号通道里面传输。另外还有独立的一个通道用来传输时钟数据。一个时钟周期一个 TMDS 通道可以传送 10bit 的数据。TMDS算法就是将原始的8位视频信号转换为10位数据来传输,原视频信号进过运算后转换为TMDS信号的前8位,TMDS的第9位用来指示运算方式,第10位则作为直流平衡,主要为了保证信道在编码过程中直流偏移为零。
HDMI 采用和 DVI 相同癿传输原理——TMDS(Transition Minimized Differential signal),最小化传输差分信号。
  TMDS 传输系统分为两个部分:发送端和接收端。 TMDS 发送端收到HDMI 接口传来的表示 RGB 信号的24 位并行数据(TMDS 对每个像素的 RGB 三原色分别按 8bit 编码,即 R信号有 8 位,G 信号有 8 位,B 信号有 8 位),然后对这些数据进行编码和并/串转换,再将表示 3 个 RGB 信号的数据分别分配到独立的传输通道发送出去。接收端接收来自发送端的串行信号,对其进行解码和串/并转换,然后发送到显示器的控制端。与此同时也接收时钟信号,以实现同步。
TMDS的原理
每一个 TMDS 链路都包括 3 个传输 RGB 信号的数据通道和 1 个传输时钟信号的通道。每一个数据通道都通过编码算法,将 8 位的视、音频数据转换成最小化传输、直流平衡的 10 位数据。这使得数据的传输和恢复更加可靠。最小化传输差分信号是通过异或及异或非等逡、逻辑算法将原始 8 位信号数据转换成 10 位,前 8 为数据由原始信号经运算后获得,第 9 位指示运算的方式,第 10 位用来对应直流平衡。
  一般来说,HDMI 传输癿编码格式中要包含视频数据、控制数据和数据包(数据包中包吨音频数据和附加信息数据,例如纠错码等)。 TMDS 每个通道在传输时要包含一个 2bit 的控制数据、 8bit 的视频数据或者 4bit 的数据包即可。在 HDMI 信息传输过程中,可以分为三个阶段:视频数据传输周期、控制数据传输周期和数据岛传输周期,分别对应上述的三种数据类型。
下面介绍 TMDS 中采用的技术:
  • 传输最小化
8 位数据经过编码和直流平衡得到 10 位最小化数据,这仿佛增加了冗余位,对传输链路的带宽要求更高,但事实上,通过这种算法得到的 10 位数据在更长的同轴电缆中传输的可靠性增强了。下图是一个例子,说明对一个 8 位的并行 RED 数据编码、并/串转换。
v2-dd5970e829d4a5c78ff9ac0474382da9_720w.jpg
  第一步:将 8 位并行 RED 数据发送到 TMDS 収送端。
  第二步:并/串转换.
  第三步:进行最小化传输处理,加上第 9 位,即编码过程。第 9 位数据称为编码位。
  2. 直流平衡
  直流平衡(DC-balanced)就是指在编码过程中保证信道中直流偏移为零。方法是在原来的 9 位数据癿后面加上第 10 位数据,返样,传输的数据趋于直流平衡,使信号对传输线的电磁干扰减少,提高信号传输的可靠性。
  3. 差分信号
  TMDS差分传动技术是一种利用2个引脚间电压差来传送信号的技术。传输数据的数值(“0”或者“1”)由两脚间电压正负极性和大小决定。即,采用 2 根线来传输信号,一根线上传输原来的信号,另一根线上传输与原来信号相反的信号。这样接收端就可以通过让一根线上的信号减去另一根线上的信号的方式来屏蔽电磁干扰,从而得到正确的信号。
v2-cf579801c4350e511adc69343929db1e_720w.jpg
  另外,还有一个显示数据通道(DDC),是用于读取表示接收端显示器的清晰度等显示能力的扩展显示标识数据(EDID)的信号线。搭载 HDCP(High-bandwidth Digital Content Protection,高带宽数字内容保护技术)的发送、接收设备之间也利用 DDC 线进行密码键的认证。
接下来是电路设计部分,HDMI驱动部分追寻原始出处应该是迪芝伦官方,该部分代码用Vhdl语言描述,为了方便移植,我将该部分代码封装成自定义IP Core,由上文可知,我们需要产生RGB888三路数据,输入给该模块,然后经过解码、串/并转换,差分输出。还需要两个时钟输入,一个是当前显示分辨率的像素时钟,一个是当前显示分辨率的像素时钟的五倍。还有一个行同步信号和场同步信号,这两个信号的产生方法和VGA是一样的,简单来说就是先产生VGA的信号,行同步信号、场同步信号RGB888的数据输入给HDMI驱动模块就可以显示了,我们要修改显示的数据,还是只需要修改VGA时序即可。
v2-66880cd47e64f8cbf21eee352de09a7e_720w.jpg
  该工程经过测试,可以实现720p(1280x720)的分辨率显示,1080p(1920×1080)的分辨率没有测试出来,原因我觉得可能是官方的zybo的晶振是125Mhz的,这个时钟很尴尬,直接用Clocking wizard锁不出来HDMI所需要的精确时钟,如下图。我试过先分频出100Mhz,然后在调用一个IP Core分频和倍频,但是综合总会报错。所以直接这样进行PLL虽然有误差但是还是可以显示出720p的。
v2-7114b21b015b33bc929e85eb1e18efc0_720w.jpg

打开工程后,需要重新添加HDMI自定义IP的路径,就在工程中,rgb2dvi_v1_2文件夹中。
v2-9b637fb4a928e385c47da0e5a80617d7_720w.jpg
  然后在IP Catalog中搜索hdmi_disp就可以得到对应的IP Core了。
v2-9f6b4608a3915ac0e0d9dc44adb6428c_720w.jpg
  双击打开这四个需要定义的参数,已经定义好在IP中了,直接点击OK——Generate生成
v2-4163273c1bb7bbcb1c3e3c417493689d_720w.jpg
  直接可以在如下图所示中找到例化文件,直接实例化即可。
v2-a34d038b2a9d0090f89e38f31d879ee6_720w.jpg
  关于引脚约束,需要说的是,引脚约束必须为TMDS_33电平标准
v2-7c4ad7770a9e101a6d232eb81509b6f0_720w.jpg
 HDMI时序介绍:
2 物理结构

SouthEast.jpg
上图是HDMI block结构图,可以看出HDMI用于audiovisual source和sink之间的连接,HDMI cable由3组差分信号传输TMDS数据,1组差分信号传输clock。此外,HDMI还有一个DDC的通道连接到sink的EDID。CEC和HEAC都是HDMI的可选协议。
SouthEast.jpg
HDMI定义了五种类型的connector,上图是最常见的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引脚,用于建立连接。

3 传输概述

HDMI传输由三组TMDS通道和一组TMDS clock通道组成,TMDS clock的运行频率是video信号的pixel频率,在每个cycle,每个TMDS data通道发送10bit数据。
SouthEast.jpg
上图是HDMI传输的示意图,从图中可知,HDMI传输如下四种类型数据:
(1)Preamble控制信息,图中的CTLx,可用来表示后面传输的是data island还是video data。通过channel1和2的D[1:0]传输,占用4bit。
(2)Data Island,即数据包,如Audio数据包。通过3个channel的D[3:0]传输,占用12bit。
(3)Video Data,视频数据。示意图中传输的是RGB格式图像,R,G,B分别通过channel2,1,0传输,每个颜色8bit,共24bit。
(4)HSYNC, VSYNC。使用channel0的D[1:0]传输,占用2bit。
8bit的数据在source经过TMDS encoder后得到10bit数据,经过serializer后串行输出;在sink端先进行复原成10bit的数据,再通过TMDS decoder得到8bit的源数据。
此外,HDMI视频是stream式的传输,不涉及packet式的传输。

SouthEast.jpg
上图是传输720x480p video的hdmi timing图。
在video data period,有效的video数据进行传输;
在data island period,audio和auxiliary数据以包的形式进行传输;
在control period,CTLx和HSYNC, SYNC进行传输。
data island period和control period都是在消隐区进行。图中行消隐占用138像素,场消隐占45行。
SouthEast.jpg
上图中是对时序图中描述的三种period分别传输的数据和编码类型进行说明。video数据从8bit/channel encode后变为10bit/channel, data island的packet数据从4bit/channel encode后为10bit/channel, control数据从2bit/channel encode为10bit/channel。

Control Period

SouthEast.jpg
只有两种类型的preamble信息组合,CTL0:3=1000代表接下来的是video data period,CTL0:3=1010代表接下来的是data island period。HSYNC, VSYNC此时也有可能发生变化。

Video Data Period

video data period以2个字符(pixel)长度的leading gurad band开始,guard band如下:
ch0: q_out[9:0] = 0b1011001100
ch1: q_out[9:0] = 0b0100110011
ch2: q_out[9:0] = 0b1011001100

Data Island Period

data island period传输audio数据和辅助数据,辅助数据包括Infoframe和其他用于音视频信息描述的数据。data island period以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
data island传输的packet类型和格式详见spec说明。
三个传输阶段的过渡过程如下图所示:
SouthEast.jpg
(1) 左一是control period, 分别占用三个channel的D[1:0],channel 0传输HSYNC, VSYNC, channel1,2 传输Preamble
(2) 左二是data island period,分别占用了三个channel的D[3:0],channel 0的D[1:0]传输HSYNC, VSYNC, channel0的D[3:2]传输packet header, channel 1,2的D[3:0]传输packet。并且两端以guard band隔离
(3)右二接下来又是control period
(4)右一是 video data island, 占用了全部三个通道,并且开始以guard band 隔离

4 Video

支持三种pixel encoding:RGB4:4:4, YCbCr4:4:4, YCbCr4:2:2
video format除了CEA-861-D中格式外,还会支持一些较特殊的格式
color depth可支持一个像素24, 30, 36和48bits
下面分别是24bit/pixel的RGB444, YCbCr422, YCbCr444的pixel encoding示意图。RGB444每个颜色占8bit, YCbCr422中Y占12bit,C占12bit,YCbCr444中Y,Cb,Cr都占用8bit。
SouthEast.jpg
SouthEast.jpg
SouthEast.jpg

Deep Color模式
Pixel Packing
24 bit mode: 1 pixel/group, 1 fragment/group
30 bit mode: 4 pixel/group, 5 fragment/group
36 bit mode: 2 pixel/group, 3 fragment/group
48 bit mode: 1 pixel/group, 2 fragment/group
1fragment/TMDS clock, 如30bit下的4pixel,需要5次传输完成,每次1个fragment。
SouthEast.jpg

5 Audio

Audio数据以Audio Sample Packet或High Bitrate Audio Stream Packet的形式传输,但是HDMI没有传输audio clock,因此sink设备需要进行audio clock regeneration。原理如下:
SouthEast.jpg
128∗fs=N×fTMDS/CTS
N和CTS会在Audio Clock Regeneration Packet中进行传输,TMDS clock可通过硬件获取,因此sink端可算出source传输的audio clock。

6 ControlInfoFrame

Infoframe以Infoframe packet的形式传输,它的大小不超过30字节加上一个checksum字节。具体infoframe的格式及内容需要查看spec。
AVI(Auxiliary Video Information) Infoframe
Audio Infoframe
HDMI Vendor Specific Infoframe, 传输4kx2k或3D格式时需要发送此packet

EDID & DDC

sink设备在ROM中存放EDID信息,source在收到HPD后会通过DDC通道读取EDID得到显示设备的属性。EDID包含两部分,前128字节符合EDID1.3数据结构,128字节的扩展EDID,符合CEA extension verison3。CEA extension verison3如下图所示。
SouthEast.jpg
HDMI VSDB
HDMI sink设备在第一个扩展EDID中包含HDMI VSDB,source在读取EDID后会根据是否有此block来判断设备是HDMI还是DVI。



发表于 2021-1-21 18:00:08 | 显示全部楼层
不错的资料,写的很用心。
发表于 2021-1-22 14:32:28 | 显示全部楼层
不错,楼主整理的很用心
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条

×

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-5-19 20:57 , Processed in 0.036777 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表