一.基础知识
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