首页 > 其他分享 >HDMI/DVI____基础知识

HDMI/DVI____基础知识

时间:2022-09-25 11:47:39浏览次数:51  
标签:输出 DVI HDMI VGA 数字信号 ____ TMDS 信号

一.基础知识

1.历史

  早期在FPGA芯片上实现HDMI控制显示是使用HDMI发送芯片,eg:ADV7513,sil9022,CH7301等。用之前VGA控制中输出的RGB信号,行场同步信号和使能信号输入到HDMI芯片中处理再输出。

  为了节省I/O引脚资源,直接在FPGA上设计HDMI时序并直接连接HDMMI接口。

2.接口比较

①HDMI/DVI

  HDMI可以传输音频信号。

  HDMI兼容DVI,可通过转换接口将信号接到DVI接口。

②HDMI/VGA

  VGA收发都需要数模转换器,传输信号:数字信号 -> 模拟信号 -> 模拟信号 -> 数字信号。

  HDMI只需数据收发器,传输信号:数字信号 ->数字信号 ->数字信号 ->数字信号 

  HDMI采用差分传输,抗干扰能力强,而VGA经历数模转换,当数据变化太快时(颜色变化较大的边界),会出现拖影现象:后一个像素的图像数据可能无法真正显示其想显示的颜色,而是介于 需要显示的颜色和前一个像素的颜色之间的一种颜色。此外会因为抗干扰能力弱,出现杂点。

3.显示原理

  VGA采用逐行显示(也可以说是逐点显示),随着时钟周期输出每一个像素点的RBG值,而HDMI/DVI的数据链路层在此基础上采用了TMDS编码方式(减少电磁干扰,增强DC平衡),对VGA控制器输出的值进行编码,再传输。

  

输入接口层:RGB行场同步信号数字接口。(即类似于VGA的输出信号)。

TMDS发送器:对输入的信号进行TMDS编码。经过高速串口输出(4个串口通道)

TMDS接收器:接收,解串,解码,得到RGB行场同步数字信号。

输出接口层:RGB行场同步信号数字信号输出到显示器。

4.TMDS编码(过渡调制差分信号)

①模块信号接口设计

 

 

 

  如图,把RGB行场同步数字信号以及控制信号分成三组,分别进行TMDS编码。

  DE信号起控制作用,高电平编码RGB信号,低电平编码同步与控制信号。(如果只传同步信号,则CTL0-CTL3接空信号即可)

  每一个输入时钟周期,输入一次数据到TMDS编码器进行处理,而编码器输出串行数据,为了在一个周期内输出10位数据,设置输出时钟频率是输入时钟频率的5倍利用ODDR实现双沿输出,可以达到在一个输入周期内输出10位串行数据的效果。

  我们需要设计的是编码器部分,把VGA控制器输出的像素值和控制信号编码,串行输出到HDMI/DVI接口上,便可以实现最小化传输,减少电磁干扰,实现DC平衡。接收器和解码器则是在显示器端实现的。

②TMDS编码目的:实现最小化传输

Ⅰ.最小化传输

定义:通过对输入的一组数据处理,得到一组跳变次数最少的数据(跳变指:相邻数据为01或10)。

意义:消除电磁干扰(使得HDMI/DVI抗干扰能力强)。(信号跳变会产生磁场,对信号线有电磁干扰)。

实现:TMDS编码。

Ⅱ.直流平衡(DC)

定义:信号在传输中0和1的数据个数相同。

意义:避免收发方有直流电,防止电压不稳引起的问题。

实现:利用上一组数据编码后的极性来指导本组数据的编码,控制0和1数据的平衡。(极性指示0/1数量)

未解的疑惑: de=0时才传输同步信号,那么就得用两个周期来传输一个周期就要传完的数据? 先不管(暂时的想法是:时钟可以控制的嘛,DE也是由VGA控制产生,到时候协调一下即可)

 

标签:输出,DVI,HDMI,VGA,数字信号,____,TMDS,信号
From: https://www.cnblogs.com/fbur/p/16719591.html

相关文章

  • 当API服务端options.Authority ="http://localhost:5001" 报错误
      //验证传入的令牌以确保它来自受信任的颁发者//验证令牌是否可以与此api一起使用(又名受众)//将身份验证服务添加到DI(依赖注入)并将身份验证中间件添加到管道bu......
  • 【code随笔】java int数组到set的转换
    很多高级用法,比如Stream,Compare都只针对包装类直接int[]到set只能使用赋值的方法int[]nums={0,0,1,1,1,2,2,3,3,4};Set<Integer>set=newHashSet<>();for(i......
  • 与 CSC 一起建设
    与CSC一起建设CSC上的区块链开发:第2部分你知道去中心化应用程序(dApps)在将区块链应用程序付诸实践方面发挥着至关重要的作用吗?让我们深入了解开发dApp(去中心化应用......
  • 由 ProdOps 提供支持的用户反馈循环
    由ProdOps提供支持的用户反馈循环Photoby杰里米·帕金斯on不飞溅我们专注于软件的质量。我们专注于支持的质量。我们专注于客户体验的质量。为此,我们需要提......
  • 06. 不急于开始原型设计;我知道你很兴奋!
    06.不急于开始原型设计;我知道你很兴奋!设计思维不仅仅适用于用户体验设计师。我很感激我的开发者们单枪匹马地开发了一个产品;你在家庭中扮演父母双方的角色。你必须做出......
  • 简单测试C语言<string.h>中strerror(int errornum)能输出什么
    使用一个简单程序来验证一下:#include<stdio.h>#include<string.h>intmain(intargc,char*argv[]){for(inti=-5;i<50;i++)printf("errno[%2......
  • Const修饰类成员函数
    主要说明const类成员函数调用方式以及this指针对应变化SimpleConst.h#pragmaonceclassA{public: inta; intb; constintc; A(inti,intj,intt); ......
  • MySQL和Redis的区别
    1.mysql和redis的数据库类型mysql是关系型数据库,主要用于存放持久化数据,将数据存储在硬盘中,读取速度较慢。redis是NOSQL,即非关系型数据库,也是缓存数据库,即将数据......
  • 10种常见的回归算法总结和介绍
    线性回归是机器学习中最简单的算法,它可以通过不同的方式进行训练。在本文中,我们将介绍以下回归算法:线性回归、Robust回归、Ridge回归、LASSO回归、ElasticNet、多项式......
  • Java网络编程
    网络通信三要素分别是IP地址、端口号和协议IP地址操作类—InetAddress名称说明publicstaticInetAddressgetLocalHost()返回本主机的地址对象publicsta......