ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

RFSoC多板同步实战:从SYSREF到MTS的相位对齐全解析

2026/10/6 18:26:01 拓冰建站 浏览量
RFSoC多板同步实战:从SYSREF到MTS的相位对齐全解析 我一直觉得RFSoC单板开发本身不算难真正的门槛在于把多块板卡拼成一套相位一致的系统。做多通道相控阵或波束赋形项目时单板测试各项指标都很漂亮ADC的SFDR、DAC的ACLR都在规格书上标示的范围内但只要接上第二块板问题就来了两路信号之间出现一个固定偏差时域上差着几百皮秒频域里表现为波束方向图畸变温度一变相位还会跟着飘。折腾一圈后你会发现问题的源头几乎都指向同一个地方——SYSREF信号没有做好多块同步MTS流程没有真正对齐。这篇文章我准备把自己在RFSoC多板同步项目里摸出来的经验完整拆开讲。内容会覆盖SYSREF的硬件链路优化、时钟芯片配置、MTS校准流程、以及实测验证和问题排查偏向可落地的实操记录。适合正在用ZCU216、ZU49DR这类器件做相控阵、多通道采集阵列或分布式射频系统的工程师尤其是那种“单板已经调通一上多板就翻车”的兄弟。1. 多板同步到底难在哪先理清SYSREF和MTS的分工很多人在单板上跑通RFDC数据链路后会天然地认为“多板同步就是把SYSREF接上代码里打开MTS开关”。现实远没有这么简单。多板系统里每一片RFSoC都有自己的采样时钟分频器、JESD204B链路状态和本地多帧时钟LMFC它们之间没有任何物理上的时间共识。所谓同步本质上是要在所有板卡之间建立一个统一的时间基准让每一片ADC都在同一时刻对信号采样每一片DAC都在同一时刻更新输出。1.1 同步的三个层级时钟、帧、采样样点我做项目时习惯把同步拆成三层来看每一层对应不同的机制和工具。第一层是参考时钟的对齐。所有板卡的采样时钟都是从同一个参考时钟派生出来的但每块板卡内部做时钟倍频时PLL锁定后的初始相位是随机的。举个例子两片RFSoC都使用245.76 MHz参考时钟内部倍频到采样率4.9152 GHz即使参考时钟完全同源两片芯片的采样时钟边沿也可能差了若干个采样时钟周期。这一层通常靠SYSREF配合采样时钟分频器复位来解决相当于给每片芯片的采样时钟“秒表”按一下归零键。第二层是JESD204B帧与多帧对齐。采样时钟对齐之后还需要让数据在JESD204B链路上以相同的帧边界传输否则接收端恢复出来的数据流会错位。这一层靠的是JESD204B子类1的SYSREF机制和LMFC对齐链路层会在SYSREF的有效沿之后重新对齐本地多帧时钟。第三层是数据通路延迟对齐。即使前两层都完成了RFSoC内部从模拟前端到数字输出再到FPGA逻辑里的数据通路每一路都存在不同的固定延迟。这类延迟不会随上电而改变但会因布线、FIFO深度、DSP流水线层级不同而产生几十到上百个采样周期的偏差。这一层需要结合MTS的数字延迟校准以及FPGA侧的可变延迟模块去做精细调整。1.2 MTS与SYSREF之间到底是啥关系很多人会把MTS和SYSREF混为一谈其实它们解决的问题不同。SYSREF是JESD204B规范里定义的一个物理信号通常是一对差分脉冲用来在子类1系统中将各器件的本地多帧时钟对齐到同一时刻。它只负责传递“这一刻是时间零点”的信息本身不参与数据搬运。MTS是多片同步的完整流程在RFSoC语境下通常指RFDC IP核提供的多tile同步机制。它做的事情是先通过SYSREF将所有ADC/DAC tile的采样时钟分频器复位让采样时刻对齐再通过芯片内的校准逻辑对齐各个tile之间的数据通路延迟。换句话说SYSREF是MTS流程中负责“物理对齐采样时钟”的关键输入信号而MTS是更上层的软件/固件控制流程。用我们团队内部经常打的比方多板同步像四个人站成一排SYSREF就是教官喊的“立正”MTS则是教官挨个检查并调整每个人的站姿确保手臂高度、脚尖角度完全一致。没有“立正”的口令后面怎么调都白搭但只喊口令不检查团队也达不到整齐划一的标准。搞清楚这个关系之后所有排查方向就清晰了先确保SYSREF信号本身干净、时序正确再走MTS流程完成数字校准最后用实测数据验证对齐效果。2. 硬件层面优化SYSREF这块做不好后面全部白搭我在项目里吃过最大的亏就是在硬件还没有充分验证的情况下就急着写MTS软件流程。结果花了三天排查最后发现是SYSREF信号质量太差导致RFDC IP核里的SYSREF采样逻辑时而成功时而失败。从那以后我给自己定了一条规矩在动软件之前先用示波器把SYSREF测干净。2.1 时钟树架构怎么搭星型扇出优于菊花链多板系统的时钟源一般有两种选择一种是每块板卡独立晶振靠GPS或PTP这类授时手段做长期同步另一种是所有板卡共用一个高稳参考时钟源通过扇出芯片分发下去。做相控阵这类对相位一致性要求极高的场景强烈建议用后一种方案。板载晶振的绝对频率误差、温度漂移、老化效应都会直接转化为板间相位漂移很难根治。时钟树拓扑方面我强烈建议使用星型扇出而非菊花链。所谓星型扇出就是主时钟源或时钟芯片的每一路输出直接通过等长走线接到每一块板卡的参考时钟输入而菊花链是时钟信号从一块板串到下一块板再串到下一块。菊花链省线但每一级连接器、走线都会引入额外的延迟和反射后级板卡的SYSREF质量会比前级差很多。实测数据很直观用菊花链连接4块板时第4块板测到的SYSREF边沿抖动比第1块板大了将近3倍整体相位一致性从±50 ps恶化到±180 ps左右对5 GHz采样的RFSoC来说这个误差已经完全不可接受了。在具体器件选型上我比较常用的是TI的LMK04828和ADI的HMC7044。LMK04828的强项是片内集成高性价比的抖动清理能力适合做单时钟域系统的核心时钟发生器HMC7044的输出通道数量更多SYSREF的输出形态更灵活适合需要同时产生设备时钟、SYSREF、FPGA参考时钟、甚至额外测试时钟的复杂系统。两块芯片我都实际用过最终项目里选了HMC7044主要原因倒不是性能差异有多大而是它的SYSREF输出延迟调节步进更细调试时更方便。2.2 走线等长、阻抗控制与连接器选型SYSREF信号的PCB布局要求并不比高速串行信号低。既然SYSREF的使命是精确传递时间基准那么它从时钟芯片输出到RFSoC引脚之间经过的任何一段物理路径都会直接影响最终对齐精度。第一阻抗控制。SYSREF在RFSoC端通常是LVDS或LVPECL电平的差分对PCB上必须按100Ω差分阻抗控制。走线尽量走在靠近参考层的内层两侧包地打地过孔减少外部干扰耦合。表层走线因为参考层不连续、易受干扰不建议用于SYSREF这种高时序敏感信号。第二等长约束。SYSREF走线束内部两条线之间的长度差建议控制在5 mil以内否则差分对内偏斜会直接劣化接收端的建立保持裕量。由于SYSREF需要与设备时钟Device Clock保持确定的相位关系两者从时钟芯片输出到RFSoC引脚的走线长度差也要做约束。我做ZCU216级别的板卡时一般把SYSREF与设备时钟的走线长度差控制在50 mil以内。折算到电长度大约是8 ps左右的偏斜完全在HMC7044延迟调节的补偿范围里。第三连接器选型。板级接口推荐用SMP或SSMP这类小型射频连接器而不是普通的排针或牛角座。SMP连接器有明确的阻抗规格和屏蔽结构插入力的可重复性更好。曾经为了省钱用过一次传统的2.54 mm排针传输SYSREF结果每插拔一次板间相位差就变一次测出来的数据都不具备可重复性。后来换回SMP连接器才把这个问题解决。第四SYSREF电平标准。RFSoC的SYSREF输入接口支持LVDS和LVPECL我习惯用LVDS因为电平摆幅小、边沿速率快、对地弹噪声不敏感。用LVPECL时需要注意直流偏置和端接如果芯片端的内部端接配置不对很容易出现共模电压漂移导致的误触发。如果你用的是RFDC IP核自带的SYSREF输入引脚打开IP核配置页面可以看到接口电平选项确保与硬件设计一致即可。2.3 时钟芯片配置中的几个关键点以HMC7044为例配置时我一般按以下顺序操作。先把设备时钟比如CLKout0的输出频率、分频系数和延迟配置好再配置SYSREF输出通道比如CLKout12的分频系数和延迟最后配置SYSREF的触发模式。SYSREF的输出分频必须和设备时钟分频链保持整数倍关系这样才能保证SYSREF的每个脉冲都落在设备时钟的确定相位点上。JESD204B规范要求SYSREF相对于设备时钟的建立时间不小于某个值实际工程中我习惯把SYSREF边沿落在设备时钟上升沿前后100 ps以内的位置再配合RFDC内部的相位选择逻辑做微调。HMC7044的延迟步进通常是几十皮秒级别实测下来足够覆盖这个需求。SYSREF的脉冲宽度也不能太窄。如果SYSREF脉冲宽度小于RFSoC端内部采样逻辑的最短可识别宽度就会出现“有时触发成功、有时完全无响应”的随机故障。HMC7044可以配置SYSREF为连续输出或单次脉冲输出。在MTS流程中我通常使用单次脉冲模式由软件在恰当的时机触发一次SYSREF避免连续脉冲在系统运行中反复触发复位导致相位跳变。这里有个经验如果你在调试阶段发现MTS校准结果一会好、一会不好优先怀疑SYSREF的脉冲宽度或相对于设备时钟的建立保持时间不够。这个故障特征非常典型——它不是完全不工作而是间歇性工作极其耗费排查时间。3. MTS软件校准流程两步走的对齐策略硬件SYSREF链路优化完成之后才算有资格进入MTS的软件流程。我把整个校准过程拆成两个阶段先做JESD204B链路层的SYSREF对齐再做RFSoC内部的MTS数字校准和延迟微调。这两步不能颠倒因为前者保证了基本的采样时钟对齐后者才处理芯片内部的数据通路延迟。3.1 链路层对齐SYSREF何时送、怎么送JESD204B子类1链路建立过程中SYSREF必须在设备时钟稳定之后、JESD204B链路初始化阶段内送达不能太早也不能太晚。太早时钟分频器还没进入可复位状态SYSREF会被忽略太晚链路已经进入数据流传输状态触发SYSREF会造成链路重新同步产生数据中断。在RFDC IP核的控制流程中我的做法是先完成设备时钟和参考时钟的锁定等待PLL的LOCK信号拉高再延时几百微秒然后通过GPIO或AXI寄存器触发SYSREF输出。这个几百微秒的延时是为了让时钟芯片内部的分频器稳定下来避免锁定瞬间的频率牵引导致SYSREF时序抖动。SYSREF触发之后需要用ILA或VIO实时观察RFDC IP核的同步状态寄存器。RFDC IP核的MTS状态寄存器位会给出校准完成标志和错误标志。正常流程下SYSREF触发后各tile会依次完成采样时钟分频器的复位随后JESD204B的SYNC信号拉高链路进入正常数据传输状态。如果SYNC拉高后短时间内又拉低多半说明SYSREF触发时刻不对或者SYSREF信号质量有问题需要回到硬件层面排查。3.2 RFDC内部MTS数字校准API调用与寄存器操作在Xilinx官方BSP里RFDC驱动提供了多片同步的API接口。我常用的做法是在Linux应用层调用rfdc_mts_np_start和rfdc_mts_np_finish这两个函数配合rfdc_set_sysref_ctrl完成SYSREF的控制流程。调用顺序上需要先复位RFDC IP核内部的状态机然后使能MTS校准再触发SYSREF最后查询校准状态。一个容易忽略的细节是在调用rfdc_mts_np_start之后、触发SYSREF之前一定要确保所有需要参与同步的tile都被纳入了校准范围。RFDC IP可以配置某些tile不参与MTS配置漏了后续数据对齐就会出现莫名其妙的不一致。寄存器层面RFDC IP核的MTS控制寄存器MTS Control Register支持两种工作模式Non-Periodic非周期模式和Periodic周期模式。Non-Periodic模式下SYSREF信号在初始化阶段触发一次之后被屏蔽适合系统运行阶段不允许采样相位跳变的场景。Periodic模式下SYSREF周期性触发采样时刻周期性对齐但代价是每次SYSREF触发时可能产生短暂的相位调整数据流中会出现瞬时扰动。我在实际项目中两种模式都试过。如果系统只需要上电时做一次对齐、之后长时间稳定运行用Non-Periodic模式如果系统需要应对时钟漂移或温度变化导致的长期相位偏移用Periodic模式并配合足够长的MTS校准间隔承受数据扰动的代价。超过95%的项目场景我用的是Non-Periodic模式。3.3 精调阶段用动态延迟寄存器消除残余相位差MTS流程走完之后多块板的采样时钟已经对齐但数据通路里的残余延迟差仍然存在。这些延迟来自RFSoC内部不同tile的模拟前端、数字滤波器和FPGA逻辑布线差异通常在几个ADC采样周期以内。如果不处理多板数据做波束赋形时仍然会看到主瓣偏移和副瓣抬高。处理残余延迟最直接的方式是使用RFDC IP核提供的数据通路动态延迟寄存器。这个寄存器可以按采样周期对每个tile的数据流插入或移除延迟精度可以做到一个采样周期甚至更细。实际操作时我习惯先把每个通道的延迟寄存器值初始化为0然后输入一个已知的单音测试信号采集所有板卡的IQ数据通过互相关计算通道间的相对延迟再把延迟差值换算成寄存器值写回去。这里有一个注意点动态延迟寄存器调整的是数字数据通路单位是ADC/DAC采样周期精度虽然够用但亚采样周期的相位差还是需要靠模拟前端或DDS相位偏移寄存器做补偿。以ADC采样率4.9152 GHz为例一个采样周期约203 psRFSoC内置的频率转换器/NCO可以提供相位连续可调的补偿步进远小于一个采样周期。如果系统是零中频接收架构直接调整NCO的初始相位即可消除亚采样周期偏差如果是实采样架构就需要结合模拟移相器或额外的皮秒级延迟芯片来精调了。精调完成后把每块板卡的延迟寄存器和相位补偿值固化到初始化脚本里。每次开机后按固定顺序执行时钟芯片初始化、SYSREF触发、MTS校准、动态延迟写入。整个流程跑完多板间的相位差可以控制在±20 ps以内完全满足多数相控阵波束赋形的要求。4. 实测验证与故障排查用数据说话别凭感觉调软件流程写完别急着高兴。真正的考验是用实测数据验证多板同步是否真正达成以及遇到问题时如何快速定位是SYSREF问题、MTS配置问题还是数据通路延迟问题。这一节我把自己的验证方法和踩过的坑一并整理出来。4.1 多板同步效果的验证方法我最常用的验证手段有三种按成本从低到高排列。第一种是用ADC采集同一个参考信号做板间互相关。把同一个单音信号分两路用两套等长SMA线分别送入两块RFSoC的ADC采集一段数据后做互相关运算。互相关峰的位置代表两路之间的采样点级延迟峰值的相位代表亚采样点级延迟。这个方法只需要FPGA逻辑里实现一个简单的互相关器不需要额外仪器适合快速判断同步是否粗调成功。第二种是观察DAC输出的相位差。两块板同时生成相同频率、相同初始相位的正弦波用示波器或频谱仪观察合路后的信号幅度。相位完全对齐时合路幅度翻倍相位差180°时合路信号出现深陷波。这个方法直观但受限于示波器的带宽和采样率适合频率在几百MHz到1 GHz以内的信号验证。第三种是完整的零拍I/Q相位测量。在接收链路里用同一个本振源驱动两块板卡的混频器然后给两块板输入相同的参考信号采集I/Q数据后计算相位差。这个方法能得到比较高的相位测量精度配合长时间采集还能观察相位差的时域漂移。我在项目中用这个方法做长期稳定性测试连续跑48小时板间相位差漂移控制在±8°以内换算成时间大约是4.5 ps符合设计要求。4.2 排查实录实际项目中遇到的四个典型问题把项目过程中记录下来的典型问题整理成了一张速查表下面是具体案例。问题一MTS校准时报ERRORSYNC信号反复拉低。这个现象通常指向SYSREF触发时机不对。我们第一次遇到时SYSREF在时钟芯片PLL还未完全锁定时就被软件发出了结果时钟分频器复位失败RFDC内部的校准状态机直接报错。解决办法是在PLL_LOCK信号有效后再增加300 μs延时再触发SYSREF。问题二两块板各自MTS都完成但板间相位差固定不变且数值非整周期。这说明采样时钟对齐了但数据通路延迟不一致。我们在一个项目里遇到过大约80 ps的固定偏差排查了所有外部信号路径和线缆长度之后确认不是链路问题最终通过调整NCO相位寄存器将偏差清零。问题三SYSREF信号测量时边沿看起来没问题但MTS校准结果随机变化。这个是最难查的一类问题。后来用高带宽示波器测SYSREF上升沿附近的噪声频谱发现存在周期性纹波根因是SYSREF走线附近有一路开关电源的反馈走线耦合了开关噪声。重新布线拉开距离并增加屏蔽地过孔后问题彻底消失。问题四多板运行一段时间后部分板卡相位跳变约一个采样时钟周期。这个在Periodic模式下遇到过周期性SYSREF触发后个别tile没有恢复到之前的相位状态。把MTS模式改为Non-Periodic后不再出现该现象。如果你必须用Periodic模式建议在每次SYSREF触发后增加一次状态检查确认所有tile都处于正常锁存状态。4.3 问题速查表故障现象可能原因排查步骤解决措施MTS校准报ERRORSYSREF触发时机不对或未送达用示波器确认SYSREF波形检查PLL_LOCK延时调整SYSREF触发时序增加锁定延时SYNC拉高后反复拉低SYSREF脉冲宽度不足或建立保持时间不够检查SYSREF与设备时钟的相对相位调整HMC7044 SYSREF输出延迟或脉冲宽度各板MTS完成但板间相位差固定数据通路延迟不一致用互相关测量各通道相对延迟调整动态延迟寄存器和NCO相位校准结果随机变化SYSREF信号脏、噪声耦合高带宽示波器观察SYSREF边沿噪声优化PCB走线、增加屏蔽运行中相位周期跳变Periodic模式触发引起检查每次触发后的MTS状态寄存器改用Non-Periodic模式或加强状态检查更换线缆后相位变化测试线缆长度不一致换线前后对比同一通道数据使用等长线缆或记录线缆延迟校准这张表是我做项目时贴在工位前面的参照表每次遇到异常先对照排查能省下大量重复定位时间。另外还有一个容易被忽略的细节示波器探头和SMA线缆的延迟本身会引入测量误差。我在验证多板同步时会提前用TDR或网络分析仪把所有测试线缆的延迟测一遍并记录下来测量结果扣除线缆延迟后再做判断。否则很容易出现“明明校准好了测出来却偏差很大”的假象。5. 实操中值得再强调的几个细节MTS和SYSREF的坑主要集中在时序细节这里集中补充几个容易被文档忽略、但实际影响很大的点。5.1 SYSREF走线过孔和跨分割问题SYSREF属于模拟高精度信号PCB设计中如果必须换层一定在过孔旁边放置回流地孔保证参考层连续。跨分割是更高频的问题SYSREF走线底下如果有一道电源或地平面的切割槽信号回流路径变长边沿处会引入明显的串扰和抖动。即便肉眼看不到波形异常相位噪声也会劣化。5.2 温度对SYSREF相位的影响多板系统在工作温度变化时SYSREF和设备时钟的PCB走线延迟会随温度变化两者的温度系数可能不一致导致对齐精度漂移。如果系统需要宽温度范围工作建议在关键走线区域增加热补偿设计或采用周期性的SYSREF校准来修正温度漂移。实测数据里环境温度从25°C升高到60°C时未做热补偿的板间相位差变化约为±25 ps已经接近部分应用的上限。5.3 配套的电源和噪声控制SYSREF的抖动来源不只是SYSREF自身设备时钟的电源噪声同样会通过PLL传递到采样时钟。为RFSoC的时钟芯片供电时使用了独立的LDO或低噪声电源模块并在输出端并联足够的去耦电容。我在一块板上对比过时钟电源从开关电源换成低噪声LDO后ADC的SNR提升了大约1.5 dB板间同步后的残余相位误差也有可见下降。从我个人的经验来看多板同步的难点从来不是某一个环节特别复杂而是各个环节环环相扣任何一处没做好都会在最终相位一致性上暴露出来。SYSREF接地、触发时序、MTS寄存器配置、数据通路延迟校准每一环都需要用测量数据去验证而不是停留在“理论上应该没问题”这个层面。项目最后阶段我还习惯把所有板卡的SYSREF相位测量结果、MTS校准状态、动态延迟寄存器值都导出保存成日志文件方便后期做回归对比。这个习惯帮我排查过不少换板后的偶发问题。