hdmi1.4 tmds编码解码原理
一个HDMI包括三个TMDS 数据通道和一个 TMDS 时钟通道(像素时钟),如图所示
每一个 TMDS 时钟周期内,TMDS 数据通道上会发送一个 10 位的字符信息。
信号源编码逻辑的输入数据包括控制周期,数据岛周期,视频像素周期,编码器将 2 位的控制数据、4 位的数据岛数据、8 位的视频数据采取不同的编码方式编码成 10位数据
三个周期编码类型:
视频像素周期:TMDS视频数据编码,控制周期:控制周期编码,数据岛周期:terc编码
TMDS视频数据编码:TMDS视频数据编码(TMDS Video Data Coding)是将像素的8位数据转化成10个位的字符,但他不是主流的8b/10b编码方式。其编码需两道过程:首先将8位转换到9位,将位的转换最小化。转换最小化可以降低铜连接线环境的电磁干扰(Electromagnetic Interference)。其次,产生10位来造成直流平衡化理想的字符。
TMDS视频数据编码算法过程如下:
TMDS编码算法可分为两个阶段:(引用)
1) 第一阶段是将输入的D【0:7] 变换成最小变换码
q_m[ 0:8] ,其中第9位( q_m【8] ) 指示运算的方式,若是采
用异或运算( XOR) 取1,采用同或运算( NXOR) 取0。
这里用3个8位数来举例:
当D[ 0:7] ==10111010时,q_m[ 0:8]=100001100;
当D[ 0:7] ==10101000时,q_J Il [ 0:8】_1 1001 1 11 1;
当D[ 0:7]=-- 00101 101时,q_m[ 0:8] =01 10001 10。
从这3组数据可以看出,经编码后的数据比原始数
据具有更少的跳变( 这里的跳变是指0和1之间的跳
变) ,采用最小变换码进行编码的目的是为了提高数据在
线缆中传输的稳定性。
2) 第二阶段是将9位的最小变换码( q_m【0:8】) 变换
成10位的直流平衡码( q_out [ 0:9] ) 。如果编码中的1和0
的数量相等,则低8位( q_out [ 0:7] ) 由q_m[ 8] 决定,若
q m[8] 为1,低8位原样输出q_out [ 0:7] =q—m【0:7】,否则取
反,第10位q_out [ 9] =- q_m[ 8】;若q' m[ 0:7】有过多1(O)
且上次的编码数据中有过多1( 0) ,则低8位取反,并且
第10位取1;否则低8位原样输出,并且第l O位取0。不
论是何种情况,输出的第9位q out [8] =q m[ 8] 。
TMDS视频数据解码算法过程如下:
控制周期编码:2位控制数据编码为10位,
terc编码:4位数据编码为10位
下图为一帧视频各个周期的分布:灰色为视频像素周期,浅灰色为控制周期,深蓝色为数据岛周期,区分数据岛周期和视频像素周期采用ch1ch2 控制周期ctl0,ctl1,ctl2,ctl3组成的8个前导码,视频像素周期前导码为ctl0,ctl1,ctl2,ctl3=4‘b1000,就是说解码中出现8个ctl0123=4‘b1000就说明接下来的数据周期为视频像素周期,数据岛周期一样,数据岛周期前导码为ctl0123=4‘b1010
再者数据岛和视频像素周期开始前有2个字付的保护带,数据岛周期结束也有2个字付的保护带,频像素周期结束没有字付的保护带
视频像素周期保护带:
数据岛周期保护带:
数据岛周期包括音频数据包以及激活视频信息的视频辅助数据包(其中avi信息帧时激活hdmi模式的辅助包必不可少,avi信息帧参考CEA-861-D)3条tmds数据通道数据岛封包下图所示:
具体封包解包参考hdmi1.4规范