1. HDMI概述

各位同学好,我是你们的FPGA讲师。今天咱们聊聊HDMI。说实话,HDMI这玩意儿在FPGA开发板上太常见了。我最早接触HDMI还是十年前做视频采集卡的时候,那时候HDMI 1.4刚普及,4K还是个新鲜词。现在呢?HDMI 2.1都出来了,8K 60Hz都能跑。

这一章,咱们把HDMI的底裤扒干净。从标准演进到接口类型,从TMDS编码到和DP、VGA的对比,全给你讲透。

1.1 HDMI标准演进:从1.0到2.1

HDMI标准从2002年发布到现在,经历了十几个版本。我整理了一张表,你看一眼就明白了。

版本 发布时间 最大带宽 最大分辨率 主要特性
HDMI 1.0 2002年 4.95 Gbps 1080p @ 60Hz 基础数字音视频传输
HDMI 1.3 2006年 10.2 Gbps 1440p @ 60Hz 深色技术、无损音频
HDMI 1.4 2009年 10.2 Gbps 4K @ 30Hz 以太网通道、ARC音频回传
HDMI 2.0 2013年 18 Gbps 4K @ 60Hz HDR、32声道音频
HDMI 2.1 2017年 48 Gbps 8K @ 60Hz / 4K @ 120Hz FRL模式、动态HDR、eARC

你可能会问:为什么带宽涨了这么多?说白了,分辨率上去了,像素时钟就跟着涨。1080p的像素时钟才148.5 MHz,到了4K 60Hz就变成594 MHz了。8K 60Hz?直接飙到2376 MHz。不升级带宽根本跑不动。

关键点:HDMI 2.1最大的变化是引入了FRL(Fixed Rate Link)模式,取代了传统的TMDS编码。FRL模式下,数据通道从3条变成4条,每条速率最高12 Gbps。嗯,这里要注意:FPGA实现HDMI 2.1的FRL模式非常复杂,目前主流方案还是用专用芯片。

1.2 HDMI接口类型:A/B/C/D/E

接口类型这块,我估计你见过最多的就是Type A。但做FPGA开发板设计时,Type C和Type D也经常用到。我简单说一下区别。

  • Type A(标准型):19针,宽13.9mm。台式机、显示器、电视上最常见。引脚间距1.0mm,手工焊接还算友好。
  • Type B(双链路型):29针,基本绝迹了。当年为了支持高分辨率设计的,后来被HDMI 1.3的单链路10.2 Gbps干掉了。
  • Type C(迷你型):19针,宽10.42mm。相机、平板电脑上用得多。引脚间距0.8mm,焊接要小心。
  • Type D(微型型):19针,宽6.4mm。手机、便携设备上用。引脚间距0.4mm,我建议你直接买转接板,别自己焊。
  • Type E(汽车型):19针,带锁扣。车载娱乐系统专用,抗震防脱落。

实战建议:做FPGA开发板时,我个人习惯用Type A接口。原因很简单:好买、好焊、好测试。Type C虽然体积小,但引脚间距小,手工焊接容易短路。我曾经在一个项目里为了省空间用了Type C,结果焊接良率只有70%,后来乖乖换回Type A了。

1.3 TMDS编码原理

TMDS(Transition Minimized Differential Signaling)是HDMI 1.0到2.0的核心编码方式。说白了,就是把8位数据编码成10位,目的是减少信号跳变次数,降低电磁干扰。

编码过程分两步:

  1. 第一步:XOR/XNOR编码。把8位数据转换成9位,尽量减少跳变。具体来说,如果数据中1的个数多,用XNOR;0的个数多,用XOR。
  2. 第二步:DC平衡。第10位用来控制直流平衡,保证传输的0和1数量大致相等。

我画了个流程图,帮你理解TMDS编码的完整过程。

TMDS编码流程图 8位数据输入 统计1的个数 XOR编码(1多) XNOR编码(0多) 9位数据 DC平衡控制 添加第10位 10位数据输出 差分信号传输 编码效率:8/10 = 80% 有效数据率 = 链路速率 × 0.8 例如:3.4 Gbps链路 → 2.72 Gbps有效数据

你可能会问:为什么非要编码成10位?直接传8位不行吗?

不行。原因有两个:

  • 时钟恢复:8位数据里可能出现连续多个0或1,接收端没法恢复时钟。编码后保证了足够的跳变。
  • EMI控制:减少跳变次数,电磁干扰就小了。这在高速传输中特别重要。

避坑指南:我曾经在一个项目里,TMDS编码的DC平衡逻辑写错了,导致画面出现水平条纹。查了两天才发现是第10位极性判断反了。所以写编码器时,一定要仔细核对DC平衡的累加器逻辑。

1.4 HDMI与DP/VGA对比

做FPGA开发板,你迟早要面对接口选型的问题。我直接给你对比一下。

特性 HDMI DisplayPort VGA
信号类型 数字(TMDS/FRL) 数字(微包架构) 模拟(RGB+同步)
最大带宽 48 Gbps(2.1) 80 Gbps(2.1) 约 400 MHz 像素时钟
最大分辨率 8K @ 60Hz 16K @ 60Hz 2048×1536 @ 60Hz
音频传输 支持 支持 不支持
FPGA实现难度 中等(有IP核) 较高(协议复杂) 低(DAC+同步)
应用场景 消费电子、开发板 PC、专业显示器 老旧设备、教学

我个人建议:做FPGA开发板时,优先选HDMI。原因很简单:

  • HDMI的IP核成熟,Xilinx和Intel都有现成的。
  • HDMI接口普及率高,随便找个显示器就能测试。
  • VGA虽然简单,但模拟信号容易受干扰,分辨率也上不去。

小技巧:如果你的FPGA开发板同时有HDMI和VGA接口,可以用VGA做调试,HDMI做最终输出。调试时VGA的模拟信号更容易用示波器抓波形。我当年调试TMDS时钟时,就是先用VGA确认了像素时钟正确,再切到HDMI的。