7.HDMI接口

DDC(显示数据通道)通道用于在HDMI发送器和接收器之间交换一些配置信息。发送方通过DDC通道读取接收方存储在EEPROM中的EDID数据,获取接收方的信息,确认接收方终端显示的设置和功能,决定以何种格式与接收方传输音视频数据。

CEC(消费电子控制)频道是可选的。通过CEC通道,可以实现音视频设备之间的一些高级控制功能,如支持视频源与数字电视的双向通信,实现同时上电、自动上电、自动信号路由、远程控制等功能。

图1 HDMI系统结构图

电子EDID数据结构

E-EDID是由VESA定义的数据结构,是针对PC显示器的优化显示格式数据规范。它存储在监视器专用的EEPROM存储器中,数据结构为128字节。PC主机和显示器通过DDC通道访问存储器中的数据,以确定显示器的显示属性,如分辨率、宽高比和其他信息。HDMI采用了这种数据结构。在HDMI规范中,同样的例子使用DDC通道访问EDID存储器来确定显示设备的功能和属性。

根据HDMI规范,EDID的第一个128字节必须是符合EDID1.3的数据结构,第二个128字节必须是符合EIA/CEA-861B的CEA EDID时序扩展数据结构。

blogs.com/TaigaCon/p/3840653.html

HDMI(高清多媒体接口)主要用于传输高清音视频信号。

HDMI引脚:

HDMI有五种引脚类型:A、b、c、d和e,目前市场上最常见的引脚类型是A型:

在…之中

传输过程:

HDMI TMDS传输的数据有三种(包括Hsync和Vsync,共四种):

HDMI数据传输有三个通道:TMDS0、TMDS1和TMDS2,每个通道的传输流程都是一样的:

如果8位数据进入TMDS编码器,得到一个抗干扰性强的10位TMDS信号,然后序列化输出;接收端接收到串行HDMI信号后,对信号进行恢复,得到10比特的TMDS信号,最后由TMDS解码器对原始的8比特数据进行解码。

整个传输过程如下:

如果传输视频数据且格式为RGB,则三个通道的所有24位输入将被占用,其中通道0[7:0]用于传输B,通道1[7:0]用于传输G,通道2[7:0]用于传输R..

如果传输数据岛,它占用三个通道* * * 10位输入,通道0[3:2]用于传输数据岛报头,通道1[0:3]和通道2[0:3]用于传输数据岛内容。

如果发送前同步码,它将占用1,2 * * 4位输入的两个通道。通道1[1:0]和通道2[1:0]分别是CTL 0、CTL 1、CTL 2和CTL 3,用于判断下一步。

对于Hsync和Vsync,它将占用通道0的两个位输入,通道0[0]为Hsync,通道0[1]为VSync。

传输周期:

HDMI的TMDS数据传输可以分为三个传输周期:

Hsync、Vsync在控制周期内传输,前同步码在周期的最后阶段传输。

数据岛期间会传输数据岛(包),也会有Hsync和Vsync。

视频数据(视频像素数据)在视频数据周期期间传输。

一帧的总周期如下:

三个传输周期的转换如下:

左侧是控制周期,传输Hsync、Vsync和前同步码。

中间是数据岛期,传输Hsync、Vsync,以及两个包头和包(每32个时钟一个包);另外,数据岛的两端都会使用保护带对数据岛的数据进行保护和隔离,因为这个阶段传输的大部分数据都是非常重要的,比如图像的分辨率,决定了后期视频数据的显示方式。

右边是视频数据岛,传输视频像素数据。在这一时期的开始,还有警卫乐队。

数据岛分组结构

所有数据岛分组具有32个时钟脉冲的周期,即每32个时钟脉冲发送一个分组。

以上图为例,

包头是BCH块4,由信道0[2]发送。32clk表示有32位,也就是44字节。前三个字节是包头,最后一个字节是校验码。

该数据包为BCH块0,1,2,3,分别由信道1和信道2 * * *的8条线路传输,* * *的校验码为24字节和6字节。

