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规范

HDMI_FPGA实现4K60TMDS编码解码之一相关推荐

  1. python3 转码的函数_python基础3之文件操作、字符编码解码、函数介绍

    内容概要: 一.文件操作 二.字符编码解码 三.函数介绍 一.文件操作 文件操作流程: 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 基本操作: 1 #/usr/bin/e ...

  2. .NET编码解码(HtmlEncode与HtmlEncode)

    原文:.NET编码解码(HtmlEncode与HtmlEncode) 编码代码: System.Web.HttpUtility.HtmlEncode("<a href=\"h ...

  3. js base64 编码解码

    js base64 编码解码 encode decode,可以直接使用 function Base64() {// private property_keyStr = "ABCDEFGHIJ ...

  4. python使用base64编码解码数据

    python使用base64编码解码数据 base64模块是用来作base64编码解码,常用于小型数据的传输.编码后的数据是一个字符串,其包括a-z.A-Z.0-9./.+共64个字符,即可用6个字节 ...

  5. python email模块详解_python模块之email: 电子邮件编码解码 (一、解码邮件)-阿里云开发者社区...

    python自带的email模块是个很有意思的东西,它可以对邮件编码解码,用来处理邮件非常好用. 处理邮件是一个很细致的工作,尤其是解码邮件,因为它的格式变化太多了,下面先看看一个邮件的源文件: Re ...

  6. java url加密解密,java URL 编码解码,该如何解决

    java URL 编码解码 我写了两个接口 一个是对字符串加密 的,一个是解密的  .加密的可以通过调用接口生成加密字符串如下: Oc0PEwKrLzHqT25hYLhWP5wlk5HROPJoWC3 ...

  7. 编码/解码和进制转化工具hURL

    编码/解码和进制转化工具hURL 在安全应用中,各种编码方式被广泛应用,如URL编码.HTML编码.BASE64等.而在数据分析时候,各种进制的转化也尤为频繁.为了方便解决这类问题,Kali Linu ...

  8. python3 url 编码 解码

    对于url编码的转换,主要用urllib.parse包中的quote和unquote方法. quote进行编码,unquote进行解码. 代码实例: import urllib.parseu = &q ...

  9. 8.文本处理(编码解码/文件操作)

    本章主要从文本处理.系统监控.日志.FTP.邮件监控.微信监控等方面来介绍基础运维的相关知识. 8.1 文本处理 在日常的运维工作中一般都离不开与文本,如日志分析.编码转换.ETL加工等.本节从编码原 ...

最新文章

  1. [译]ASP.NET Core 2.0 机密配置项
  2. java ConcurrentHashMap 实现原理
  3. 钢厂冒的白烟到底有没有污染?东北大学教授的试验结果让你大吃一惊
  4. 求后序遍历(信息学奥赛一本通-T1339)
  5. Qt——P23 登录窗口布局
  6. xshell密码保存位置_一键安装宝塔面板后哪里找账号密码?
  7. WZOI.CC基础题库答案向导
  8. 谈谈滞后补偿器与PI控制及其原理分析
  9. 作为技术人员,我是如何安排学习的
  10. 经典的W2kXP添加删除硬件
  11. mysql中的临时表怎么用的?
  12. 朋友问我c++学到哪了 加愤怒的小鸟 要看到最后
  13. 4.17每日一题之杂物(洛谷c++)
  14. 使用python中的requests爬取软科大学排名并存储在本地MySql数据库
  15. vue-quill-editor富文本编辑器自定义上传图片功能
  16. 人生下来就是一个矛盾体
  17. 计算机主机只有一块硬盘,电脑只有一个硬盘怎么解决
  18. 华为手机助手安卓版_手机恢复助手下载-手机恢复助手安卓版
  19. 趣题:正方形的边长是多少?
  20. 【云原生系列】第四讲:Knative 之 Eventing

热门文章

  1. android bitmap对象,android 创建bitmap的多种方式
  2. 逻辑回归实战:从疝气病症预测病马的死亡率
  3. oracle优化:IS NULL的优化和IS NOT NULL的优化
  4. win10剪切板突然失效的问题解决
  5. android动画---ObjectAnimator基本使用
  6. 如何确保大模型追求“正确”的目标?丨AI安全与对齐圆桌回顾
  7. 论文阅读-DF-Platter: Multi-Face Heterogeneous Deepfake Dataset(多人脸异构深度伪造数据集)
  8. unity 2d人物二段跳,多段跳 简单易懂
  9. MySQL - 存储引擎MyISAM和Innodb
  10. 贪吃蛇java版_java贪吃蛇极速版