目的:介绍和解析一下在FPGA中使用HDMI的内部结构,也进行一下总结。
1. HDMI和VGA的区别
HDMI和VGA都是用于图像显示的一种协议或者是一种xxx,反正他们都是用来显示图像的,当然HDMI还能显示音频,这个咱不懂咱也不说。
在我的理解里,HDMI是一种数字信号显示,而VGA是一种模拟信号的显示。
为何出此狂言,因为HDMI需要时钟信号来进行图像的显示,而VGA是使用电子枪劈里啪啦的扫描上去的,用于VGA显示的时候,我们需要绑定的引脚有三个,VSYNC,HSVNC,RGB,没有时钟信号。
2. HMDI的宏观架构是啥子
我们只讨论HDMI Trans
- 输入:输入的是音频或者图像信号+时钟(2个,1个是并行数据的时钟,一个是转换之后的串行数据的时钟)+同步信号
- 输出:TMDS差分信号
此时肯定大家云里雾里,后面会讲清楚
2. HMDI Trans的内部到底干了什么
我认为他的内部干了三件事情
- 扩展信号 8b 2 10b:HDMI T内部干的第一件事情就是将三通道的R G B数据从八bit encode 到 10bit (这部分XILINX给出了开源代码)
- 并串转换:将并行10bit信号转换为串行数据 (第二章会讲解)
- 单端转差分:因为HDMI 输出是TMDS,所以我们要进行这一步的转换(第三章会讲解)
从下图可以看出,我们如果要实现HDMI Trans的代码,需要例化3个encode模块,以及三个并串转换模块。我们有三个通道,但是只有一个同步信号,那么编码模块是怎么进行的呢,
3. HDMI Trans三通道在进行8b210b转换的时候,是按什么顺序转换的呢?
- Channel 0 1 2 分别传递的时候B G R。
- H,VSYNC是在第一个通道传递的,并且D[0]传递的时候HSYNC,D[1]传递的是VSYNC,同步信号在encode模块里面是c0和c1
- 由于本人项目中传递的是视频数据,不是音频数据,所以上图中的CTL0123以及Aux data都没有用到