奇偶校验码用于检查HDMI线缆在传输过程中是否存在错误。如果包在HDMI接收端检查错误,如果只有一位错误,可以纠正,超过1位的错误将被判定为无效包(因为HDMI一直在发送数据,不可能重发错误包?)

所以在接收端,拆包后需要取出每个BCH块的校验位进行校准。

有各种类型的数据包,请参阅HDMI规格了解详情。

音频时钟

音频的采样率为44100,48000,192000等。它是多种多样的。在HDMI传输中,音频是PCM级别(未压缩)的传输,PCM数据分散在各个包中。为了得到每个音频帧的数据,还需要知道音频的采样率。HDMI指定音频的传输模式:

音频采样率fs重建取决于以下主要参数:

TMDS钟

同CARPAL TUNNEL SYNDROME

普通

在发送设备侧,已知参数包括采样率fs、视频时钟(TMDS时钟)和预设参数n,并且发现CTS:

CTS=N?fTMDS128×fx

在接收设备侧,可以通过硬件设备获得TMDS时钟,N通过音频包与CTS一起传输,找到fs:

128?fs=N×fTMDSCTS

为了保持接收端fs的稳定性和准确性,需要进行锁相,即利用VCO(压控振荡器)产生合适的频率,然后利用PFD(鉴频鉴相器)锁定频率。

1.首先,由于VCO有一个最佳工作区,比如(200MHz~500MHz),为了保证VCO处于最佳工作频率,我们可以从后面推回,先将输出fa128相乘。

fvco=fa128×S×S2

由于只有几个fa128 (44.1k,48k等。),S和S2都可以轻松获得。

2.那么,为了更快的频率匹配,就需要对最近的频率fx(即晶振时钟fcrystal)或fv(像素时钟)进行分频,还要对fvco进行分频,使两个趋势相等。对于细微的差别,可以用D代码来纠正。

fvcoM=fxK

3.最后做PFD锁相。

4.步骤2和3中的反馈操作循环进行,最终可以得到一个相对稳定的fvco。

最终获得

fa128=fvcoS×S2

热插拔

HotPlug就是热插拔,当接口接通后,可以判断设备是否存在,以便后续工作。

HDMI源设备将监控接收设备的热插拔端口。如果Hotplug高,证明设备可以工作,然后读取DCC。如果为低,则证明设备断开。

HDMI规定当HDMI的5v管脚断电时,需要读取DCC,也就是需要保证Hotplug为高。

热插拔连接:

它由一个5v引脚供电。当5V电源断开时,5V电压将被注入HDMI HPD和热插拔。此时,HPD检测到5V电压(高),可以过来读取EDID。但是,这种方式有一个缺点。5V电压会影响热插拔。一旦热插拔引脚无法承受5V电压的充电,就会被刺穿,那么HPD只能检测低。

额外的GPIO引脚和晶体管用于控制HDMI HPD是0还是1。如果HDMI0_HPD_CTL输出0,则晶体管关闭,HDMI0_HPD检测到高电平。如果HDMI0_HPD_CTL输出1,则晶体管开启,HDMI0_HPD检测到低电平。

HDMI接收器

比如电视是HDMI的接收端,那么HDMI的接收端就需要做一些事情。

HDMI可以通过三个通道接收TMDS数据,即TMDS时钟、热插拔和用于DCC传输的I2C引脚。我已经谈到了TMDS数据和设置热插拔,然后我将分析TMDS时钟。

TMDS时钟是像素时钟,即一个像素所使用的时钟频率。TMDS时钟通过clk引脚传输到接收端,但是接收端不知道发送端发送的TMDS时钟的频率是多少,所以需要通过Phy(HDMI硬件频率设置部分?)进行锁相。但是由于HDMI的带宽很宽(480P@60Hz是25.2MHz,1080P@60Hz是162MHz,甚至高达340MHz),一般的VCO(压控振荡器,电压控制产生的频率)无法覆盖这么大的范围,所以需要设置Phy:

