HDMI/DVI

一.基础知识

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.显示原理

  HDMI/DVI的编码解码流程如下:我们需要设计的是编码和串行发送,由显示器来解码提取信息。

  

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

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

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

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

 

  VGA:采用逐行显示(也可以说是逐点显示),随着时钟周期输出每一个像素点的[23:0]RBG值和行场同步信号。

 

  HDMI/DVI:在VGA的基础上采用了TMDS编码方式(减少电磁干扰,增强DC平衡),用差分信号输出。具体操作为:对VGA控制器输出的RGB[23:0]和行场同步信号,分成RGB三个通道和一个同步时钟CLK通道进行TMDS编码器进行编码,然后经过串行发送器把编码值转化为串行数据,分成4个通道输出(也就是8条差分线)。

 

  HDMI/DVI设计:①d_e为高电平时,对RGB数据进行编码,低电平时对同步信号编码。②从VGA控制器输出来看,每个时钟周期会输出一个RGB像素值,而我们的目的是在一个周期内既传输RGB又传输同步信号,所以得在一个周期内让d_e半个周期为1(传输RGB),半个周期为0(传输同步信号),(跟时钟一样),所以VGA的时钟频率应该是HDMI/DVI的二分之一。

 

3.1框图

3.2.TMDS编码(过渡调制差分信号):一种编码方案

目的:实现最小化传输

Ⅰ.最小化传输

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

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

实现:TMDS编码。

Ⅱ.直流平衡(DC)

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

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

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

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

3.3串行差分信号发送

   编码后的信号,要经过串行发送器处理,把并行数据转换为串行数据,并设计两路差分信号发送,增强抗干扰能力。

 

posted @   little_breeze  阅读(627)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示