FPD-Link III SerDes集成I2S音频传输:原理、配置与实战 1. 项目概述在FPD-Link III链路上搞定I2S音频传输在汽车座舱或者高端显示系统里搞音视频集成最头疼的往往不是视频而是音频。视频有成熟的LVDS、eDP这些标准接口走线清晰协议明确。但音频呢传统的模拟音频线缆又长又容易受干扰多路数字音频I2S、TDM直接拉线线束复杂到让人崩溃电磁兼容EMC更是噩梦。所以当我在一个车载信息娱乐IVI系统的项目里第一次接触到德州仪器TI的DS90Ux92x系列FPD-Link III串行器/解串器SerDes时发现它竟然能把I2S音频和RGB视频数据打包通过一对差分线或者再加一对反向通道就传过去当时就觉得这玩意儿简直是“降维打击”。简单来说DS90Ux92x家族比如925/926, 927/928这些型号的核心价值就是用一个高度集成的方案解决了音视频数据长距离、高保真、低延迟同步传输的难题。它本质上是一个高速串行器能把并行的视频数据比如24位RGB和并行的I2S音频数据复用成高速串行流通过一根同轴电缆或双绞线传输几十米然后在接收端完美地还原出来。这对于需要把主机比如车机主板的音频视频信号传到远处显示屏比如中控屏、后排娱乐屏的场景简直是量身定做。我这次要深入聊的就是它集成的I2S音频接口怎么用。I2S本身是个老牌且优秀的数字音频接口协议三根线位时钟BCLK、字时钟LRCLK、数据SDATA搞定立体声简洁高效。但DS90Ux92x把它玩出了新花样不仅支持标准立体声还能通过多数据线或TDM模式传输4通道、8通道甚至7.1环绕声。更重要的是它提供了两种音频传输模式“数据岛”Packetized模式和“前向帧”Forward Frame模式让你可以根据系统对音频延迟、视频格式的特定要求来灵活选择。下面我就结合自己踩过的坑和调通的经验把这套东西从原理到配置掰开揉碎了讲清楚。2. I2S接口与DS90Ux92x的集成原理2.1 I2S协议基础与时钟计算在动手配置芯片之前必须把I2S的底子打牢。I2S协议的核心是主从架构和帧同步。主设备Master产生位时钟I2S_CLK和字时钟I2S_WC也叫LRCLK或FSYNC。从设备Slave则根据这两个时钟来接收或发送数据。一个字时钟周期对应一个音频通道的样本比如左声道其频率就是音频的采样率如44.1kHz, 48kHz。位时钟频率则决定了数据线上的传输速率。这里有个关键公式决定了你需要给芯片提供多快的I2S_CLKI2S_CLK频率 采样率 × 位深度 × 通道数 × 2为什么乘以2因为I2S协议规定数据在时钟的上升沿和下降沿都可能被采样具体取决于配置所以一个数据位需要两个时钟边沿。对于最常见的立体声2通道、24位深度、48kHz采样率计算如下I2S_CLK 48000 Hz × 24 bits × 2 channels × 2 4.608 MHz这个值必须严格遵守DS90Ux92x的限制必须低于像素时钟PCLK的一半且不能超过12.288 MHz。比如你的视频是720p60HzPCLK大约74.25MHz一半是37.125MHz那么4.608MHz的I2S_CLK完全没问题。但如果你用的是高采样率192kHz、32位深度的音频I2S_CLK会达到12.288MHz这时就必须确保你的视频PCLK高于24.576MHz否则芯片无法正常工作。实操心得在项目初期规划时一定要先用这个公式算好音频流所需的I2S_CLK并核对与视频PCLK的关系。我曾经在一个早期设计中视频用了低分辨率PCLK只有20MHz结果无法支持96kHz的音频后期不得不调整视频时序非常被动。2.2 DS90Ux92x的I2S引脚与角色DS90Ux92x系列巧妙地将自身嵌入到I2S的时钟架构中。通常系统的音频源如应用处理器、音频编解码器是I2S主设备。在DS90Ux92x的典型应用中串行器Serializer 如DS90UB925作为I2S从设备。它接收来自音频源的I2S_CLK、I2S_WC和I2S_DATA信号将其与视频数据一起打包成串行流。解串器Deserializer 如DS90UB926作为I2S主设备。它从串行流中恢复出音频数据并利用内部的高性能锁相环PLL重新生成一个低抖动的I2S_CLK和I2S_WC输出同时还可以提供一个独立的主时钟MCLK给下游的音频器件如DAC。这种设计的好处是即使传输链路较长在接收端也能恢复出高质量、低抖动的时钟保证了音频重建的保真度。下表是不同型号芯片的I2S引脚总结这是硬件设计的基础设备型号MCLK引脚I2S_CLK引脚I2S_WC引脚I2S数据引脚 (SD)DS90Ux925(串行器)无1312I2S_DA (11), I2S_DB (44)DS90Ux926(解串器)60130I2S_DA (45), I2S_DB (18)DS90Ux927(串行器)无21I2S_DA (3), I2S_DB (4), I2S_DC (5), I2S_DD (6)DS90Ux928(解串器)11810I2S_DA (7), I2S_DB (3), I2S_DC (37), I2S_DD (36)可以看到925/926支持最多2条数据线4音频通道而927/928支持最多4条数据线8音频通道为多声道系统提供了硬件基础。3. 核心操作模式与寄存器配置详解3.1 音频传输的两种模式数据岛 vs. 前向帧这是DS90Ux92x I2S功能最核心、也最容易让人困惑的部分。两种模式的选择直接影响了系统延迟、兼容性和配置复杂度。1. 数据岛传输模式 (Data Island Transport)这是默认模式也是我个人在大多数项目中首选的模式。它的工作原理很直观串行器内部有一个FIFO缓冲区会持续缓存从I2S引脚输入的音频样本。当视频信号进入消隐期Vertical Blanking时串行器就把缓存的一整“包”音频数据插入到视频数据流中预留的“数据岛”位置发送出去。解串器收到后先存入自己的缓冲区然后用内部的I2S PLL恢复出时钟当缓冲区半满时开始输出音频。优点兼容性好对视频时序几乎没有额外要求适用于绝大多数视频格式。配置简单通常只需使能I2S通道寄存器配置较少。支持环绕声8通道环绕声模式必须使用此模式。缺点固定延迟因为要等视频消隐期会引入约100-200微秒的固定延迟。对于需要极低音画同步误差如触控反馈音的应用需要仔细评估。依赖视频必须有稳定的视频流音频才能传输。如果视频信号丢失音频也会中断。2. 前向帧传输模式 (Forward Frame Transport)在这种模式下音频数据不再等待消隐期而是被“切片”成小块嵌入到每一行有效视频数据所在的帧结构中随视频数据一起发送。你可以理解为音频数据和视频像素数据“肩并肩”地在同一时刻被传输。优点延迟更低且更稳定音频传输是连续的不依赖消隐期因此端到端延迟可以更低且抖动更小。独立性稍强对视频消隐期的依赖降低。缺点配置复杂需要精确配置寄存器且必须配合特定的视频数据使能DE门控模式。有前提条件需要视频接口工作在“DE门控RGB”模式即RGB数据仅在DE有效时才输出并且需要计算和配置前向通道的音频数据映射。不支持环绕声927/928的8通道式无法使用此模式。模式选择寄存器关键位在Data Path Control 1寄存器串行器地址0x12解串器地址0x22的Bit 1。Bit 1 (I2S Transport Select):0 启用数据岛传输默认。1 启用前向帧传输。踩坑记录曾经为了追求低延迟在一个项目里启用了前向帧模式但忽略了“DE门控RGB”这个条件。系统默认是“RGB独立于DE”模式结果音频数据完全乱码。排查了半天才发现是0x04[4]这个视频控制寄存器没配。教训就是切模式前务必对照数据手册把所有的先决条件检查一遍。3.2 多通道与TDM模式的实现DS90Ux92x支持三种扩展音频通道的方式1. 多数据线模式这是最直接的方式。每个I2S数据线如I2S_DA, I2S_DB可以传输一个标准的I2S帧即2个音频通道左右。因此使用1条数据线如I2S_DA支持2通道立体声。使用2条数据线I2S_DA, I2S_DB支持4通道2组立体声。这需要将芯片配置为18位RGB视频模式以“腾出”引脚给第二条数据线使用。使用4条数据线仅927/928支持支持8通道4组立体声或7.1环绕声。2. 时间分复用模式TDM模式允许在单条I2S数据线上通过时间切片的方式传输多个音频通道。例如在一个字时钟I2S_WC周期内划分为8个时隙Slot每个时隙传输一个通道的音频样本。这样单条数据线就能传输8个单声道或4组立体声如果每对左右声道占用两个连续时隙。TDM的优势是节省引脚特别适合通道数多但数据线有限的场景。DS90Ux92x的I2S接口完全兼容TDM时序你只需要确保发送端音频源和接收端音频接收器使用相同的TDM格式时隙数、位宽、对齐方式芯片本身会透明地传输整个串行数据流。3. 环绕声模式这是927/928器件特有的高级功能专为5.1或7.1环绕声设计。启用此模式通过设置串行器寄存器0x1A[0] 1后芯片会自动管理多达4条I2S数据线来传输所有环绕声通道。需要注意的是环绕声模式强制使用数据岛传输模式。3.3 关键寄存器配置指南寄存器配置是让芯片按你想法工作的“开关”。这里重点讲几个最核心的避免大家对着数据手册眼花缭乱。1. Data Path Control 1 (地址: Ser 0x12, Des 0x22)这是总控寄存器大部分功能开关都在这里。位名称功能描述配置建议Bit 4I2S Repeater Regen中继器模式专用。1在中继节点从I2S引脚再生音频0从视频引脚传递打包音频默认。普通点对点连接不用管。默认0Bit 3I2S Channel B Enable Override是否用寄存器控制I2S_DB通道使能。1使用Bit 00使用MODE_SEL引脚电平默认。如果想用寄存器控制设为1Bit 218-bit Video Select视频模式选择。118位RGB模式启用I2S_DB024位RGB模式默认。需要4通道音频时设为1Bit 1I2S Transport Select传输模式选择。1前向帧传输0数据岛传输默认。根据3.1节的描述选择Bit 0I2S Channel B EnableI2S_DB数据线使能。1启用0禁用默认。仅在Bit31时生效。需要4通道音频时设为12. Data Path Control 2 (仅927/928地址: Ser 0x1A, Des 0x28)主要用于环绕声等高级控制。位名称功能描述Bit 0I2S Surround环绕声使能。1启用5.1/7.1环绕声模式自动启用多条数据线0禁用默认。3. I2S Control MCLK配置 (解串器 0x2B, 0x3A)0x2B 控制I2S PLL。当I2S_CLK频率低于1MHz时建议关闭PLLBit 6置1以省电。通常保持默认PLL开启用于时钟抖动清理即可。0x3A[6:4]MCLK分频比选择。这是工程师们经常问的如何让解串器输出的MCLK不是默认的2倍I2S_CLK你需要设置0x3A[7]1覆盖MCLK分频器选择。读取0x7B[5:4]得到内部MSEL值1,2,4,8。根据公式MCLK (MDIV × I2S_CLK) / (2 × MSEL)计算所需的MDIV值并写入0x3A[6:4]。例如想要MCLK I2S_CLK若MSEL2则需设置MDIV4。4. 典型应用场景配置实战理论讲完我们来点实际的。下面以几个最常见的芯片组合和需求为例给出具体的配置步骤和原理图连接示意。4.1 场景一基础立体声传输 (DS90Ux925 DS90Ux926)这是最简单的应用。目标传输24位RGB视频和2通道I2S音频。硬件连接视频源GPU/SoC的RGB和DE/HS/VS接串行器并行输入。音频源的I2S_CLK, I2S_WC, I2S_DA接串行器的对应引脚。串行器的串行输出DOUT±通过一条同轴电缆连接到解串器的串行输入RIN±。解串器的RGB输出接显示屏解串器的I2S_CLK, I2S_WC, I2S_DA以及可选的MCLK接音频接收器如功放、DAC。寄存器配置 由于是默认的24位RGB2通道I2S模式绝大多数寄存器无需配置芯片上电即用。这是它“开箱即用”的便利性体现。你唯一可能需要检查的是解串器的MCLK输出是否符合后端器件要求按3.3节所述调整0x3A寄存器即可。4.2 场景二4通道音频传输 (DS90Ux925 DS90Ux926)需要传输两组立体声比如“前置左右后置左右”。这时需要启用第二条数据线I2S_DB并将视频模式切换到18位。硬件连接 在场景一的基础上将音频源的第二组I2S数据线SDATA2接到串行器的I2S_DB引脚Pin 44。注意所有I2S数据线必须共享同一个I2S_CLK和I2S_WC确保同步。寄存器配置在串行器DS90Ux925上操作启用18位视频模式设置0x12[2] 1。这意味着RGB的每个颜色分量从8位减少到6位空出的低位引脚被用于音频传输。启用寄存器覆盖模式设置0x12[3] 1。这样I2S_DB的使能将由寄存器控制而不是硬件MODE_SEL引脚。使能I2S_DB通道设置0x12[0] 1。传输模式根据需求选择。保持0x12[1]0默认数据岛模式或设为1前向帧模式需满足前提条件。注意事项切换到18位视频模式会降低色彩深度从1670万色降至26万色对于大多数汽车仪表或中控显示这通常可以接受因为人眼对亮度的敏感度远高于色彩。但如果是高端娱乐屏需要评估画质损失。此时可考虑选用DS90Ux927/928它在24位模式下也支持多数据线。解串器端无需额外配置寄存器0x22的内容会通过前向通道自动从串行器加载除非你手动禁止了自动加载。4.3 场景三使用927/928实现4通道或8通道环绕声DS90Ux927/928是功能更强大的组合引脚更多支持4条I2S数据线。4通道配置24位视频下硬件连接第二组I2S数据到I2S_DB。串行器(927)配置0x12[3]1,0x12[0]1。注意对于927即使视频是24位模式也需要这样设置来使能I2S_DB这与925不同。传输模式选择同上。8通道环绕声配置 这是927/928的“杀手锏”应用。硬件连接将4组I2S数据线对应7.1声道的8个通道分别接到串行器的I2S_DA, DB, DC, DD。串行器(927)关键配置0x1A[0] 1使能环绕声模式。此操作会自动启用所有可用的I2S数据线。环绕声模式强制使用数据岛传输因此确保0x12[1]0默认。同样如果需要使用I2S_DB仍需设置0x12[3]1和0x12[0]1但在环绕声模式下DC和DD的使能是自动的。重要限制在环绕声模式下与I2S_DC和I2S_DD复用的GPIO引脚GPIO_REG[8:5]只能通过寄存器访问不能作为普通GPIO使用。如果之前配置了这些GPIO需要重新配置。4.4 TDM模式配置要点TDM模式更像是一种“协议层”的配置芯片硬件层面是透明的。你需要做的是确保音频编解码器或DSP支持TDM模式并配置好它的时隙数、位宽、时隙偏移。将音频源的TDM数据流接到串行器的某一条I2S数据线如I2S_DA上时钟和帧同步信号接好。DS90Ux92x芯片本身无需特殊寄存器配置来声明TDM模式。它只是忠实地传输I2S_CLK, I2S_WC和DATA线上的波形。在解串器端确保用同样的TDM格式去解析数据。关键在于TDM帧的宽度I2S_WC周期内的I2S_CLK数必须能被芯片正确处理。例如一个包含8个时隙、每个时隙32位的TDM帧其I2S_WC周期内就有256个I2S_CLK。你需要计算此时的I2S_CLK频率采样率 x 32 x 8 x 2并确认它符合PCLK/2和12.288MHz的限制。5. 调试排坑与实战经验分享搞定了配置上电测试没声音或者声音断断续续别急以下是几个我总结的高频问题点和排查思路。5.1 常见问题速查表现象可能原因排查步骤完全无音频输出1. I2S功能未使能或配置错误。2. 芯片处于向后兼容模式。3. 视频信号异常导致音频无法传输数据岛模式。1. 用I2C工具读取串行器0x12、解串器0x22寄存器确认I2S相关位已正确设置。2. 检查0x0B等寄存器确保向后兼容模式BKWD为0。3. 用示波器检查视频输入HS, VS, DE, PCLK是否正常。音频有噪声或失真1. I2S_CLK抖动过大。2. 接地或电源噪声。3. 数据岛模式缓冲区溢出/下溢。1. 测量解串器输出的I2S_CLK质量确保解串器I2S PLL已使能0x2B[6]0。2. 检查电源纹波确保模拟和数字地分割合理。3. 检查音频采样率、位深度设置是否与发送端一致。尝试微调I2S_CLK频率。只有单声道或通道错乱1. I2S_WC极性或相位错误。2. TDM模式时隙映射错误。3. 多数据线模式下某条数据线未使能或接触不良。1. 用示波器同时抓取I2S_CLK, I2S_WC和I2S_DA确认WC边沿与数据MSB的对齐关系是否符合I2S标准。可通过解串器0x2B[0]调整时钟边沿采样点。2. 核对音频源和接收器的TDM时隙配置表。3. 检查硬件连接并确认寄存器中对应数据线如I2S_DB已使能。音频延迟过大或不稳定1. 数据岛模式固有的固定延迟。2. 缓冲区设置或时钟恢复问题。1. 这是数据岛模式特性实测通常在150μs左右。如果系统要求延迟2ms这通常是可接受的。如需更低延迟考虑改用前向帧模式。2. 确保I2S_CLK频率在允许范围内更高的I2S_CLK可以降低缓冲延迟。前向帧模式音频异常1. 未启用“DE门控RGB”模式。2. 前向帧音频映射寄存器配置错误。1.这是最易忽略的点必须设置串行器0x04[4] 1Gate RGB with respect to DE。2. 对于927在前向帧传输多数据线时还需配置0x20[7:0]0x81。仔细阅读数据手册相关章节。5.2 硬件设计与布局注意事项电源去耦数据手册要求在每个芯片的电源引脚附近放置0.1μF和10μF的陶瓷电容尤其是模拟电源AVDD和锁相环电源PLL_AVDD。这点至关重要电源噪声会直接导致时钟抖动增大影响音频质量。差分线布线连接串行器和解串器的FPD-Link III差分对DOUT±/RIN±必须按高速差分线规则处理等长、紧耦合、阻抗控制通常100Ω远离噪声源。I2S信号线虽然I2S是低速信号但也要注意避免过长走线引入的反射。如果传输距离超过10cm建议做成可控阻抗的微带线并串接小电阻如22Ω进行阻抗匹配减少振铃。时钟优先I2S_CLK和I2S_WC是音频的“心跳”应优先布局远离数字开关噪声如PMIC、DDR内存。如果可能用地线包围进行屏蔽。5.3 软件初始化流程建议一个稳健的初始化流程能避免很多玄学问题。建议按以下顺序操作硬件复位拉低芯片的RESET引脚至少1ms然后释放。基础配置通过I2C配置视频相关寄存器如输入/输出数据映射、时序等。检查链路锁定读取解串器的锁相环锁定状态寄存器如0x4D确保FPD-Link III链路已稳定建立。配置I2S先确定传输模式数据岛/前向帧。根据通道数配置视频模式18/24位和数据线使能位。最后再使能I2S传输相关位置1。配置解串器MCLK如果需要非默认的MCLK按3.3节步骤配置0x3A和0x2B寄存器。音频源启动最后才让上游的音频处理器开始发送I2S数据。这个顺序可以避免芯片在初始化过程中收到无效音频数据导致内部状态混乱。经过这些年的项目实践DS90Ux92x系列的I2S功能以其高度的集成性和灵活性已经成为汽车和工业显示系统中音视频传输的可靠选择。它的价值不在于提供了多么惊天动地的新功能而在于把一件复杂的事情远距离高质量音视频传输变得简单、稳定且成本可控。刚开始接触那一堆寄存器时可能会觉得头大但一旦理解了其背后的设计逻辑——数据岛与前向帧的权衡、视频模式与音频通道的复用、寄存器位的精细控制——你就会发现它其实是一套非常优雅的工程解决方案。最后记住万用表和示波器是你最好的朋友遇到问题先量电源再测时钟最后抓数据波形结合寄存器配置一步步分析没有解决不了的问题。

本月热点