HDMIHDCP.docx
- 文档编号:29241211
- 上传时间:2023-07-21
- 格式:DOCX
- 页数:42
- 大小:667.16KB
HDMIHDCP.docx
《HDMIHDCP.docx》由会员分享,可在线阅读,更多相关《HDMIHDCP.docx(42页珍藏版)》请在冰豆网上搜索。
HDMIHDCP
HDMI与HDCP详解
修改记录
文件编号
版本号
拟制人/
修改人
拟制/修改日期
更改理由
主要更改内容
(写要点即可)
1.0
汪红刚
2015-1-15
无
无
注:
文件第一次拟制时,“更改理由”、“主要更改内容”栏写“无”。
目录
1序言-3-
1.1目的-3-
1.2缩略语-3-
2基本概念-3-
2.1HDMI-3-
2.2HDCP-3-
2.3DDC-4-
2.4EDID-4-
2.5HDP-5-
3HDMI接口-5-
3.1HDMI结构和接口-5-
3.1.1HDMIA型连接器-6-
3.1.2HDMIA型连接器管脚介绍-6-
3.2HDMI和DVI之间的比较-6-
3.3HDMI信号编码技术-7-
4HDCP协议以及认证过程-7-
4.1HDCP协议内容-7-
4.1.1认证协议的第一部分-8-
4.1.2认证协议的第二部分-9-
4.1.3认证协议的第三部分-11-
4.2HDCP状态-13-
4.2.1发送端状态图-13-
4.2.2接收端状态图-16-
4.2.3HDCP中继器状态图-17-
4.3DVI接口的HDCP认证-21-
4.3.1实现方法-22-
4.3.2发送端软件操作-22-
5软件实施-23-
5.1DDC驱动-23-
5.2HDCP驱动-23-
5.2.1代码位置-23-
5.2.2认证协议代码实现-24-
5.3HDMIrx驱动-24-
5.3.1代码位置-24-
5.3.2hdmirx_rtk_drv_probe介绍-25-
5.4HDMItx驱动-26-
5.4.1代码位置-26-
5.4.2rtk_hdmi_probe介绍-27-
序言
目的
本文基于RTD1195项目的linux3.10.24,对HDCP、HDMI等做了详细介绍。
作为公司的技术积累,方便自己维护代码,给同事提供参考。
缩略语
简称
全称
意义
HDMI
HighDefinitionMultimediaInterface
高清晰度多媒体接口
DVI
DigitalVisualInterface
数字视频接口
HDCP
High-bandwidthDigitalContentProtectionSystem
数字内容保护系统
EDID
ExtendedDisplayIdentificationData
外部显示设备标识数据
DDC
DisplayDataChannel
显示数据通道
HPD
HotPlugDetection
热插拔检测
CEC
ConsumerElectronicsControl
消费电子控制
Ksv
KeySelectionVector
相当于这台拥有HDCP芯片设备的序号
基本概念
HDMI
HDMI是由美国晶像(SiliconImage)公司联合日立、松下、飞利浦、索尼、汤姆逊(Thomson)和东芝7家公司组成的HDMI联盟共同开发。
HDMI技术是从针对个人计算机的数字视频接口(DigitalVideoInterface,DVI)技术演化而来。
HDMI采用非常高频宽的基频信号传送高分辨率的数字影音信号。
HDMI采用TMDS(TransitionMinimizeDifferentialSignal)信号作为基本电气连接,其包含3路TMDS数据通道(传输视频数据、音频及辅助控制数据等)和1路TMDS时钟通道[1]。
通过TMDS传输,点的传输速率可达10.2Gbps,HDTV仅需要2.2Gbps的传输带宽,还有很大的传输余量,以满足日后更高标准的视频数字信号。
HDMI支持HDTV信号无压缩传输,并支持八声道96KHz或单个声道的192KHz数字音频传送。
HDCP
HDCP是High-bandwidthDigitalContentProtectionSystem的简称,即:
高清数字内容保护系统。
HDCP是用于保护DVI(DigitalVisualInterface)视频发送器和接收器之间的传输的视频信号。
除此之外HDCP还可以用于DVI视频发送器和视频转发器(Repeater)之间以及DVI视频转发器和视频接收器之间传输的视频信号的保护。
DDC
DisplayDataChannel(显示数据通道)——指主机与显示设备的通讯方式。
基于End-user的即插即用功能的需求,VESA定义了DDC标准。
包含DDC1/DDC2B/DDC2B+等方式。
DDC1是主机与显示设备的单向通讯,以V-Sync为Clock,显示器不停的向主机发送EDID资料。
DDC2B是主机与显示设备准双向通讯,基于I2C通讯协议,只有主机向显示器发出需求信号,并得到显示器的响应后,显示器才送出EDID资料。
目前DDC1基本上已经不再使用,主要是采用DDC2B方式。
HDCP数据秘钥在CPU和显示设备间的交换以及EDID(EDID中包含有关显示器及其性能的参数)要通过hdmi接口的两个DDC(IIC总线)引脚实现。
(实质是实现一个IIC设备驱动)
EDID
ExtendedDisplayIdentificationData(外部显示设备标识数据)——指DDC通讯中传输的显示设备数据。
EDID包含显示设备的基本参数,包括供应商信息、最大图像大小、颜色设置、厂商预设置、频率范围的限制以及显示器名和序列号的字符串。
EDID是由VESA制定的,使得显示器具有即插即用功能。
现在EDID有2个版本EDIDSTRUCTUREVERSION1和EDIDSTRUCTUREVERSION2,目前我们公司用的是EDIDSTRUCTUREVERSION1REVISION3,并在此基础上扩展了128Byte,扩展的标准按照CEAEDIDTimingExtensionVersion3,总共256Byte。
电视中的EDID与外接设备,如测试仪器、碟机等的通讯,是由两者通过I2C自行完成,无须我们进行干预,电视软件中不涉及EDID。
EDID中的信息定义了电视所支持的Timing,目前AMOI的EDID定义支持的Timing有:
1.EstablishedTiming10Timing
640x480@60Hz(VGA)4:
3640x480@72Hz(VESA)4:
3
640x480@75Hz(VESA)4:
3800x600@60Hz(VESA)4:
3
800x600@72Hz(VESA)4:
3800x600@75Hz(VESA)4:
3
1024x768@60Hz(VESA)4:
31024x768@70Hz(VESA)4:
3
1024x768@75Hz(VESA)4:
31280x1024@75Hz(VESA)4:
3
2.StandardTiming3Timing
1152x864@60Hz4:
31280x960@60Hz4:
3
1280x1024@60Hz5:
4
3.DetailTiming6Timing(红色表示HDMI标准必须支持的模式)
1280x720p@60Hz16:
91920x1080i@60Hz16:
9
1920x1080i@50Hz16:
9720x576p@50Hz16:
9
1280x720p@50Hz16:
9640x480p@59.94Hz4:
3
4.Videodatablock10Timing(红色表示HDMI标准必须支持的模式)
1920x1080i@59.94/60Hz16:
91920x1080p@59.94/60Hz16:
9
720x480p@59.94/60Hz16:
91280x720p@59.94/60Hz16:
9
1920x1080p@50Hz16:
9640x480p@59.94/60Hz4:
3
720(1440)x480i@59.94/60Hz16:
9720(1440)x480i@59.94/60Hz4:
3
720(1440)x576i@50Hz16:
9720(1440)x576i@50Hz4:
3
HDP
HDP:
HotPlugDetection,在HDMI的一对联接中,为热插拔的实现而设计的。
简单地说,当发送端接入接受端时,接受端会回应HPD信号给发送端,进而发送端会启动DDC通道,而读取接受端EDID的信息,然后进行HDCP的交互,如果双方认证成功,则视频、音频正常工作,否则联接失败,不同系统会有不同的处理。
声音图像消隐:
简单来说就是显示设备的声音至于静音状态、图像至于黑屏状态。
比如HDMI输出设备在切换分辨率、ColorSpace、开关机等操作时,显示设备可能会看到一些过度花屏的现象,所以,HDMI输出设备在进行相应操作之前,发送给显示设备一个AVMute信号,让显示设备至于黑屏静音状态,等待HDMI输出设备切换好后,再发送一个ClearAVMute信号,让显示设备再开机,这样,切换过程中的花屏现象就会被屏蔽掉。
HDMI接口
HDMI结构和接口
HDMI系统结构见图3-1:
图3-1HDMI系统结构
3个TMDS通道携带video、audio、auxiliary数据,1个TMDS是时钟信号。
DDC通道是用于信号源和信号接收器的配置和状态交换。
可选的CEC协议在不同音视频产品之间提供高层控制功能。
可选的HEAC(HDMIEthernetandAudioReturnChannel)提供以太网兼容。
1.1.1HDMIA型连接器
–传输所有必要的HDMI信号
–单个TMDS连接
–消费电子应用
1.1.2HDMIA型连接器管脚介绍
PIN
信号分配
PIN
信号分配
1
TMDS数据2+
2
TMDS数据2屏蔽
3
TMDS数据2–
4
TMDS数据1+
5
TMDS数据1屏蔽
6
TMDS数据1–
7
TMDS数据0+
8
TMDS数据0Shield
9
TMDS数据0–
10
TMDS时钟+
11
TMDS时钟屏蔽
12
TMDS时钟–
13
CEC
14
保留(NCondevice)
15
SCL
16
SDA
17
DDC/CECGround
18
+5VPower
19
HPD热插拔检测
从HDMI规范1.0,Section4.1.4ConnectorPinAssignments。
TMDS都是差分信号,有两路,SCL、SDA是传输控制信号。
HDMI和DVI之间的比较
DVIHDMI
传输编码TMDSTMDS,TERC4
视频格式24-bitRGB,4:
4:
424-bitRGB,4:
4:
4
24-bitYCbCr,4:
4:
4
16/20/24-bitYCbCr,4:
2:
2
音频格式无2/6/8-ch.,32-192kHz
控制信息无AVIInfoFrames
EDID是(仅用于视频)是(用于音视频)
电子消费控制无CEC
一致性测试无是(CTS)
控制标准DVI1.0HDMI1.1
CEA-861CEA-861B
HDCP1.0HDCP1.1
VESA1.3VESA1.3设备。
HDMI信号编码技术
HDMI的信息传送分为三个阶段:
视频数据周期、数据岛周期和控制周期。
视频数据周期发送有效视频行的像素和视频信息;数据岛周期传送音频和附加的
信息数据包;控制周期内则没有任何视频数据、音频数据或者附加数据被传送,它是用来传输文件头和场、行同步控制信号。
HDMI信息传送的三个阶段分别采用不同的编码方法。
在数据岛周期,数据采用TERC4(TMDSErrorReductionCoding)的编码方式,将4位数据转换成10位数据,打包后送到3个TMDS数据通道,每个像素时钟周期3路通道共传送12bit数据包信息。
在控制周期中,每个通道传送2bit信息或者通过像素时钟传送一个最大6bit的编码信息。
这个6bit的信息包括HSYNC、VSYNC、CTL0、CTL1、CTL2和CTL3。
在每个控制周期最后的阶段,通过CTLxbit指出下一个周期是视频数据周期还是数据岛周期。
比较复杂的是视频数据周期中的视频信号编码。
在视频数据周期,视频数据采用的是TMDS编码。
其编码需要两个过程:
(1)将8位数据转换到9位,将位的转换最小化;
(2)产生10位形成直流平衡化理想字符。
TMDS编码是将8位字符变换为10位字符的一种编码方式。
先将8位字符在最低位不变情况下,对剩下7位与前一个编码数据对应的7位通过“异或(XOR)”或“异或非(XNOR)”来最小化编码(即编码前后变化最少)为9位字符,其中第9位标志是采用了哪种变换方式,0表示XNOR,1表示XOR。
然后根据已经传输的数据0和1的个数以及当前将传输数据的0和1个数来决定是否对第一步所产生的9位字符信息中的8个数据位做反转操作,若已经传输了更多1且当前数据的1比0多则反转,变成10位直流平衡码,其中第10位是反转标志,1表示进行了反转,0表示没有反转。
编码后的数据经过串行化后在TMDS通道上以差分形式发送出去,实现了位最小变化信号的编码和传输。
HDCP协议以及认证过程
HDCP协议内容
HDCP主要包含三个基本内容:
校验协议、像素加密和可更新性。
支持HDCP保护技术的播放设备或是显示设备上,均会拥有一个独一无二的HDCP密钥(SecretDeviceKeys),这密钥是使用40组56bit的数组密码组成,主要放在芯片制造商的芯片之中,例如SiliconImage、Chrontel等。
而且每一个拥有HDCP芯片的设备,还会拥有一组私钥(DevicePrivateKey),而这组私钥将会组成KSV(KeySelectionVector,40bit),这组KSV相当于这台拥有HDCP芯片设备的序号。
1.1.3认证协议的第一部分
下图4-1说明了第一部分的认证交换过程。
发送端(A)可以在任何时候初始化认证过程,即使在前一个认证交换过程完成之前。
初始化是通过发送端(A)向接收端(B)发送一个初始化消息开始的,这个消息包括发送端的AKsv和一个64bit的伪随机序列(An),这个An由HDCP密码函数hdcpRngCipher产生。
同时,B向A回送一个消息,这个消息包括接收端的BKsv和REPEATER位,REPEATER位表明接收端是否为DHCP中继器。
A验证B的BKsv是否被撤回,同时验证接收到的BKsv是否是由20bit的1和20bit的0构成。
图4-1认证协议第一部分
在这里,如果A和B都具有一组有效的设备密钥(40*56bit)和一个相应的Ksv(40bit),它们就可以计算出一个共享的秘密数据Km(在B中称为Km’)。
每个设备通过迭加它们的设备密钥来计算Km,迭加的方式由另外一个设备的Ksv来决定,迭加计算是模2^56的加法运算。
在二进制Ksv中,值为1的那些位所代表的设备密钥被选中出来进行迭加。
例如,假定BKsv的值是0x5A3。
该二进制是010110100011,第0,1,5,7,8,10位为1,其余的位都为0。
因此,设备A把设备B的第0,1,5,7,8,10组设备密钥迭加起来计算Km的值。
设备B将会根据设备A的Ksv做相似的计算得到Km’。
如果任何一个设备具有一组不合法的秘钥或者不合法的Ksv,那么Km的值就不会等于Km’。
HDCP密码函数hdcpBlockCipher被用来计算三个值,Ks,M0和R0。
对这个计算来说,密码初始值为Km(Km’)和65bit的串联值(由REPEATER和An串联形成)。
HDCP接收端的状态位REPEATER表明HDCP接收端是否支持向其它HDCP接收端转播HDCP内容。
对HDCP密码来说,过程秘钥Ks是一个56bit的秘钥。
M0是一个64bit的秘钥,被用于认证协议的第二部分,同时其也作为下一次HDCP密码的初始值。
R0’是由视频接收端向HDCP发送端传送的一个16bit的应答信号,该应答信号表明认证的交换过程是成功的。
R0’必须在发送端A向接收端B写入AKsv后的100ms内开始有效,以便发送端B读取该值。
发送端B不能在写入AKsv后的100ms内读取R0’。
如果认证成功,R0=R0’。
如果认证不成功,R0在多数情况下不等于R0’。
如果R0不能有效地把认证失败的情况检测出来,那么在认证协议的第三部分产生的Ri’将会进一步来表明认证的失败。
当认证协议的第一部分成功完成后,HDCP发送端A将会使能HDCP加密。
1.1.4认证协议的第二部分
如果HDCP接收端是一个HDCP中继器,那么认证协议的第二部分将是必须的。
如图4-2所示。
只有在REPEATER位被置1时(表明所连接的HDCP接收端是中继器),HDCP发送端才会执行协议的第二部分。
协议的这部分将会通过一个允许的连接树把与HDCP中继器相连接的所有下游Ksv集合成一个列表。
当HDCP中继器的下游保护接口完成对所连接接收端的认证协议后,HDCP中继器将会把所有下游的HDCP接收端集合成一个列表。
这个列表是由一组相邻的字节构成的,每个Ksv占用5个字节,以little-endian的方式存放数据。
因此,Ksv列表的总字节长度就是所有下游HDCP设备(包括下游的HDCP中继器)的5倍,如果一个HDCP保护接口没有接任何有效的设备,那么这个接口将不会被计入列表之内。
同时,在任何级别下,HDCP中继器的Ksv都不会计入到自身的Ksv列表中。
如果一个HDCP保护接口所连接的设备不是一个HDCP中继器,那么将把所连接设备的BKsv加入到列表中去。
图4-2认证协议第二部分
如果一个HDCP保护接口所连接的设备是一个HDCP中继器,那么将把所连接的HDCP中继器的Ksv列表加上中继器本身的BKsv写入到现在的Ksv列表中去。
为了把所连接的HDCP中继器的Ksv列表加进去,我们需要验证列表的完整性,这可通过把计算出的V值和从HDCP中继器接收到的V’值相比较来实现。
如果V不等于V’,那就表明下游Ksv列表完整性验证的失败,上游HDCP中继器将不会设置REDAY状态位。
上游HDCP发送端将通过看门狗定时器的终止来检测这种失败情况的发生。
当HDCP中继器把所有连接的HDCP设备的Ksv都集合到一个列表之后,我们需要计算验证值V并且把它附加到列表之后。
这个V值是由一个连接数(这个连接数由Ksv列表、Bstatus和M0构成)通过SHA-1hash计算得到的。
在构造SHA-1的输入时,Ksv列表、Bstatus和M0都是以little-endian的顺序输入的。
当Ksv列表和V值都有效时,HDCP中继器将会把REDAY状态位设为1。
如果一个HDCP发送端在之前认证的过程中读取的REPEATER位的值为1,那么它将把看门狗定时器设置为5秒,同时读取HDCP中继器REDAY状态位的值。
当REDAY为1,HDCP发送端将会从HDCP中继器中读取Ksv列表和V值。
如果Ksv列表的大小超过HDCP发送端的容量,认证协议被抛弃。
HDCP发送端会验证Ksv列表的完整性,该完整性的验证也是通过SHA-1运算计算出V,然后把V和V’相比较的方式来完成的。
如果V和V’的值不相等,那么认证协议被抛弃。
如果REDAY状态位没有在5秒之内设置为1,这个HDCP中继器的认证便失败了。
在这种情况下,HDCP发送端将把这个HDCP中继器的认证协议抛弃。
认证可以通过发送一个新的An和AKsv而重新开始。
除了集合Ksv列表之外,HDCP中继器还通过连接树向上游HDCP发送端传播拓扑信息。
HDCP中继器报告拓扑状态变量DEVICE_COUNT和DEPTH。
对一个HDCP中继器来说,DEVICE_COOUNT等于所连接下游HDCP接收端的数量总和(包括该HDCP中继器)。
该值是通过下游接收端的数量加上下游中继器的DEVICE_COUNT的和而得到的。
对一个HDCP中继器来说,DEPTH状态位等于任何下游HDCP保护接口的最大连接层数。
该值的计算是通过把下游HDCP中继器的最大DEPTH加1得到(考虑到所连接的下游HDCP中继器)。
例如,一个HDCP中继器没有任何下游的HDCP接收端,那么它的DEPTH和DEVICE_COUNT状态位为0。
一个HDCP中继器具有4个下游DHCP接收端(不是中继器),那么它的DEPTH和DEVICE_COUNT状态位分别为1和4。
如果计算的DEVICE_COUNT超过127或者设备最大的容量,那么HDCP中继器必须声明一个MAX_DEVS_EXCEEDED状态位。
如果计算的DEPTH超过7,那么HDCP中继器必须声明一个MAX_CASCADE_EXCEEDED状态位。
当HDCP中继器从下游的HDCP中继器中接收到MAX_DEVS_EXCEEDED或MAX_CASCADE_EXCEEDED,它需要向上游的HDCP发送端声明这些状态位。
如果MAX_DEVS_EXCEEDED或MAX_CASCADE_EXCEEDED中的任何一个为1,中继器需要设置REDAY为1,或者不设置REDAY位,只是简单地让HDCP发送端的超时设置启动。
对于双重连接的HDCP中继器,中继器将把两个连接的拓扑信息结合成一个Ksv列表,这个列表可以从主要连接KsvFIFO中读取。
中继器将根据判断去除列表中的重复Ksv信息。
重复的Ksv值来自下游双重连接HDCP设备,这些设备在两个连接中具有相同的Ksv。
如果超过拓扑的最大量,认证将会失败。
顶层的HDCP发送端将核查所连接设备的Ksv是否存在于当前的撤销列表中,如果存在,认证将失败。
HDCP发送端将核实当前撤销列表的完整性,完整性的核实是通过数字内容保护LLC的公钥检查系统更新消息(SRM)的签名来完成。
完整性核实的失败将导致认证的失败。
图4-3多层中继器协议
由于每个HDCP中继器并不知道下游HDCP中继器的数量,所以在检测下游的REDAY的状态位时,上游的HDCP发送端必须使用相同的超时时限-5秒。
1.1.5认证协议的第三部分
图4-4认证协议的第三部分
如上图4-4描述的,认证协议的第三部分发生在每帧开始前的场消隐期间。
两个HDCP设备各自计算新的秘密初始值Ki、Mi、Ri。
i代表帧数,从数值1(表示第一组视频帧)开始,同时这也意味着在认证协议的第一部分完成后加密将使能。
i将会随着加密帧或帧(这
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- HDMIHDCP