HDMI完全手册:从EDID到信号完整性,eDP转HDMI的实战调试指南 简介《HDMI完全手册》是一份面向消费电子工程师、影音爱好者及弱电集成商的数字接口技术文档系统讲解 HDMI 的传输原理、接口类型、版本演进与工程应用。手册从模拟接口缺陷切入逐一对比复合、S-Video、分量视频和 SPDIF 的不足并围绕 1080p、Deep Color、Dolby TrueHD/DTS-HD Master Audio、HDCP 等内容以问答和章节形式给出清晰解释可直接用于方案选型、故障排查和产品设计参考。资源包含 1 个 PDF 文件压缩包约 9.34MB全文内容集中、便于离线查阅已有 609 人学习浏览。相比零散博客这份手册把 HDMI 标准特点、优势及未来扩展集中整理能帮助读者快速建立完整知识框架避免在多家资料间反复查找。无论是刚接触高清影音的新手还是需要做接口选型与兼容性判断的从业者都可以从中获得从概念到应用的系统认知。 对着一块只有eDP接口的屏幕要让它把画面再转成HDMI输出给现场大屏听起来就是做个转换这么简单我做的时候却差点翻车。屏幕那边是嵌入式DisplayPort链路要协商lane数和速率输出那边是HDMI又要按标准时序出TMDS信号。两边都是1080p60但中间那笔带宽账必须算对否则要么满屏雪花要么干脆黑屏。这篇HDMI完全手册就是我从这类项目里整理出来的完整调试笔记从接口物理层、HPD/EDID到eDP与HDMI的时序换算、FPGA实现、供电设计和信号完整性全是我实际跑过的内容。1. 19根引脚背后的分工与点不亮的真相HDMI Type-A一共19pin看似不多但每一根都有明确归属。我做硬件设计时习惯先按功能分组TMDS Data0/1/2三对差分加一对TMDS Clock负责全部画面数据SCL/SDA两根线组成DDC通道源端靠它读EDID、做HDCP协商剩下的5V、HPD、CEC、Utility/ARC是供电与控制通道。很多人拿到点不亮的问题就急着换线换设备我建议先把引脚分工刻在脑子里排查路径会清晰很多。1.1 HPD热插拔不是插上就行HPDHot Plug Detect这根脚是排查第一步。sink侧通过上拉分压把HPD拉高源端检测到电平变化后才认为有设备接入随后才去读EDID、启动TMDS输出。很多自制转换板为了省事把HPD直接接死结果源端根本不认为你插了设备永远不出信号。实际调试中我遇到过电容加太大导致HPD上升沿变成斜坡的情况源端采样不到有效高电平屏幕偶尔能亮偶尔黑屏。HPD上的RC参数要按源端检测阈值去算不能随手放一个uF级电容。还有一个常见做法是假热插拔程序控制HPD拉低再拉高让源端重新读EDID。这里要注意拉低时间一般要大于100ms太快源端会直接忽略这次电平变化。1.2 EDID读取失败黑屏问题里最高频的根因EDID是显示器用EEPROM存的一份能力描述表里面写了支持的分辨率、刷新率、色彩格式、物理尺寸等信息源端通过DDCI2C地址0x50读取。DDC总线虽然简单但受上拉电阻、线缆长度、连接器寄生电容影响很大。我的经验是黑屏或者只有低分辨率时先抓DDC波形。如果SDA/SCL边沿很缓把上拉电阻从2.2k调到1.5k试试如果读到一半总线卡死往往不是上拉问题而是sink端ESD保护器件结电容太大。还有一个容易忽略的公板电路在量产时EEPROM内容被改写损坏表现为校验和不过怎么调电路都救不回来只能重新烧录。1.3 CEC和ARC调试时容易被忽略的辅助通道CEC走13脚是单线低速控制总线用于设备联动比如电视机遥控器控制HDMI CEC设备。调试时如果系统里其他设备抢占了CEC总线偶尔会导致HDMI握手异常虽然不是主因但排查到后期值得看一眼。ARC/eARC走14脚负责音频回传与视频链路独立做音视频一体方案时会用到。我在一块主板上遇到过eARC PHY和TMDS布线距离太近导致eARC回传音频时偶发花屏最后靠把eARC PHY供电和信号走线拉开才解决。2. EDP转HDMI时序、lane数与速率这笔账怎么算eDP转HDMI这个需求核心不是转而是两边时序参数能不能对齐。eDP是嵌入式DisplayPort走的是Link Training和lane协商HDMI走的是TMDS固定时钟。两者的1080p60含义不完全一样。2.1 先算1080p60的带宽很多人以为计算分辨率只要看像素时钟但涉及eDP时必须把blanking和编码开销也算进去。以最常规的1920x108060Hz为例含blanking的总行像素约2200总行数约1125总像素2200×1125247.5万乘以帧率60像素时钟148.5MHzRGB888即24bit裸数据率148.5MHz×24bit3.564Gbps如果是eDP物理链路走8b/10b编码实际需要的链路带宽3.564Gbps/8×104.455GbpsHDMI这边走TMDS编码开销同样是10bit一个像素分量所以也需要4.455Gbps编码后带宽对应TMDS时钟148.5MHz、三条数据通道各1.485Gbps。这个计算模板可以推而广之先确认包含blanking的总像素再确认色深再考虑编码开销最后看链路能提供多少有效带宽。只看有效像素数不算blanking会低估带宽需求这是我见过最多的计算错误。2.2 eDP lane数和link rate的选择逻辑eDP常见的link rate有HBR12.7Gbps/lane和HBR25.4Gbps/lane更高还有HBR38.1Gbps/lane。物理链路用8b/10b编码有效带宽要打八折HBR1实际约2.16GbpsHBR2约4.32Gbps。回到1080p60 RGB888裸数据率3.564Gbps用HBR2一条lane就够了用HBR1则必须两条lane。如果升到10bit色深数据率要再乘5/4达到4.455GbpsHBR2单lane有效4.32Gbps就不够了只能用两条lane HBR2或者一条HBR3。实际设计时还要看eDP panel本身支持多少条lane。有的小屏只有2lane你按4lane去初始化链路训练偶尔能成功但更多情况下panel直接黑屏。2.3 转HDMI输出时最容易忽略的blanking差异eDP panel的原生timing往往采用Reduced Blanking水平和垂直porch都很小但HDMI源端的显卡或盒子输出却偏标准CVT或CTA时序。两者分辨率可能相同但像素时钟和blanking并不一样不能直接拿来就用。转接芯片或FPGA内部需要重建像素时钟读取HDMI输入timing再生成panel期望的timing。如果这两个时钟不同步画面就会出现撕裂或者左右偏移。调试时我会同时抓输入和输出的DE、VSYNC、HSYNC看在哪个小格上错位再判断是buffer溢出还是时序参数没配对。另一个坑是Link Training的时机。eDP必须在上电后由source和sink协商如果panel电源还没稳定就发起训练大概率失败。把初始化顺序改成先稳定电源、再读取DPCD、再Link Training、再送视频流成功率会高很多。3. FPGA实现HDMI从TMDS到FRL的演进与选型FPGA做HDMI是很多嵌入式工程师会碰到的需求。FPGA灵活能自定义时序也能做图像处理但HDMI协议本身的演进给FPGA实现带来了不小麻烦。3.1 用FPGA出TMDS的基础结构用FPGA做HDMI输出本质上是把并行像素数据编码成串行TMDS流。经典结构是像素时序生成器产生DE、HSYNC、VSYNC和RGB数据送入3个TMDS编码器每个编码器把8bit像素数据转成10bit直流平衡码再用并转串把10bit以10倍像素时钟速率逐bit发出。关键关系是时钟像素时钟P对应HDMI的TMDS Clock串行速率是10P。比如1080p60的P148.5MHz三路数据通道每路就是1.485Gbps。这个速率在FPGA里通常用OSERDESE2这类原语实现7系列Artix-7的HP BANK做1080p没问题4K30也勉强但4K60的TMDS时钟到594MHz基本要上GTX/GTH高速收发器了。3.2 TMDS电平不能直接拿LVDS怼最容易踩的坑是电平标准。FPGA普通IO的LVDS输出和HDMI的TMDS输出在电气特性上并不一致直接用LVDS差分对怼到HDMI连接器短距离勉强出图长一点就各种花屏、重影。稳妥做法是FPGA输出内部逻辑的并行10bit数据外部接一颗专用TMDS PHY或驱动芯片或者用电阻网络做电平转换。部分厂商如Lattice的ECP5在IO标准里直接支持TMDS能省不少事选型时要先确认。千万不要迷信FPGA引脚多所以随便出HDMI。IO bank的供电电压、输出驱动能力和封装走线都会决定能不能稳定跑到1.485Gbps这方面没有捷径只能看数据手册的眼图参数和实测。3.3 HDMI 2.1的FRL为什么难搞HDMI 2.1把TMDS换成了FRLFixed Rate Link本质是4条数据通道加嵌入时钟最大每通道12Gbps总带宽48Gbps。编码也从TMDS变成16b/18b还带纠错和链路训练。这不只是换个编码器的事整个物理层设计思路都变了。对FPGA开发者来说FRL最直接的影响是普通IO跑不了12Gbps必须用高速收发器链路的训练、误码监测、FEC恢复也都要自己写工作量巨大。我给做FPGA高清方案的朋友的建议是目标1080p或4K30可以勇敢地用TMDS方案目标4K120或8K老实去找桥接芯片或ASSPFPGA只做协议和图像处理部分。3.4 我在FPGA HDMI上踩过的具体坑花屏多半是并转串时序没收敛或者TMDS编码器在DE和control区切换时状态机错乱。画面偏移porch参数不对把blanking调错位。黑屏但有信号sink没有锁定时钟重点检查TMDS Clock走线和焊盘。换分辨率黑屏PLL重新锁定需要时间视频源切分辨率的瞬间FPGA这边没有复位重新同步就会一直黑。用ILA抓内部信号看不出问题最后靠外部示波器看TMDS眼图才发现是输出IO驱动强度不足。4. HDMI供电电流5V引脚上的50mA与余量之争HDMI的5V供电问题看起来最简单实际上很容易翻车尤其是做转接板、采集卡这类设备时。4.1 5V脚的电流构成HDMI的19脚是5V由源端提供给sink端的EDID、HPD和部分控制电路使用。关于电流规范里经常提到50mA这个数字但它更多是sink侧负载预算的概念意思是sink从这根脚取电不应超过50mA。这50mA听起来不大但实际拆开看并不充裕EDID EEPROM工作电流1到2mAHPD上拉电阻电流1mA上下DDC上拉可能还会从5V取几mA再算上HDMI RX芯片的辅助电路、线缆压降和瞬态浪涌余量已经很薄。如果sink端还有额外的HDCP加密芯片或LED指示电路也在5V上取电就更紧张。4.2 供电不足的故障画像与排查最典型的故障接上HDMI线源端显示无信号万用表量5V脚电压正常但插入瞬间用示波器能看到5V明显跌落跌到4.5V以下sink就乱套了。还有一种是热插拔几次后失灵ESD事件把5V上的小封装LDO打坏或者电源线虚焊。我的习惯是在HDMI连接器的5V脚放一个100nF加一个10uF电容并且用独立电源轨供5V不要和主板3.3V做简单LDO转换如果整板空间允许LDO输入输出都加磁珠。实测中我还遇到过一种情况源端设备是笔记本HDMI口5V只有很弱的驱动能力接一根劣质长线后远端5V只剩4.2VEDID完全读不出来。换成屏蔽层好、内阻低的线后问题消失。所以排查供电问题时线材本身也要纳入变量。4.3 上电顺序与ESD很多人只关心供电电流却忽略了时序。HDMI源端工作时序一般是先出5V等一段时间再检测HPD然后读EDID最后才输出TMDS。如果5V给电太慢或者HPD在5V稳定前就拉高源端可能错过检测窗口表现为插上没反应。ESD保护器件选择上结电容是命门。TMDS差分线上TVS结电容最好小于0.5pF如果用了1pF以上的管子眼图闭合长线直接闪屏。很多人反反复复查信号完整性最后发现是ESD管选大了这是比较冤的一种情况。5. HDMI电路的信号完整性阻抗、等长与屏蔽地HDMI跑到1080p以上PCB布线就不再是连通就行的事了。信号完整性直接决定画面能不能稳定显示。5.1 100Ω差分阻抗是硬指标TMDS传输要求链路等效差分阻抗100Ω。PCB设计时要专门按差分阻抗模型计算线宽线距表层微带线和内层带状线的参数完全不同。很多第一次画HDMI板的人直接用粗一点就行的逻辑结果差分阻抗跑到90Ω以下反射系数变大1.485Gbps的边沿被反射打得很难看。更隐蔽的是连接器处的焊盘。HDMI Type-A脚间距很小焊盘本身会产生阻抗不连续所以一定要选经过认证的连接器最好厂家提供过仿真或实测的封装建议。5.2 等长控制和过孔处理HDMI有三对数据加一对时钟等长要求分两个维度对内等长同一对线的P/N之间尽量控制在±5mil内对间等长数据通道之间、数据与时钟之间的skew尽量小经验值在20mil以内。如果像素时钟低比如720pskew容限会宽一些跑到1080p60以上就老老实实按这个标准做。另外高速HDMI走线尽量少打过孔如果必须跨层过孔旁边加回流地过孔避免参考平面断开后回流路径绕大圈。5.3 连接器外壳接地与地环路HDMI连接器的金属外壳怎么接地是很多产品画面水波纹的根源。外壳直接接数字地如果整机还有开关电源或者其他大电流回路数地主平会被干扰抬升。我比较稳的做法外壳接屏蔽地通过1MΩ电阻并联1nF电容再和数字地相连既泄放静电又隔离低频地环路。具体接地策略要看整机电源架构不能照抄但直接大面积连到数字地通常不是最优解。长线场景下劣质HDMI线还会让5V压降加大屏蔽层电阻大导致共模噪声滤不掉图像出现斜纹。调试时别贪便宜至少用带编织屏蔽的成品线。5.4 PHY电源去耦HDMI PHY或桥接芯片的电源引脚是敏感点。数字核电压和PHY模拟电压混用会直接把开关噪声耦合进TMDS眼图。设计时至少让PHY供电走独立LDO并在引脚附近放高频去耦电容。我遇到过一整块板只要LED亮度变化HDMI画面就跟着闪查到最后就是LED驱动和PHY共用了同一路电源。6. 一根HDMI线直连NASHEC、eARC与那些非显示玩法一根HDMI线直连NAS这个说法时不时有人问。HDMI是显示接口但它的扩展通道确实给了人一些想象空间。6.1 HEC被寄予厚望却几乎消失的以太网通道HDMI 1.4推出时提出过HECHDMI Ethernet Channel理论可以跑100Mbps以太网愿景是让电视机通过HDMI线直接联网。但HEC需要源端和sink端各自加一片专用PHY线材要求也高实际支持它的消费级设备凤毛麟角生态基本没起来。所以说到HDMI线直连NASHEC在现实设备上是不太现实的。6.2 现实可行的直连其实长这样严格说HDMI是一个单向视频管道加低速控制通道的组合视频流向是source到sink回传只有音频eARC和低速I2CDDC没有标准的TCP/IP数据上行。想用一根HDMI线直连NAS真正落地的方式通常是NAS旁边放一个播放器或开发板树莓派、电视盒子、RK3588小板都可以播放器通过网口、Wi-Fi或USB访问NAS上的内容再用HDMI把画面输出到屏幕。显示器这边得到的仍然是标准视频信号并不存在NAS里插一根HDMI线这种操作。至于把HDMI的DDC当I2C总线去传传感器数据、用eARC的PHY回传低速状态都属于非标DIY。我试过用FPGA在DDC上挂自己的I2C设备用一台特定显示器能跑通换一台设备就不认因为不同sink对上拉电阻和ESD的配置差异很大不建议作为产品化方向。6.3 如果非要一根线正确思路是什么更接近一根线直连的成熟方案是走USB-C的DP Alt Mode或者雷电/USB4底座这类方案在物理层就把视频和数据融合了。HDMI本身并没有为双向数据设计大带宽通道硬要从HDMI里榨出以太网不如选对协议。我个人的结论是HDMI还是认认真真当好显示接口这个角色NAS直连这种需求交给网络和串流方案解决体验和数据链路都稳定得多。做硬件的人容易陷入复用现有接口的执念但在错误的技术路线上硬抠代价往往比换接口更大。最后分享一个调试顺序的习惯碰到HDMI不出图先查5V和HPD再读EDID然后测TMDS时钟和差分眼图最后才去怀疑FPGA逻辑。按这个顺序排查我解决过至少八成的HDMI问题。这版手册先写到这后面再踩到新坑再回来更新。本文还有配套的精品资源点击获取