资讯动态

HDMI转MIPI桥接芯片IT6625实战:带宽、设计与调试全解析

发布时间:2026/10/22 8:39:47 来源:尧图企业网站定制
上周帮某方案板调显示链路板子上只留了MIPI CSI接口外部输入却是一路HDMI 2.0信号。翻了半天选型表最后把IT6625这颗HDMI 2.0转双端口MIPI CSI/DSI转换芯片放了进去从画原理图、布板到寄存器调通前后折腾了小半个月。这篇就把整个过程整理出来为什么非要加这么一颗桥接芯片、数据手册里的带宽怎么算、硬件设计有哪些容易踩的坑、寄存器初始化顺序是什么以及我在这颗芯片上调过的三个真实问题。给同样需要在嵌入式平台接HDMI输入的读者做个参考尤其是第一次碰HDMI转MIPI桥接方案的朋友。1. 一颗桥接芯片到底在翻译什么1.1 HDMI和MIPI是两个世界很多人第一次接触这类芯片时会困惑直接接不行吗还真的不行。HDMI是消费电子设备上的通用输出标准内部跑的是TMDS差分信号三对数据通道加一对时钟通道。它的数据模型是像素流加消隐间隙加音频和控制包源端永远把自己当成一个信号发射器默认对面接的是一个显示器。而MIPI DSI/CSI是嵌入式系统内部总线物理层同样用差分D-PHY但协议完全另一套DSI面向显示屏CSI面向图像传感器。举个不太严谨但很好懂的例子HDMI像一趟满载集装箱的高铁进了嵌入式系统内部MIPI像是城市配送车队一个MIPI端口就是一支车队。集装箱太大必须找个中转站把货拆成小包裹再由车队送出去。IT6625干的就是这个中转站的活接收HDMI信号做时钟恢复、EDID握手、视频时序解析然后把像素数据重新打包成MIPI DSI或CSI的包格式由数据lane送出。这也解释了为什么这类芯片的寄存器会那么多它同时要扮演显示器的角色和图像源的角色。对HDMI源端它要表现得像一块标准显示器对主控端它要表现得像一个MIPI设备。两头都得伺候好。1.2 芯片在系统里的两种身份同一个转换器根据输出协议的选择在系统里承担的角色完全不同。当输出配置为DSI模式时整条链路是HDMI源→IT6625→主控内置显示控制器→LCD屏。常见于一体机、车载后排娱乐、工业HMI这类设备外部机顶盒或电脑把画面通过HDMI送进来在本地屏幕上显示。因为主控本身有DSI接口只需要把外界HDMI内容伪装成一块挂在DSI总线上的屏幕数据即可。当输出配置为CSI模式时链路变成HDMI源→IT6625→主控的CSI/ISP接口外部视频流会被当作一路摄像头数据采集进来供录屏、视频会议、图像识别或AR/VR类应用使用。很多Soc并没有HDMI输入口但几乎都有CSI接口正好靠这颗芯片补上。这个一个芯片两种角色的特性让我在做元器件选型时省了不少事。同一块硬件只需要改几行配置既能做显示方向也能做采集方向备货压力小了很多。1.3 双端口为什么是刚需IT6625最核心的卖点是双端口MIPI。想明白这一点才算真正看懂这颗芯片。一个MIPI D-PHY端口通常只有4条数据lane带宽上限大约是6Gbps以每条lane 1.5Gbps计算。到了4K60这个量级的视频流一个端口根本塞不下。双端口的第一个作用就是并联扩带宽把两个4-lane端口当成一个8-lane逻辑接口总带宽翻倍第二个作用是拆分一路做显示输出、一路做采集输出或者同时驱动两块屏幕。对工业设备这类需要一机多屏的场景这个功能直接省掉一颗芯片。所以选这颗芯片之前最好先明确自己的分辨率目标。固定1080P60的话单端口接法已经够用双端口纯属浪费真奔着4K60去单端口又必然翻车必须走双端口并联。下一节就把这笔带宽账掰开算清楚。2. 带宽算明白选型和画原理图才不会翻车2.1 HDMI 2.0输入侧的能力上限HDMI 2.0的TMDS总带宽是18Gbps这是物理层的天花板。但实际视频流量要用像素时钟乘每像素位数来算而不是直接拿18Gbps做减法。以最典型的4K60 4:2:0 8bit为例像素时钟为594MHz。4:2:0格式下每像素约12bit所以有效视频数据率是594MHz×12bit≈7.13Gbps。听起来离18Gbps还很远但这个数值只是纯像素数据的理论值实际还要加上消隐期间的空包、控制包、MIPI包头的开销所以在做链路预算时我会按这个值的1.2到1.3倍留余量也就是8.5到9.3Gbps。这是真实项目中很常用的一笔粗账。如果把格式换成4K60 4:4:4 8bit每像素24bit像素时钟仍然是594MHz有效数据率直接变成14.26Gbps再加20%余量就逼近17Gbps。HDMI 2.0勉强能跑但下游MIPI侧的负担会非常大需要8条lane全部跑在1.8Gbps以上。这也是为什么很多HDMI转MIPI方案的规格表里4K60通常只写4:2:0。2.2 MIPI输出侧的带宽账本MIPI D-PHY lane速率不像HDMI那样固定不同Soc的控制器差别很大。老一些的平台跑1Gbps/lane新的平台能跑到1.5Gbps甚至2.0Gbps以上。为了稳妥我习惯按1.5Gbps/lane做基准计算同时确认主控最高支持到多少。对照表如下目标分辨率像素时钟每像素位数有效数据率估算4-lane端口双端口8-lane1080P60 RGB888148.5MHz24bit约3.6Gbps够用余量约40%余量充足1440P60 RGB888约310MHz24bit约7.4Gbps紧张接近上限够用4K30 4:2:0约297MHz12bit约3.6Gbps够用余量充足4K60 4:2:0594MHz12bit约7.1Gbps不够够用余量约30%这个表格直接决定了我画原理图时MIPI lane的数量。如果项目只到1080P我可以只用单端口4条lane剩下4条留空如果以后有升级到4K的计划就一次性把两个端口都引出来PCB面积多花一点但不用重新设计核心板。2.3 CSI与DSI模式在配置上的不同带宽算完后还有一个容易混淆的点D-PHY物理层完全一样但CSI和DSI的包格式不同配置时要注意区分。CSI模式面向摄像头数据流是帧起始短包行数据包帧结束短包主控的ISP收到数据后自己处理图像。而DSI模式面向显示屏需要把时序参数HSA、HBP、HFP、VSA、VBP、VFP一起告诉面板还要处理blanking packet。所以做DSI输出时寄存器里要有完整的porch参数做CSI输出时porch参数可以弱化但中断和同步包必须匹配主控的camera协议。我见过有人把DSI模式的配置原样套到CSI场景结果主控采集端一直报同步错误。后来查寄存器才发现输出的包结构根本不对按CSI协议重新初始化后马上恢复正常。这类问题在初始化流程里非常值得提前留意。3. 硬件设计实操电源、差分走线和时钟复位3.1 电源域顺序不能想当然桥接芯片内部同时有数字核心、模拟PLL、HDMI接收器和MIPI发送器电源域通常分为3.3V IO、1.8V模拟、1.2V数字核心几路。数据手册里一般会给出推荐上电顺序这个顺序不能马虎。实际项目中我用了一颗四通道电源管理芯片来实现上电时序先3.3V再1.8V再1.2V每路之间延时约5ms。复位脚挂在主控GPIO上等所有电源稳定后再释放复位。如果顺序反了芯片可能初始化失败最典型的现象是I2C能扫描到设备地址但寄存器读写不正确或者输出端一直无信号。电源纹波对这类芯片的影响也很直观。MIPI数据lane在高速翻转时如果1.8V模拟电源上的纹波超过30mV眼图质量会明显变差。所以我在布局时把LDO尽量靠近芯片的电源引脚每个电源引脚都放了一颗0.1uF的MLCC靠近引脚放置再用一颗1uF和10uF做次级滤波。实测下来这种方式比一个大电容糊在远端可靠得多。3.2 差分对等长和阻抗的几个实际数值HDMI输入和MIPI输出都是100欧姆差分阻抗这个大家都知道但在实际PCB设计里细节才是关键。HDMI侧三对数据线和一对时钟线对内等长我控制在5mil以内对与对之间15mil以内。MIPI侧同理每个端口的4条数据lane和1条时钟lane对内等长5mil对间等长控制在20mil以内。这个等长要求不是随手写的MIPI D-PHY在1.5Gbps速率下1mil的走线长度差大约对应0.17ps的skew20mil就是3.4ps左右对1.5GHz信号来说是能接受的。如果放宽到50mil以上skew就接近10ps配合工艺误差很容易把眼图搞糊。还有一个容易被忽略的点MIPI lane之间不要隔着地平面缝隙走换层时也要在换层过孔旁边打一个地过孔给回流信号提供最短返回路径。我见过某块板子为了走线方便把MIPI时钟lane跨了一个电源分割区结果闪屏问题断断续续出现了一个月最后改成同层走线才消停。3.3 晶振与复位决定了能不能正常起握手参考设计上IT6625这类芯片一般外接一颗27MHz无源晶振。晶振旁边两个负载电容的取值不是随便填的要看晶振本身的负载电容规格常见的是8pF到12pF。如果参数不匹配振荡幅度偏低芯片可能偶尔能初始化、偶尔不能非常玄学。调试时建议用示波器直接测量晶振引脚确认有稳定的时钟输出后再进行下一步。复位时序也要注意。复位释放后芯片内部的PLL需要时间锁定一般要等几毫秒再通过I2C写寄存器。我习惯复位释放后先sleep 20ms再读一次ID寄存器确认通信正常然后才进入正式配置流程。很多不稳定现象其实是初始化时机太早造成的并非芯片真的故障。4. 寄存器初始化把芯片唤醒成正确的角色4.1 先读版本再谈配置拿到芯片后的第一件事不是照着评估板手册噼里啪啦写一堆寄存器而是先通过I2C扫描确认设备地址然后读ID寄存器。以我手里的板子为例上电复位后I2C总线上能扫到一个地址用i2cdetect可以看到类似i2cdetect -y 0输出里出现一个设备地址不同批次可能不一样然后用i2cdump读取该地址的所有寄存器重点看ID和版本位。这一步非常关键因为桥接芯片的寄存器定义偶尔会随silicon revision变化SDK里的配置头文件不一定匹配最新版本。如果跳过这一步直接改配置出了问题会非常难排查。读到的版本号先记下来再和SDK里标注的版本对照。我后面翻车的那次调试根源就是版本不匹配这个放到最后一节详细说。4.2 EDID是握手的第一步HDMI源端在输出视频前会通过DDC通道读取显示器的EDID里面写着这个设备支持哪些分辨率。对IT6625来说它需要让HDMI源端觉得对面是一块正常的显示器所以EDID必须提前准备好。最简单的做法是让芯片内部处理EDID或者外挂一颗EEPROM。我这次用的是外挂方式从一台同样分辨率的显示器上抓取EDID数据转成hex写入EEPROM的0x50地址这个地址就是HDMI DDC规范里EDID存放的标准地址。写入时注意校验和字节是最后一位算错了源端会读出来直接拒绝握手。还有一个实践心得如果项目只需要固定1080P输出EDID里只声明一个时序就足够了越简单越稳定。声明了一堆4K分辨率HDMI源端可能优先输出4K信号结果下游MIPI侧又没配置成相应模式就会出现握手成功但花屏的怪问题。4.3 视频链路的配置顺序配置寄存器时执行顺序比单个值更重要。我的初始化流程如下软复位等待10ms。配置输入侧开启HDMI输入使能自动检测输入模式。配置输出协议选择DSI或CSI模式设置端口A/B的lane数量、lane极性、时钟lane。配置像素映射包括字节序、颜色空间等确保输出的RGB/YUV顺序正确。使能输出并读取中断状态寄存器确认输入已锁定。用伪代码表达大概是i2c_write(0x7A, REG_SOFT_RESET, 0x01); sleep(10); i2c_write(0x7A, REG_INPUT_MODE, 0x01); // HDMI自动检测 i2c_write(0x7A, REG_OUTPUT_PROTOCOL, 0x01); // 0x01CSI, 0x02DSI i2c_write(0x7A, REG_LANE_NUM_A, 0x04); // 端口A 4条lane i2c_write(0x7A, REG_LANE_NUM_B, 0x04); // 端口B 4条lane i2c_write(0x7A, REG_PIXEL_MAP, 0x00); i2c_write(0x7A, REG_OUTPUT_ENABLE, 0x01);具体寄存器偏移和值以芯片SDK头文件为准但顺序逻辑是通用的先让芯片知道自己要干什么再开启输出。4.4 双端口映射最容易理解出错的地方双端口不是简单的各出一路就完事在并联模式下两个端口的数据分配方式需要显式配置。以4K60 4:2:0为例如果使用8-lane联合模式芯片要把像素流分配到8条数据lane上。有的场景按奇偶像素拆分有的按行拆分具体取决于芯片支持的映射模式也取决于主控MIPI控制器的预期。这里必须提前确认主控端的CSI/DSI控制器是否支持双端口联合这种逻辑。如果主控根本不支持8-lane联合即使芯片输出了8条lane主控也只会当成两个互不关联的设备来枚举最后配置出来的图像是拼接错乱的。我这次的主控只支持单端口4-lane所以最终方案是固定1080P输出只用端口A端口B空置。这也说明一个道理选型时芯片的能力要和主控的能力一起比对光看转换芯片本身带宽够用远远不够。5. 调试实录三个让人抓狂的问题5.1 黑屏根源是HDMI的HPD引脚悬空第一个问题最诡异HDMI源端一台电脑显示已经连接但整个链路就是没有画面。示波器量HDMI差分对有TMDS信号量IT6625的MIPI输出数据lane有翻转时钟lane也有脉冲可屏幕始终黑着。排查链路很长。先怀疑EDID没写对反复抓取和比对EEPROM里的内容没问题。又怀疑输出时序不匹配对照数据手册检查了所有porch参数也没错。最后用逻辑分析仪抓DDC通道上的通信发现源端在读取EDID时芯片确实正确应答了但源端随后并没有真正开始输出有效视频帧。再往上游查问题落在HPD引脚上。HPDHot Plug Detect是HDMI座子上的第19脚源端靠它判断显示器是否物理连接。这引脚在自研板上悬空了芯片没有机会通知源端我准备好了。源端认为显示器没插好始终停在待机状态当然不会有画面。修复方式很简单把HPD脚通过100k电阻上拉或者直接接到芯片输出的HPD信号脚让芯片在完成输入检测后主动拉高HPD。改完重新上电握手一次通过画面立刻出来。这个坑在现成主板开发板上基本不会遇到因为厂商早就处理好了但自研板特别容易漏。5.2 偶发花屏MIPI lane之间的skew超标第二个问题更磨人画面能出来但偶尔闪一下花屏有时候跑十分钟没事有时候一开机就花。一开始怀疑是电源问题换了一颗更高级的LDO纹波从20mV降到8mV问题依旧。又怀疑是复位时序问题把延时从5ms加到50ms还是没有改善。后来我试着把MIPI lane速率从1.5Gbps降到1.2Gbps花屏频率立刻明显下降但并没有完全消失。这个现象其实已经把方向指出来了信号完整性有余量不足的问题而不是逻辑功能的问题。用示波器逐个量MIPI lane发现时钟lane和其中一条数据lane的时序偏差接近300ps。查PCB设计文件问题根源是时钟lane在换层处绕了一截内层走线数据lane全部走表层两组信号的传播速度不一样产生明显的skew。虽然每条lane都做了对内等长但对间等长并没有严格约束。修复方案是硬件改版让时钟lane和数据lane同层走线重新控制对间等长并且给时钟lane两侧加了包地铜箔。新板回来后连续跑了一整天压力测试没有再出现过一次花屏。这次排查让我记住了一个结论MIPI信号第一次调不通别急着怀疑芯片先把lane rate降一档做对照测试。降速后问题缓解说明硬件布线大概率有缺陷降速后无变化才应该去查配置。5.3 双端口只出一路silicon版本悄悄更新了第三个问题来自我最初想用双端口方案的时候。配置完寄存器端口A输出正常端口B却怎么都不出信号。排查过程从软件开始反复确认双端口使能寄存器写进去了读取回来也是期望值。接着用示波器量端口B的lane完全没有翻转说明芯片内部就没有把数据送出来问题不在PCB走线。查了SDK中的配置头文件又翻出芯片最新版本的数据手册发现silicon revision更新后双端口使能逻辑多了一个新的控制寄存器。老SDK里没有这个寄存器所以端口B永远处于关闭状态。而我手头这颗芯片恰好是新版本硅片按旧SDK的配置表去写自然无效。解决办法是从新版本SDK里导出配置头文件重新编译初始化代码。但更重要的是这次排查暴露的问题采购批次不同芯片的silicon revision可能不同寄存器定义也可能悄悄变化。所以在项目量产阶段必须把上电读版本号纳入自检流程发现版本和配置表不匹配时直接报警而不是等到调试时才去对比。6. 与主控配合的细节以及什么时候该省掉这颗芯片6.1 设备树里CSIC和DSI的接入方式不一样如果主控跑LinuxIT6625在设备树里的接法取决于最终用的是CSI模式还是DSI模式两种接法差异很大。CSI模式下这颗芯片在软件体系里会被当成一个图像传感器来注册。I2C节点下挂camera subdeviceCSI端口节点里配置lane映射关系。设备树里常见的样子是csi0 { status okay; port { csi0_ep: endpoint { remote-endpoint it6625_ep; clock-lanes 0; >

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