ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

IT66322应用与调试:HDMI 2.0切换+eARC接收硬件设计要点

IT66322应用与调试:HDMI 2.0切换+eARC接收硬件设计要点 做电视主板或者HDMI周边设备的朋友对IT66322应该都不陌生。这颗联阳ITE的芯片把HDMI 2.0切换和eARC接收两件事打包在了一起一颗搞定三进一出的视频切换还能把显示端回传的音频接下来送给主控。过去做这类产品要么在切换IC旁边再挂一颗独立的eARC接收器要么用FPGA自己写逻辑成本和布线麻烦得很。IT66322出现的意义就是把这个组合方案压缩成单芯片电源、I2C配置、信号路由统一管理对硬件工程师和驱动工程师来说都省了不少事。这篇内容我结合实际调试中的经验把IT66322的切换部分、eARC接收部分、硬件设计要点和常见问题一次性聊透。想自己画板子参考的、或者在调试中遇到黑屏、无声这类怪问题的应该都能在里面找到答案。1. IT66322到底是什么一颗芯片解决切换与eARC两件事1.1 芯片定位与市场背景先说清楚这颗芯片是干什么的。IT66322本质上是一颗HDMI 2.0的切换开关常见配置是3路HDMI输入、1路输出支持18Gbps的HDMI 2.0带宽也就是4K60Hz 4:4:4 8bit或者4K60Hz 4:2:0 12bit这类常见格式。真正让它在同类芯片里显得特别的地方是内部集成了eARC接收器。过去的方案是什么一台电视主板如果有3个HDMI输入口你需要先选一颗HDMI切换器比如IT66321这种纯切换芯片把3路输入切到1路输出给主SoC。但如果电视还需要支持eARC音频回传——也就是电视通过HDMI线把内部音频送给Soundbar或功放——就得再加一颗独立的eARC接收芯片。两颗芯片加起来BOM成本高PCB面积翻倍电源和I2C控制都要分别处理驱动也要维护两套。IT66322这类集成方案就是冲着这个痛点来的切换和eARC接收共用一颗芯片硬件布板简单软件上也只需要维护一套I2C控制逻辑。从产品形态上看IT66322很适合用在智能电视主板、HDMI切换盒子、矩阵设备、以及一些带多输入功能的显示器上。如果你做Soundbar或者AV功放的HDMI输入板也会用到它——因为功放需要有多个HDMI输入同时还要能处理电视回传的eARC音频。1.2 芯片功能框图拆解我习惯把一个HDMI切换器拆成三部分来看高速信号通道、低速控制通道、以及音频通道。高速信号通道指的就是TMDS或者HDMI 2.0下的FRL前身不过IT66322主要针对TMDS架构那几对差分线。3路输入各有4对差分线3对数据1对时钟输出1路也是4对差分线。芯片内部的切换逻辑就是把这3组输入中的1组连接到输出端。这个过程的难点在于高频信号的完整性信号从输入到输出经过的内部路径、开关的导通电阻、通道间的串扰都会影响眼图质量。低速控制通道是很多人做板子时忽略的部分。HDMI不是只有高速差分线它还有5V电源线、HPD热插拔检测线、DDC通道I2C总线、CEC控制线。IT66322内部集成了对这些控制信号的缓冲和切换逻辑。比如DDC通道如果3路输入的DDC直接并联到主控的I2C上设备地址冲突、总线负载过重都是问题芯片内部做一层缓冲就能隔离。音频通道是eARC接收功能的核心。eARC信号从当前活动的HDMI端口的特定引脚上进来经过芯片内部的eARC物理层接收电路再通过I2S、SPDIF或者TDM接口输出给主SoC。IT66322相当于一个音频网卡把差分信号解调成主控能处理的数字音频格式。这颗芯片的配置和控制是通过I2C接口完成的也有中断引脚可以上报热插拔状态变化。SoC通过I2C读芯片状态、写切换命令、配置eARC功能。用生活化的类比来说IT66322就像一个带智能调度功能的高速公路立交桥3条高速公路汇聚进来它决定放行哪条车道上的车流同时还有一条专门输送音频的管道能把反向过来的音频信号单独接出来。2. HDMI 2.0切换部分的设计要点2.1 切换通道与信号完整性HDMI 2.0的TMDS信号单通道速率最高到6Gbps3条数据通道加起来就是18Gbps。这个频率下信号完整性就不再是加分项而是必选项。IT66322这类切换芯片本质上是一个多路选择器但芯片内部的开关矩阵不可能做到像一根导线那样无损。所有这类芯片都会在数据手册里标注一个关键参数差分回波损耗和插入损耗。选型时不能只看支持版本还要看它在6Gbps频率下的损耗指标以及有没有内置均衡EQ功能。IT66322在输入端有均衡补偿能力可以对抗较长HDMI线缆带来的高频衰减。这个功能特别重要因为用户家里用的HDMI线质量参差不齐有些劣质线2米就有明显衰减有均衡的芯片能多扛几米。PCB设计上高速差分线从HDMI连接器到芯片输入引脚必须按100欧姆差分阻抗控制走线。3组输入的差分对之间要保持足够间距至少做到3倍线宽以上避免串扰。同一组差分对内等长非常重要6Gbps信号一个UI只有约167ps50mil的等长偏差就会带来明显的影响。有条件的用传输线TDR测试验证一下没条件的就严格按1度走线、弧线倒角、减小过孔数量来控制。2.2 5V、HPD、DDC通道的处理逻辑很多工程师第一次调HDMI切换器时都会在HPD上踩坑。HPDHot Plug Detect是用来告诉源端“我这边的接收端已经准备好了”的信号。如果HPD一直保持高电平源端就会认为随时可以输出信号如果HPD拉低源端会主动关闭输出、进入待机。在多进一出的切换架构里HPD必须跟随当前激活端口来管理。IT66322内部会做这个处理但前提是软件配置正确。逻辑上应该这样只有当前被选中的输入端口对应的HPD才置为高电平通知那个源设备开始输出其他没有选中的输入口HPD保持低电平让那些源设备知道“你现在没被接收”。如果软件配置错误把所有输入口的HPD都拉高会出现一个很怪异的现象所有源设备都认为自己在被接收但同时只有一个端口真正被切到输出另外两台设备照样输出信号只不过是空转耗电不说还有可能引起HDCP握手异常。DDC通道解决的是“源端怎么读取显示端信息”的问题。标准I2C上挂着EDID数据源端通过DDC读取即可。3路输入的DDC如果直接并在一起总线电容会超标而且某一端口的分立器件故障有可能影响全局。IT66322内部做了DDC的buffer处理相当于每个端口都有独立的DDC总线芯片内部再切换到当前需要的那一路。5V检测相对简单用来判断HDMI源端是否有电。一般源端的5V会直接连到芯片的检测引脚或者通过电阻分压送过去。这个信号也就是前面说的HPD和端口状态判断的基础。2.3 HDCP直通与握手细节HDCP是高清数字内容保护协议单靠切换器无法破解也不应该破解但切换器可以做一个“透明通道”。IT66322对HDCP 1.4和2.2的处理方式是直通芯片本身不参与密钥交换但它必须保证切换前后HDCP的状态能正确重置。实际遇到最多的问题是切换后黑屏几秒钟才恢复。这个其实是正常的因为HDCP重新握手需要时间。但如果黑屏超过5秒甚至彻底没画面就要检查芯片在切换前是否正确通知了对端设备。有一种处理方法是先拉低HPD、再切换、再拉高HPD让源端重新发起HDCP握手。有些SoC的软件流程是直接写切换寄存器而不去动HPD就容易出现握手卡死。IT66322的寄存器里通常有相关的配置位可以设置切换时HPD的自动行为调试时要仔细看数据手册确认时序。DDC和HDCP紧密相关因为HDCP 2.2的密钥交换就是通过DDC通道完成的。如果DDC缓冲配置不当可能导致HDCP握手时的时序异常。你可以把HDCP握手理解为源端和显示端在DDC通道上的一段加密对话切换器相当于对话中间的一条电话线如果电话线质量差或者被交换机错误地挂断了对话自然就断了。3. eARC接收的设计要点与集成难点3.1 eARC与ARC的区别为什么需要独立的接收方案eARCenhanced Audio Return Channel相比ARC最大的提升是带宽和音频格式支持。ARC走的是SPDIF本质上是用一根线传输IEC 60958格式的音频流最多支持到Dolby Digital 5.1这种压缩音频带宽只有1Mbps级别。eARC用的物理通道完全变了它借用HDMI Ethernet Channel引脚就是HDMI 19、20脚所在的那对差分线以差分信号传输音频带宽可以到约37Mbps实际音频净荷更高足以承载Dolby Atmos、DTS:X这类未压缩的多声道音频。IT66322内部集成了eARC的物理层接收器和协议解析模块。外部看来它不需要额外的引脚连接——eARC信号就从HDMI端口的Ethernet差分对上进来芯片自动识别是eARC还是ARC模式然后解析出音频数据通过I2S或SPDIF输出给主控。eARC是在ARC基础上演进出来的为了保证兼容性eARC设备需要支持回退到ARC。IT66322这些接收芯片在做产品设计时需要考虑到如果对端设备不支持eARC要能自动降级为ARC接收。这个回退过程不是简单的电平判断它涉及eARC协议里的初始化握手。如果对端是只支持ARC的老设备它会通过CEC的物理信息传递表明自己不支持eARCIT66322检测到这个之后切换到ARC模式把SPDIF音频从eARC的对上解出来。3.2 eARC接收路径的信号流把eARC接收的路径理清对调试很有帮助。信号从HDMI线缆进入连接器后先是eARC的差分对走线进入IT66322。eARC物理层对共模电压和差分电压都有明确要求设计上要预留AC耦合电容位置吗实际上eARC标准里对AC耦合的要求是“在接收端需要”但很多HDMI连接器设计里已经把这些电容考虑进去了。我的做法是严格参照IT66322的参考设计让eARC差分对走线尽量短且远离其他高速信号。芯片内部的eARC协议引擎解析出音频帧后会缓冲并整理成并行音频流。IT66322提供了多个音频输出接口选项比如I2S、SPDIF、TDM。选择哪种接口取决于后端主控SoC的音频子系统。I2S适合高质量多声道SPDIF适合连接外部音频DAC或者回传给HDMI ARC发送端。TDM则适合多个音频流复用的情况。配置这些音频输出格式要通过I2C寄存器设置。实操中最容易出错的是I2S的格式匹配。主控的I2S接口可能是标准格式也可能是左对齐/右对齐位宽是16bit还是24bitMCLK频率是256fs还是512fs——这些都要和IT66322的输出配置对上。如果配置不对声音会有明显的噪声或者完全无声。我建议先设置成SPDIF输出验证通路因为SPDIF格式固定容易排查确认芯片eARC接收正常后再切到I2S调格式。3.3 eARC与HDMI切换的联动机制一个容易被忽略的细节是eARC不仅仅是一个独立的音频接收通道它还和当前的HDMI切换状态相关。eARC的信号按理说应该来自于当前正在播放音频的显示设备。但在切换器的应用场景里3个HDMI输入端可能分别连着电视盒子和Soundbar——有些设备既可能做源也可能做eARC的发起方。芯片需要判断当前哪一路输入是“有效eARC信号源”。这通常由软件来控制当某一输入端口被切换选中时eARC接收功能就监听该端口的Ethernet差分对。这里我踩过一个坑。某些场景下电视会通过CEC命令控制功放切换输入源同时又要发送eARC音频。如果芯片的切换状态和CEC命令不同步eARC数据就会从错误的端口进来导致声音完全对不上。解决方法是在SoC的固件里建立统一的HDMI源管理逻辑CEC命令、HDMI切换、eARC监听三者必须同步操作。也就是说收到CEC切换命令后先切HDMI通道再切换eARC监听端口两个操作的间隔不能太大否则就会出现一瞬间的音频中断。eARC的初始化还有一个时序问题。eARC标准里定义了Discovery发现过程接收端要回应源端的探测告诉对方“我支持eARC”。这个过程依赖DDC通道上的寄存器读取。如果SoC在系统启动时没有及时对IT66322做初始化电视端的eARC源可能已经发了探测信号结果没收到回应就锁死在了ARC模式。解决的办法是把eARC能力信息在系统启动早期就配置好同时确认芯片在复位释放前DDC通道不至于拉死总线。4. 硬件设计实操原理图与PCB布局的坑4.1 电源、复位与时钟设计IT66322是数模混合芯片电源设计要特别留意。芯片需要多路电源常见的有核心电压和IO电压。实际项目中这些电源通常由系统主板上的LDO或者DCDC提供。关键的注意事项是数字电路和eARC模拟电路之间的电源隔离。具体来说eARC的物理层电路对电源纹波敏感。如果eARC差分对的参考地平面不干净或者电源纹波过大eARC接收误码率会升高表现为声音断续、爆音。我的做法是eARC接收部分的滤波电容尽量靠近芯片对应引脚放置至少放一个1uF和一个0.1uF的组合如果PCB空间允许还可以加一个磁珠把eARC模拟供电和数字供电隔开。复位电路看起来简单但最容易埋雷。IT66322的复位引脚时序要求在上电稳定后再释放否则芯片可能锁死在异常状态。现实中遇到过复位引脚外接的RC常数太大导致芯片一直处于复位状态、I2C完全无响应的情况。调这个问题很快但是如果你不知道这是复位时序问题可能折腾很久还以为是芯片坏了。建议直接用一个带复位延时的电源监控芯片来给IT66322供复位比RC延时可靠得多。时钟方面IT66322一般需要外部晶振或者由主控提供参考时钟。晶振的负载电容要按芯片数据手册选别随便套用24MHz晶振的典型值。做eARC接收时时钟精度直接影响音频恢复的质量。时钟偏了音频采样率就偏了当主控端按照固定采样率去接收时会因为时钟失配产生周期性丢音。4.2 PCB布局与差分走线要点IT66322的layout核心就是两句话HDMI差分对按100欧姆控制eARC差分对要和其他高速信号保持距离。3路HDMI输入加1路输出总共4组、每组4对差分线板子上的资源消耗不小。布局时尽量让HDMI连接器围绕芯片摆放避免差分线绕远。如果做不到优先保证当前最常用的那一路输入走线最短其他路可以稍微放松一点要求。差分对内等长要做到±5mil组间等长控制在±15mil左右。过孔会引入额外的寄生电容每对差分线尽量少打过孔最好不超过2个。eARC差分对有一类特殊的干扰源USB3.0和PCIe信号。这些信号五行八作频率接近容易通过空间辐射耦合到eARC线上。实际项目里遇到过Soundbar在播放杜比全景声时只要插入USB3.0移动硬盘eARC声音就开始出现爆音。最后查来查去是USB3.0走线跨越了eARC差分对所在区域。处理方式就是拉开距离eARC走线两侧保证至少3倍线宽的距离内没有其他高速信号。ESD防护是HDMI接口设计中不能省的。HDMI连接器容易被用户热插拔时放电TVS管的放置位置要在连接器和芯片之间尽量靠近连接器。但TVS管的寄生电容会影响高速信号质量所以选择TVS时要注意其电容值一般HDMI 2.0应用的TVS管总电容应该控制在0.5pF以下。别图便宜选了个高电容的管子结果6Gbps眼图直接闭合那就得不偿失了。4.3 I2C配置与寄存器初始化流程IT66322的I2C从机地址在数据手册里有明确指定一般是通过芯片上的地址引脚来选择的。初始化流程我建议按以下顺序走这个顺序是我在多个项目里验证过最稳的第一步系统上电后先给芯片复位释放留足时间一般等待10ms以上。第二步通过I2C读取芯片ID寄存器确认通信正常。如果这一步读不到数据先量复位引脚电压和I2C上拉电阻别急着怀疑芯片。第三步配置全局寄存器包括HPD模式、DDC buffer模式、I2C使能等。第四步配置输入端口映射关系把3路输入都设置为“自动检测”状态让芯片能感知5V和HPD信号。第五步配置eARC相关寄存器包括使能eARC接收、设置音频输出接口格式。第六步配置中断使能把端口状态变化、eARC连接状态变化这些事件都打开中断方便主控实时感知。有一个容易忽略的寄存器是“eARC/ARC模式自动选择”。有些版本芯片需要显式使能这个功能否则默认只工作在ARC模式下eARC信号会被忽略。我在一款产品上调试时电视端明明已经发送eARC音频了芯片就是不出声查了三天寄存器和硬件最后发现是自动选择位没有置1eARC物理层根本没有激活。这个问题在数据手册里只有一行小字很容易漏看。4.4 音频输出接口与主控对接音频从IT66322出来之后的接口方式决定了整个音频链路的采样格式和通道数。如果后端主控有I2S接口建议优先用I2S对接这种并行接口可以支持多声道音频数据同时传输。I2S需要四根线BCLK、LRCK、DATA和MCLK。MCLK通常是BCLK的整数倍比如256fs或者512fs。这里的“fs”就是采样率比如48kHz采样时256fs的MCLK就是12.288MHz。如果音频只需要回传给一个外部的音频DAC用SPDIF更简单。SPDIF一根线传数据主控端需要做解码恢复时钟。IT66322可以输出SPDIF信号但对外部DAC的时钟恢复能力有一定要求。还有个细节是音频通道的方向。在eARC场景里音频是“从电视回传到功放再通过功放播放或者转发”。IT66322作为位于功放侧的芯片它接收的是电视发来的音频输出给本地功放系统去播放。但如果你做的是一个带有ARC/eARC发送功能的产品比如需要把本地音频发给电视或回传给Soundbar那就需要另外一颗支持eARC发送的芯片。IT66322只管收不管发选型时要留意这个方向性。5. 调试与常见问题排查实录5.1 切换无输出或黑屏的排查HDMI切换最常见的故障就是切换后黑屏。遇到这个问题别急着怀疑芯片按顺序排查基本都能找到原因。先看输入源状态。用示波器量一下HDMI连接器的5V引脚如果5V都没有说明源设备压根没有输出这跟切换器关系不大。再看HPD信号确认当前选中的端口HPD被拉高了。有些调试软件并不会自动设置HPD需要手动写寄存器。如果HPD是低电平源端不会握手黑屏就是正常的。排查DDC时重点看I2C总线上有没有波形、有没有设备拉死总线。用一个I2C逻辑分析仪去抓DDC上的数据看是否正常跑初始化。如果EDID没有正确响应源端可能干脆不输出信号。这种情况常见于DDC通道上电平转换芯片配置错误或者缓冲芯片供电异常。最后检查HDMI高速线的眼图。没有高带宽示波器可以先把信号速率降下来测试比如先用1080p 60Hz测试确认切换功能正常再升级到4K60Hz。这能帮你区分是逻辑问题还是信号完整性问题。我在一个项目里遇到过4K输出时雪花点1080p完全正常最后找到原因是HDMI连接器的焊盘地和芯片的地参考平面被分割了回流路径变长导致高频信号质量恶化。5.2 eARC无声、爆音与回退异常eARC无声是集成设计里最常见的问题原因也五花八门。第一个要查的是eARC的物理连接HDMI线是否是支持eARC的线——虽然eARC标准对线材要求不像HDMI 2.1那样严格但劣质线在eARC工作频率下损耗过大一样会出问题。用一根短的高质量线材做对比测试能快速排除线缆因素。第二个要查的是eARC握手状态。IT66322一般会有eARC状态寄存器可以通过I2C读出来看当前eARC是否已经连接eARC Connected状态。如果状态一直停留在Discovery阶段说明对端的Source没有正确回应。这时要检查DDC通道是否正常因为eARC的Discovery过程是通过DDC来完成的。还要确认CEC设备物理地址是否配置正确很多eARC的初始化流程需要CEC作为“辅助通道”CEC地址冲突或者CEC线没有连接都会让eARC协商失败。爆音问题通常指向两个方向一个是时钟质量一个是供电干扰。我遇到过一次比较典型的爆音eARC播放Dolby Atmos内容时每5秒左右出现一次短暂的“啪”声。排查发现是I2S输出的MCLK由一颗精度一般的时钟芯片产生而主控SoC的音频PLL锁定到MCLK时存在周期性的漂移。换成低抖动的晶振就解决了。供电干扰导致的爆音往往是持续性的音量越大越明显可以用外部线性电源给芯片单独供电来快速验证。eARC回退到ARC失败的场景也遇到过。具体现象是电视不支持eARC只发ARC信号但功放死活不出声。查下来是IT66322的ARC输入路径和eARC路径共用了一部分电路硬件上没有同时支持两种模式的正确状态。有些芯片需要软件在ARC模式下断开eARC接收路径否则芯片内部状态机会卡在eARC等待状态ARC信号被忽略。这里要仔细看数据手册里的模式配置寄存器确认切换模式的步骤是“先断开eARC再启用ARC”而不是直接切。5.3 常见问题速查表问题现象可能原因排查建议切换后黑屏HPD未正确拉高、HDCP握手失败、DDC总线被拉死先用示波器确认5V和HPD电平逻辑分析仪抓DDC看HDCP状态寄存器4K输出雪花点差分走线阻抗失配、ESD二极管电容过大、连接器虚焊降分辨率对比测试检查走线阻抗更换TVS管验证eARC完全无声eARC使能位未置位、接口格式不对、对端没握手成功读eARC状态寄存器先切SPDIF输出验证通路eARC爆音电源纹波大、时钟抖动大、USB3.0等信号干扰检查供电滤波换晶振调整layout间距I2C无响应复位时序不对、芯片供电没起来、地址引脚配置错量复位引脚电平确认各路电源正常对照手册查地址切换后需要很长时间才出画面HDCP重新握手慢或者EDID读取超时确认芯片切换时序检查DDC buffer的电源是否正常调整软件切换流程5.4 两个容易被忽略的软件细节调试IT66322的过程中有两个软件细节让我印象很深。第一个是切换时的HPD时序。有些工程师为了图省事切换端口时只写切换寄存器不处理HPD。这样在源端看来HPD一直没有变过它不会重新发起HDCP握手结果就是切换后无画面。正确做法是向芯片发出切换命令后检测到HPD被自动拉低再拉高——IT66322在有些配置下会自动处理但前提是你使能了对应的自动HPD功能。如果没有这个功能位就需要主控软件配合手动拉低HPD再恢复强制源设备重新握手。第二个是eARC寄存器初始化的先后顺序。我的经验是先初始化eARC再做HDMI切换配置。顺序反了会导致一个潜在问题——在eARC还没配置完成时某个端口已经有信号输入芯片尝试处理eARC数据但状态机没准备好可能产生一次误中断干扰SoC的状态机。虽然最终也能恢复正常但在工厂量产自检时这个时序问题会偶发地导致E2E测试失败。先把eARC基础寄存器配置好再打开切换相关的中断和自动处理逻辑整体稳定性会好很多。最后分享一个小小的实操心得IT66322这类集成度比较高的芯片硬件上没有太多玄学问题真正让人头疼的往往是软件初始化时序和寄存器配置细节。调板子遇到疑难杂症时第一步永远是确认供电、复位、I2C这三样是否都正常然后再考虑其他。我踩过的最大的坑就是复位——一个看似正常的RC复位延时电路在掉电很快再上电的场景下没来得及彻底放电芯片直接不启动后来换了专用的复位芯片才解决。希望这些经验能帮大家少走弯路。
返回列表