ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

IT66631双路HDMI 2.0转换器硬件设计与调试实战解析

IT66631双路HDMI 2.0转换器硬件设计与调试实战解析 前阵子做一个产品原型板子上放了IT66631做HDMI 2.0双路输出转换器从原理图到量测调试来回折腾了两周。这个圈子里提到IT66631做过视频接口方案的人应该都不陌生。这是一颗把一路HDMI 2.0输入分成两路独立输出的转换芯片带宽直接上到18Gbps支持4K60Hz 4:4:4这个级别的信号还带HDCP 2.2。它解决的痛点很具体一个信号源要同时驱动两台显示器或者两台不同分辨率的屏幕而单路转换芯片又做不到。这篇文章想结合我手头这次实际项目把IT66631的系统架构、硬件设计难点、寄存器配置方法和调试经验一次说透。无论你在做HDMI分配器、视频墙控制器还是嵌入式多屏显示方案应该都能从中找到能直接抄走的东西。1. IT66631双路输出转换器的整体架构拆解1.1 芯片在系统中的定位与数据流向IT66631这类芯片通常不会单独存在而是挂在主控SoC或者前端信号源之后。典型的数据流向是信号源比如PC显卡、机顶盒、SoC的HDMI控制器输出TMDS信号经过连接器和ESD保护进入IT66631的接收端芯片完成接收、均衡、时钟恢复和协议解析之后再分别驱动两路发送PHY输出到两个HDMI连接器。这里有一个容易忽略的点双路输出并不等于把差分信号“并联复制”。HDMI是高速串行链路简单并联会造成阻抗失配和信号反射所以必须靠芯片内部的信号分发逻辑把恢复后的数据流分别映射到两路独立的发送通道。IT66631内部集成了接收PHY、发送PHY和视频处理逻辑外部主控只需要通过I2C写寄存器就能控制输入选择、输出使能和HDCP状态。整套系统的核心价值就是把原本复杂的“一分二”高速信号处理收敛到一颗芯片里做掉。从实际应用看接IT66631的方案常见于三种场景第一是HDMI分配器一路信号源同时投两屏第二是视频墙拼接两个输出口各显示不同区域第三是信号转换比如把源端分辨率转成两路不同的输出规格。不同场景对寄存器配置和EDID策略的要求完全不一样后面会具体展开。1.2 HDMI 2.0高带宽下的协议处理HDMI 2.0相比上一代最核心的变化就是带宽翻倍。HDMI 1.4的TMDS链路总带宽是10.2Gbps而HDMI 2.0把每个通道的速率拉到最高6Gbps三个数据通道加一个时钟通道总带宽来到18Gbps。这个带宽提升直接决定了它能传输4K60Hz 4:4:4、HDR视频和BT.2020色深。在设计双路输出时输入侧需要完整接收这一整条18Gbps的数据流输出侧则相当于同时驱动两个8通道的串行收发链路整个系统的数据吞吐量接近36Gbps。这个量级下任何一点阻抗不连续、电源纹波或者时钟抖动都可能在屏幕上表现为雪花点、横纹或者偶发黑屏。这也是为什么我在设计时反复强调信号完整性和电源质量芯片本身的协议处理能力再强外围没做好一样出问题。IT66631要处理的还不止是纯数据流。HDMI 2.0引入了SCDCStatus and Control Data Channel源端和接收端之间需要动态协商FRL速度、校验误码率和调整时序参数。这意味着系统上电后不是简单把信号送出去就完了主控还要周期性查询SCDC状态必要时做重新协商。很多DIY板卡在4K60下偶尔闪一下排查到最后往往就是SCDC协商没有做完整。1.3 分配模式与转换模式的设计差异IT66631的双路输出并不只有一种工作方式。设计前必须把两个输出口的“角色”定义清楚。最常用的是分配模式输入信号直接从一路复制成两路完全相同的输出。这种模式适合两台完全相同或者接同一台电脑的显示器。分配模式对EDID处理要求相对宽松两路输出可以共用一个EDID输入侧向上游报告一个统一的分辨率范围即可。第二种是转换模式两路输出需要不同的分辨率或者时序。比如一台是4K屏另一台只有1080P这时候芯片要对其中一路做缩放或者时序重新生成。转换模式下两路输出的时钟域可能不再完全对齐寄存器里要分别配置输出PLL的分频系数EDID也必须分开管理。我遇到过很多“图像出来了但画面边缘裁切”的案例本质就是转换模式下没能按照目标屏的EDID正确配置输出时序。设计前先明确模式比回来调寄存器省力得多。我的做法是把模式选择放在原理图阶段用硬件引脚和I2C配置共同决定而不是留到软件里再临时切换这样上电时序会比较干净出厂测试也容易复现。2. 硬件设计核心信号链路、电源与布局2.1 高速差分信号链路设计HDMI的TMDS信号是差分对PCB上阻抗要控制在100欧姆正负10%这是老生常谈。但双路输出加上IT66631之后有几个细节比单路转换器更容易踩坑。第一AC耦合电容的位置。HDMI 2.0链路需要隔直电容一般放在接收端一侧。实际布局中我发现电容必须靠近芯片输入引脚而不是放在连接器旁边。电容和引脚之间的走线越短越好否则这段走线会形成一个阻抗不连续的stub4K60下容易出现码间干扰。第二差分对内部的长度匹配。一个TMDS通道的四对线对内长度差控制在5mil以内对与对之间控制在20mil以内。这个精度在普通两层板上很难做到所以IT66631的板子强烈建议四层板起步专门留一层完整的地平面做参考。第三ESD保护器件的选择。HDMI连接器必然会加TVS管但TVS管的结电容会直接影响高速信号的眼图。选型时认准低电容型号比如单通道结电容低于0.5pF的器件。有些便宜的ESD阵列标称能用实际跑1080P没问题一上4K就丢包。ESD器件摆放也要贴近连接器把雷击和静电泄放路径挡在板边。2.2 电源树与去耦策略IT66631内部的电源域大致可以分成三类数字核心、模拟PLL、HDMI PHY收发器。数字核心一般用1.2V左右的低电压消耗动态电流大可以用DC-DC供模拟PLL对纹波最敏感最好独立用低噪声LDO甚至要加π型滤波器HDMI PHY供电通常在2.5V到3.3V之间输出驱动能力直接跟电源质量挂钩纹波控制在30mV以内是底线。我在这块板子上做了三路独立的电源分配DC-DC输出1.2V给数字核心两路LDO分别给接收PHY和发送PHY供电模拟PLL单独再接一路超低噪声LDO。每一路电源引脚旁边至少放一个0.1uF的高速去耦电容再叠加一个1uF的体电容。关键位置还要放一个4.7uF的大容量储能电容应对瞬时大电流。一个容易忽略的问题HDMI连接器的5V供电和芯片的供电必须分开走线。如果显示器通过HDMI线回灌5V跟芯片电源产生串扰轻则花屏重则烧接口。我在两路输出连接器的5V引脚上都加了自恢复保险丝和独立的LC滤波实测过很多种显示器和线缆都没有出问题。2.3 关键布局走线与散热实践经验布局是整个设计成败的胜负手。IT66631尽量放在板子中央偏输入连接器一侧让输入差分对从连接器进来后能直短地到达芯片。两路输出连接器分列芯片两侧输出走线各自向外发散避免三路高速信号在芯片附近交叉。芯片底部的大焊盘是主要散热通道我打了9个过孔到背面地平面孔径0.3mm焊盘均匀分布。不要小看这个动作IT66631跑4K60双路输出时芯片表面温度稳定在65到75度之间。如果大焊盘下面没有过孔阵列热量堆在封装内时间一长就会出现偶发信号失锁。对可靠性要求高的项目还可以在最外层再贴一块小型散热片温度能再降十度左右。另外还要提一下HDMI连接器的机械固定。两个输出口都在板边拔插时受力很大连接器的固定脚必须焊接到地并且周围多铺铜。我见过有板子连接器只焊了信号引脚插拔几次之后信号脚松脱出现时好时坏的故障很难查。3. 软件与调试寄存器配置与信号验证3.1 I2C初始化流程与寄存器操作IT66631的上电初始化是整个软件流程里最重要的一环。顺序如果不对后面可能一路灵一路黑。我手头项目的做法是主控上电后先延时等待电源稳定然后对芯片执行软复位再关闭两路输出按顺序配置输入通道、EDID和输出通道最后才使能输出。下面的代码是我调试时常用的初始化伪代码框架写成这样是为了方便移植到不同平台// IT66631 I2C 初始化流程伪代码具体寄存器地址以芯片手册为准 // 1. 软复位 i2c_write(chip_addr, 0x00, 0x03); mdelay(50); // 2. 读取输入状态寄存器确认 TMDS 信号锁定 uint8_t status i2c_read(chip_addr, 0x01); if ((status 0x01) 0) { printf(Error: TMDS input not locked\n); } // 3. 关闭两路输出通道避免初始化瞬间出现错误信号 i2c_write(chip_addr, 0x10, 0x00); i2c_write(chip_addr, 0x11, 0x00); // 4. 配置输入侧 SCDC / EDID 参数 i2c_write(chip_addr, 0x20, 0x00); i2c_write(chip_addr, 0x21, 0x01); // 5. 逐路配置输出使能 i2c_write(chip_addr, 0x10, 0x01); // OUT0 enable i2c_write(chip_addr, 0x11, 0x01); // OUT1 enable注意每次切换分辨率或者热插拔后都要重新读输入锁定状态。我测试时踩过的一个坑是只配置了一次就以为万事大吉结果换了台只支持1080P的显示器之后输出一直黑。后来才发现切换显示器后SCDC协商状态变了需要重新写一遍输出参数。可靠的做法是在系统检测到HDMI热插拔中断后把整个初始化流程重跑一遍。3.2 用示波器和逻辑分析仪验证信号质量软件配置到位不代表硬件就稳了。IT66631的板子调完第一件事不是接显示器而是用示波器测PHY输出波形。HDMI 2.0的TMDS信号单端摆幅约400mV到600mV差分信号用高速探头测量。在芯片输出引脚附近测到的眼图应该呈现清晰的“窗户”如果眼图闭合严重就要回头检查阻抗和电源。测量时重点关注三点一是时钟通道的抖动二是每个数据通道的眼高三是各通道之间的一致性。我处理过一次画面右侧有重影的问题测下来发现是其中一路输出差分对内长度差做到了十几mil超出规格。重新拉线换版后重影消失这个案例非常典型。如果手头没有示波器至少也要用逻辑分析仪看I2C总线的读写时序是否正确。IT66631初始化失败时很常见的一个现象是I2C地址不对导致芯片没有响应。逻辑分析仪一抓就知道是地址错误、电压不匹配还是时序不满足。3.3 EDID管理与SCDC配置要点EDID是HDMI链路里最容易出幺蛾子的地方。IT66631内置EDID RAM或者可以外挂EEPROM主控通过I2C把显示屏的EDID读出来再填到芯片的EDID RAM里供源端读取。双路输出时分配模式可以用同一份EDID转换模式则必须分别管理两路EDID。我有一个比较固执的习惯所有上过机的EDID都会用软件保存一份日志标注对应显示器型号和分辨率。出现问题的时候翻日志定位很快比现场猜要高效得多。SCDC方面4K60 4:4:4传输必须保证SCDC通道正常否则源端可能降级成4:2:0甚至黑屏。调试时可以通过I2C回读SCDC状态寄存器确认源端和IT66631链路是否处于正常的快速模式。4. 常见问题与排查技巧实录4.1 黑屏/无信号的排查路径黑屏是这类转换器最常见的故障但也最容易系统化排查。我总结的排查路径是先分段落再逐个排除第一步查输入侧。断开输出用示波器看芯片输入引脚有没有TMDS信号再用I2C读输入锁定寄存器。输入没锁定问题在源端、线缆或输入走线。输入已锁定但没输出问题在芯片配置或输出链路。第二步查输出侧。确认两路输出的使能寄存器已经置位然后测输出连接器的差分信号。总线上有信号但屏幕黑多半是EDID没有正确加载让源端误判了分辨率。第三步查供电。黑屏的同时如果芯片表面异常发烫优先怀疑输出PHY的供电没起来。我碰到过LDO焊接虚焊导致3.3V只有2.9V的现象信号极不稳定。4.2 画面闪烁、掉帧与时钟不稳闪烁和掉帧的根源往往是时钟不稳具体讲是IT66631输出PLL的参考时钟受干扰或者抖动过大。做电路时晶体或者晶振要尽量靠近芯片的时钟引脚周围不要走大电流开关信号底下不要铺其他信号层。开关电源的switch节点如果离时钟线太近会在屏幕表现为周期性横纹这时优先调整PCB布局而不是改软件。处理过一次比较棘手的情况画面在普通显示器上正常接上一个大屏就10秒闪一次。排查后发现是大屏的HDMI回灌噪声通过线缆耦合到了芯片的电源地导致PLL周期性失锁。后来在输出连接器地引脚和芯片地之间加了磁珠问题解决了。这类问题往往和外接设备强相关现场复现和分层隔离是唯一的办法。4.3 HDCP认证失败的处理HDCP 2.2是4K视频源端必须支持的协议但实际调试中很多黑屏其实是HDCP握手失败引起的。IT66631内部通常有HDCP密钥存储或者需要主控把密钥写入芯片。如果密钥没有正确加载源端会在握手阶段直接断开画面。遇到HDCP问题第一件事是确认密钥是否烧录成功第二是检查系统时间同步。HDCP 2.2依赖系统时间和证书有效性时间乱了一样无法通过认证。开发调试阶段可以先把HDCP关掉确认基础图像通路正常再单独开HDCP排查。这个顺序能帮你分清楚是链路问题还是协议问题。5. 写在最后的一点经验我在这块板子上反复折腾之后最大的体会是双路HDMI 2.0转换器方案硬件的角色比软件更重信号完整性和电源设计一旦定型后面再怎么调寄存器都救不回来。所以如果你打算自己画板子优先把钱和精力花在四层板、完整的参考地平面、低噪声电源和精准的阻抗控制上这些才是IT66631能稳定跑4K60双路输出的前提。刚开始验证的时候我建议先不上大屏不做复杂分辨率老老实实用一套1080P输出把I2C流程跑通再往上堆4K和HDCP。实测下来这种逐步加码的方式定位问题最快。另外一个细节是打样回来先拿万用表量一遍电源对地阻抗再上电图省事直接插电一旦存在短路可能连烧两片IT66631。这个芯片并不便宜多花五分钟量一量能省下好几天的返工时间。这个方案里值得继续折腾的方向也很多比如把两路输出改成一路4K一路超宽屏、加上音频回传通道、或者跟主控SoC深度集成做动态分辨率切换每个方向都有新坑。以后有空再单独写出来跟你们聊。
返回列表