首先检测输入频率落在哪个频段,然后根据不同的频段进行不同的设置。

用电视产生的晶体振荡器来计数,就知道TDMS钟了。

fcrystal=count×fTMDS

或者使用1024 TMDS时钟来计算晶体振荡器的数量。

1024×ft MDS =计数×f晶体

由于视频信号在TMDS编码后从RGB 8位变为10位,然后被串行化,因此实际用于接收TMDS数据的时钟应为:

fReceiveClock=10×fTMDS

另外,ReceiveClock可以用TMDSClock作为参考,用硬件锁相来获得,而不是直接用上面的乘法。

收到接收时钟后,您可以设置PLL的频率,然后对三个通道进行采样以获得TMDS数据。

定时检测

接收端仍然需要定时检测,因为如果设备可以支持(比如色度),HDMI可以自由替换定时,当定时被替换时,接收端需要重置Phy。因此,有必要通过检测频率的变化来检测定时是否被替换。一般会有一个中断服务(或循环)线程来检测频率的变化。一旦频率改变,该过程将通知复位Phy,以确保HDMI的正确操作。

HDMI版权内容保护HDCP

通过DDC的HDCP传输

HDCP主要用于保护有版权的视频。例如,如果蓝光DVD播放器可以播放蓝光DVD,并且该DVD已获得HDCP的授权,而您现在想将DVD图像导出到电视,但电视尚未获得HDCP的授权,则电视可能无法播放图像,或者播放质量可能会下降。比如有雪,图像会从1080p变成480p,或者没有声音。

HDCP通过两台设备之间的交互进行认证,认证过程如下。

1.发射器将发送一个密钥An(64位)和Aksv(密钥选择向量40位)给接收器。

2.在接收到An之后,接收机还将向发射机发送Bkvs和中继器(指示设备B是否是中继器设备)。

3.发射器启动HDCP认证码算法:

为了理解算法,我们首先需要知道ksv是用来做什么的。

在每个HDMI设备内部,将保存40组64位密钥,key[40]。

Kvs有40位,每一位都是一个索引。当kvs的某一位n为1时,密钥[n]将被取出。

将所有键[n]相加得到km,

4.接收器也可以做HDCP认证码算法,这一步得到公里。'

5.发射器和接收器都将使用km\km '来执行hdcpBlkCipher,并获得R0和R0 '的值。

6.100 ms后,接收器将R0 '发送给发送器进行比较,如果相等,则认为认证完成。当然,km = km’可以保证R0 = R0’。

7.之后发送端和接收端会每帧运行一次hdcpBlockCipher,但参数是最后生成的ks和m,生成的新参数是Ks,m和t。

8.在第128帧,另一个r = t。

9.在第一次通信间隔2秒后,再次进行认证。

10.后续步骤7、8和9用于迭代认证。

另外,HDMI从1.1开始支持更快更频繁的认证方式。

是上层设备通信图的下半部分。

1.在16的每一个倍数帧中,与当前帧的通道0的0像素进行异或T,得到Pj。

2.通道0的0像素到达接收端后,也与接收端的T '异或,得到P' J。

3.接收方将P'j发送给发送方,与Pj进行比较,如果相同,则通过认证。

了解HDCP对处理HDMI异常现象很有帮助。比如不时出现雪花,可能是信号不好,导致Channel0的0像素错误,所以第二阶段认证有时可能会不成功。...

HDMI接收器一般流程

HDCP

HDCP是高带宽数字内容保护,TMDS信号应由HDCP加密,以确保数字信号不能被轻易复制。

8b/10b

8b/10b是一种数字处理方法,最早由IBM申请专利。现在它的专利已经过了保护期,成为了公共技术。其目的是提高数字信号的抗电磁干扰(EMI)能力,提高信号的精度。简单来说,工作模式就是对8个0和65438+个0组成的数字信号进行重新编码,前5个重组为6个,后3个重组为4个。在这种转换之后,八个一组的数字信号被转换成10的一组。传输完成后,接收机反编译并恢复数字信号。