HDMI_FPGA实现4K60TMDS编码解码之一
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编码解码之一相关推荐
- python3 转码的函数_python基础3之文件操作、字符编码解码、函数介绍
内容概要: 一.文件操作 二.字符编码解码 三.函数介绍 一.文件操作 文件操作流程: 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 基本操作: 1 #/usr/bin/e ...
- .NET编码解码(HtmlEncode与HtmlEncode)
原文:.NET编码解码(HtmlEncode与HtmlEncode) 编码代码: System.Web.HttpUtility.HtmlEncode("<a href=\"h ...
- js base64 编码解码
js base64 编码解码 encode decode,可以直接使用 function Base64() {// private property_keyStr = "ABCDEFGHIJ ...
- python使用base64编码解码数据
python使用base64编码解码数据 base64模块是用来作base64编码解码,常用于小型数据的传输.编码后的数据是一个字符串,其包括a-z.A-Z.0-9./.+共64个字符,即可用6个字节 ...
- python email模块详解_python模块之email: 电子邮件编码解码 (一、解码邮件)-阿里云开发者社区...
python自带的email模块是个很有意思的东西,它可以对邮件编码解码,用来处理邮件非常好用. 处理邮件是一个很细致的工作,尤其是解码邮件,因为它的格式变化太多了,下面先看看一个邮件的源文件: Re ...
- java url加密解密,java URL 编码解码,该如何解决
java URL 编码解码 我写了两个接口 一个是对字符串加密 的,一个是解密的 .加密的可以通过调用接口生成加密字符串如下: Oc0PEwKrLzHqT25hYLhWP5wlk5HROPJoWC3 ...
- 编码/解码和进制转化工具hURL
编码/解码和进制转化工具hURL 在安全应用中,各种编码方式被广泛应用,如URL编码.HTML编码.BASE64等.而在数据分析时候,各种进制的转化也尤为频繁.为了方便解决这类问题,Kali Linu ...
- python3 url 编码 解码
对于url编码的转换,主要用urllib.parse包中的quote和unquote方法. quote进行编码,unquote进行解码. 代码实例: import urllib.parseu = &q ...
- 8.文本处理(编码解码/文件操作)
本章主要从文本处理.系统监控.日志.FTP.邮件监控.微信监控等方面来介绍基础运维的相关知识. 8.1 文本处理 在日常的运维工作中一般都离不开与文本,如日志分析.编码转换.ETL加工等.本节从编码原 ...
最新文章
- [译]ASP.NET Core 2.0 机密配置项
- java ConcurrentHashMap 实现原理
- 钢厂冒的白烟到底有没有污染?东北大学教授的试验结果让你大吃一惊
- 求后序遍历(信息学奥赛一本通-T1339)
- Qt——P23 登录窗口布局
- xshell密码保存位置_一键安装宝塔面板后哪里找账号密码?
- WZOI.CC基础题库答案向导
- 谈谈滞后补偿器与PI控制及其原理分析
- 作为技术人员,我是如何安排学习的
- 经典的W2kXP添加删除硬件
- mysql中的临时表怎么用的?
- 朋友问我c++学到哪了 加愤怒的小鸟 要看到最后
- 4.17每日一题之杂物(洛谷c++)
- 使用python中的requests爬取软科大学排名并存储在本地MySql数据库
- vue-quill-editor富文本编辑器自定义上传图片功能
- 人生下来就是一个矛盾体
- 计算机主机只有一块硬盘,电脑只有一个硬盘怎么解决
- 华为手机助手安卓版_手机恢复助手下载-手机恢复助手安卓版
- 趣题:正方形的边长是多少?
- 【云原生系列】第四讲:Knative 之 Eventing
热门文章
- android bitmap对象,android 创建bitmap的多种方式
- 逻辑回归实战:从疝气病症预测病马的死亡率
- oracle优化:IS NULL的优化和IS NOT NULL的优化
- win10剪切板突然失效的问题解决
- android动画---ObjectAnimator基本使用
- 如何确保大模型追求“正确”的目标?丨AI安全与对齐圆桌回顾
- 论文阅读-DF-Platter: Multi-Face Heterogeneous Deepfake Dataset(多人脸异构深度伪造数据集)
- unity 2d人物二段跳,多段跳 简单易懂
- MySQL - 存储引擎MyISAM和Innodb
- 贪吃蛇java版_java贪吃蛇极速版