ARTICLE DETAIL

资讯详情

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

RFSoC多片同步实战:MTS相位校准与SYSREF对齐详解

RFSoC多片同步实战:MTS相位校准与SYSREF对齐详解 去年调一套三板级联的射频采集系统三颗RFSOC凑出16路同步采集通道单板跑起来一切正常波形、相噪都挑不出毛病。但只要把三块板子插进背板通道之间的相位关系就完全对不上——上午测是一个结果下午重新上电又变成另一个结果。那段时间MTS、时序校准、相位相干这几个词几乎长在了我脑子里白天调寄存器晚上翻文档反反复复才把整条链路捋顺。这篇文章就把这段实战经验拆开讲RFSOC的MTS多片同步到底在同步什么、误差从哪来、寄存器级校准怎么一步步做、相位相干用什么方法验证以及那些容易让人反复折腾的坑。内容主要面向做相控阵、多通道采集、MIMO和测向系统的FPGA工程师和射频系统工程师硬件和软件两个方向的人应该都能从中找到自己关心的部分。1. 从系统角度拆解MTS到底在同步什么不同步又会怎样1.1 什么场景必须做MTS什么场景可以侥幸跳过MTS的全称是Multi-Tile Synchronization直译是多tile同步。RFSoC内部把ADC/DAC组织成一个个tile每个tile里又有若干通道。单颗芯片内部已经有同步机制但跨tile、跨芯片的相位对齐必须依靠MTS这类系统级机制才能完成。实际项目中真正离不开MTS的通常是这几类系统相控阵接收/发射机每个阵元通道的相位直接决定波束指向相位关系一旦随机阵面方向图直接畸变。多通道测向/干涉仪通道间相位差是核心测量信息相位不固定就根本没有测向精度可言。MIMO通信系统多路数据流之间的相对相位影响预编码和解调性能。多通道高速采集设备示波器前端、数据记录仪这类场景通道间时间偏差会造成波形失真。如果你的系统只有一颗RFSoC且工作在单tile状态下对相位一致性要求也不高那确实可以暂时不碰MTS。但只要是多芯片、多通道协同工作的系统MTS就躲不掉。它不是一个可选的增强功能而是保证系统能不能正常工作的基础条件。1.2 不同步的典型表现从波形畸变到波束指向错误我在调试中见过的不同步现象最典型的有三种。第一种是通道间相位差完全随机。用同一个正弦波信号功分后同时送入多路ADC采集下来对比每一路相对参考通道的相位差没有任何规律上一轮测试和下一轮测试的结果都不一样。这种情况通常是SYSREF没有正确对齐或者JESD204B链路的LMFC根本没有同步起来。第二种是相位差偏大且温度漂移明显。校准确实做过但通道间相位差随时间缓慢变化设备温度升高十几度后相位差已经跑出容限。这种情况通常是亚样本微调的精度不够或者系统的参考时钟分配路径存在过大延时差异。第三种比较隐蔽系统看起来是正常的单音信号时相位也对得上但一旦信号频率变化通道间的相位差就跟着变。这说明问题出在模拟前端或混频链路的延时失配上不是单纯采样时钟的整周期对齐就能解决。比如1GHz时校准好了换到1.5GHz信号相位差又变了因为通道间的群延时差没有消除。从系统表现上看不同步最直观的后果就是阵列性能恶化。相控阵里每个阵元的信号如果相位随机合成方向图的主瓣会塌陷副瓣抬高波束指向也偏了。这比单纯的增益下降更危险因为它不是靠AGC能补偿回来的。1.3 MTS的四个对齐维度时钟、SYSREF、NCO与数据复位做过一轮MTS之后我总结下来它实际上要同时管住四个层面的对齐缺一个都不行。第一个层面是采样时钟的相位对齐。每颗RFSoC都有自己的PLL即使都锁定到同一个参考时钟上PLL输出时钟的初始相位也可能不同。理论上所有芯片的ADC都工作在同一个采样率但采样边沿之间可能差几个皮秒甚至几十皮秒。这个偏差在高频信号上会被放大成可观的角度误差。第二个层面是SYSREF与LMFC的对齐。JESD204B子类1依赖SYSREF去对齐所有器件的本地多帧时钟(LMFC)。SYSREF不是随便触发一下就完事它必须在正确的窗口内被各个器件捕获否则不同芯片的LMFC边界就错开了链路层的数据排列就全乱。第三个层面是NCO初相对齐。RFSoC的每个ADC/DAC通道都有数字NCO用于混频就算模拟路径的采样边沿完全对齐了如果NCO初相不一致基带IQ数据的相位也会差开。这个部分往往被初次接触MTS的人忽略。第四个层面是数字数据通路的复位对齐。FPGA内部对JESD204B链路、DDC/DUC、数据搬运逻辑的复位时机也会影响数据起始点需要保证所有通道在同一个事件边界上完成复位和启动输出。这四个维度对应的操作各有侧重但核心目标只有一个让系统每次上电、每次复位之后所有通道的相位关系都是确定且可重复的。2. 误差源头全梳理采样时钟、SYSREF与LMFC的三角关系2.1 RFSOC内部的时钟拓扑tile、PLL与采样边沿要理解误差从哪里来得先看RFSoC内部的时钟结构。RFSoC里的ADC/DAC被划分成多个tile每个tile又包含若干转换器通道。芯片内部和外部都有时钟分配网络每个tile的采样时钟源自一个或多个PLL这些PLL共享同一个参考输入但各自独立锁定。问题就在独立锁定这四个字上。多颗芯片的PLL即使参考时钟完全同源锁定后的输出相位也可能是随机的。PLL内部的分频器、VCO相位选择逻辑上电时每次都可能停在不同的状态。这不是芯片质量差而是PLL电路的自然属性。所以在MTS方案里SYSREF的作用就是给所有PLL一个统一的起点基准。当SYSREF有效沿到达时各器件的LMFC计数器同步清零PLL分频相位也随之校准到一致。这相当于乐队演出前指挥给出统一的预备——起让每个乐手从同一个节拍点开始。2.2 多板级联时的误差从哪里来多板级联系统中的误差来源比单板更复杂我在调试中把它们分成四类。第一类是参考时钟分配路径差异。从背板上的参考时钟源到每块板卡的距离不同板卡的时钟缓冲器件、走线长度不同都会导致到达RFSOC参考输入端的时钟相位不一致。不要小看这几十密耳的走线差在GHz频段就是几十度的相位差。第二类是SYSREF路径差异。SYSREF走线长度、缓冲器延迟、终端匹配方式都会影响到达时间。JESD204B子类1标准里对SYSREF有明确的建立保持时间要求路径差异过大时有些芯片能正确捕获SYSREF有些不满足时序窗口就出现了有的通道同步、有的通道不同步的情况。第三类是芯片制造差异。同一批次芯片之间PLL锁定时间、内部时钟分频相位、模拟前端群延时都有分散性。即使PCB完全一致不同RFSOC芯片的实际相位特性也会略有差别这需要在调试阶段通过寄存器配置去补偿。第四类是环境温度差异。多板系统中风道上下游的板卡温度不一样RFSOC内部的模拟电路对温度敏感延时特性会随温度漂移。系统级校准时必须考虑这种动态变化必要时要设计周期性重校准机制。2.3 SYSREF的时序要求为什么LMFC对齐是同步的地基JESD204B子类1中SYSREF必须在一个特定时间窗口内有效这个窗口由device clock边沿和LMFC边界共同界定。SYSREF被正确捕获后所有设备的LMFC计数器会在同一个边沿位置对齐后续链路数据的多帧对齐关系由此确定。LMFC一旦对齐JESD204B链路才能保证确定性延时。用一个生活化的例子来理解LMFC是一个节拍器SYSREF是那个准备——开始的口令。如果每个乐手听到口令的时间点不一样节拍器就算频率完全一致拍点也是对不齐的。后续无论演奏多长乐章最初的错位都会一直保留。JESD204B里一旦LMFC边界错开即使链路建立成功数据帧的起点也完全不同恢复出的数据就是错位的。因此SYSREF路径的时序余量是整个MTS方案的基石。我曾经遇到过一块板卡上SYSREF捕获状态寄存器偶尔报错的问题最后定位到是SYSREF走线过孔切换导致阻抗不连续反射信号出现了振铃。这类问题在功能仿真阶段完全发现不了只能靠实测波形来抓。2.4 PCB布线长度差异如何决定校准范围PCB布线对MTS能够达成的校准范围有决定性影响。参考时钟、SYSREF、复位信号这些关键信号如果布线长度差异过大超出了寄存器可调延迟的覆盖范围那么再好的软件校准也没办法补回来。举个例子假设系统中两片RFSOC的SYSREF走线长度相差1厘米。FR4板材中信号传播速度大约在150皮秒每厘米左右这个1厘米的差值对应150皮秒的到达时间差。如果被测信号是1GHz一个完整周期是1000皮秒也就是360度相位。150皮秒折合54度相位差。这不是靠微调能抹平的必须在硬件上把长度补偿掉。我在多板级联项目中对参考时钟和SYSREF都强制做了等长约束等长精度一般控制在正负5密耳以内折合时间大约正负0.3皮秒对GHz级系统来说已经足够。同时在时钟芯片选型上选择输出通道间偏斜(skew)小的型号把SYSREF扇出到各板卡的延迟控制在可校准范围之内。一句话总结第2章时序校准的本质就是测量出参考时钟、SYSREF、采样时钟这三者之间的实际延迟差然后利用芯片内部的延迟调节能力把这些误差逐一补偿到零。3. 一次完整的多片同步实施流程从PCB约束到寄存器级校准3.1 硬件设计阶段必须做的三件事第一件事是参考时钟的等长布线和干净供电。参考时钟的质量直接影响所有RFSOC的相噪和同步稳定性。参考时钟走线尽量走内层包地处理避免跨分割。供电方面给时钟芯片的电源加足够的滤波纹波要控制在数据手册允许的范围内。第二件事是SYSREF树的精心设计。SYSREF是从时钟芯片输出到多颗RFSOC的同步信号推荐使用专门的时钟芯片(比如LMK04828、HMC7044这类支持JESD204B的器件)同时产生device clock和SYSREF两者的相位关系是确定的。SYSREF每一路到RFSOC的走线长度必须严格等长中途不要加不必要的过孔。如果一颗时钟芯片的SYSREF输出通道不够可以用两级扇出但要格外注意增加一级扇出带来的附加偏斜最好用同系列的时钟缓冲器并在设计阶段就预留可编程延迟调整的裕量。第三件事是预留调试接口。把每颗RFSOC的I2C或SPI配置接口、JESD204B链路状态指示、SYSREF捕获状态寄存器都引出来至少串口或者JTAG要能方便访问。没有这些接口MTS出了问题只能干瞪眼无法定位是哪颗芯片没同步上。3.2 上电、链路建立和SYSREF捕获的先后顺序实测中MTS校准最容易出问题的环节之一就是上电顺序。正确顺序应该是时钟最先生成然后在时钟稳定的前提下让RFSOC完成初始化。如果时钟还没稳定就开始配置芯片PLL可能会锁定在错误状态SYSREF捕获也会失败。推荐的启动流程如下系统上电参考时钟芯片开始输出device clock和SYSREF先让整个时钟树稳定一段时间通常等待PLL的锁定指示信号拉高即可。对每颗RFSOC完成上电复位和初始化配置包括PLL配置、ADC/DAC工作模式、JESD204B链路参数等。等所有芯片的JESD204B链路都建立起来确认链路状态寄存器显示对齐成功。这一步没完成前不要进行后续校准。发送SYSREF脉冲或者使能周期性SYSREF等待所有芯片的SYSREF捕获状态寄存器指示成功。读取各芯片的LMFC状态确认多帧边界对齐。进入相位细调阶段按照后续小节的方法逐通道微调。我在实际项目中踩过一个坑程序里没有等待PLL锁定指示就直接发送SYSREF结果某些板卡上SYSREF捕获状态时好时坏。后来加了锁定等待逻辑问题就消失了。这种低级问题在文档里写得很清楚但忙起来真容易忽略。3.3 粗调、微调与NCO相位补偿寄存器级校准步骤相位校准分为三个层次粗调、微调、NCO相位补偿。它们解决的问题不同校准对象也不同。粗调解决的是采样时钟整周期级别的对齐问题。RFSoC内部的延迟调节单元可以按device clock周期为单位调整采样边沿把采样时刻调整到正确的采样周期内。为什么需要粗调因为不同RFSOC的PLL锁定相位随机采样起点可能差开若干个完整周期。粗调就是把这种整周期错位消除掉。这个阶段的操作对象一般是LMFC或采样时钟的相位偏移配置具体寄存器名称以芯片手册为准但思路是统一的逐级调整并观察链路状态直到所有通道进入正确的采样周期。微调解决的是亚采样周期级别的对齐问题。RFSoC的每个转换器通道通常都有精细延迟线分辨力在几皮秒到几十皮秒量级。微调的目标是把通道间的亚周期相位差压缩到最小。实际操作时可以输入一个已知频率的测试信号在数字域观察各通道相位差然后以步进方式修改微调延迟寄存器观察相位差的变化趋势找到使相位差接近零的最佳值。NCO相位补偿解决的是剩余固定相位偏置问题。模拟路径和数字路径的总体延时不可能被微调完全消除剩余的部分可以在数字域用NCO相位偏移寄存器做精细补偿。注意NCO相位补偿的有效范围是0到360度且不同频率下相同时间延迟对应的相位角是不同的所以NCO补偿只能针对某个特定频率点做精确补偿。如果系统要在宽带频率范围工作还是要靠微调把延时差压缩到最小NCO补偿只用来做最后的精细调节。三个层次的校准优先级从粗到细依次进行每一步都要在前一步确认无误后再做。模块化的校准流程有利于定位问题比如某个通道相位始终调不到位就能快速判断是粗调阶段的问题还是微调阶段的问题。3.4 校准完成后的自检信号用什么确认真正对齐了校准不能只靠寄存器写入了事必须有一个可观测的自检信号来确认对齐。推荐做法是使用JESD204B链路自带的测试模式比如SYNC模式或者低频/高频正弦波测试模式。RFSoC内部可以产生已知的测试pattern绕开外部射频信号直接在数字域验证链路的确定性。如果所有通道都能正确恢复出与发送端一致的测试pattern说明链路层面的对齐是可靠的。这一步我习惯写在自动测试脚本里每次断电重启后自动跑一遍有问题立即报警。链路自检通过之后再使用外部射频测试信号做最终验证。外部验证可以覆盖模拟路径的相位关系验证方法会在下一章详细展开。这里的核心思路是先数字域、后模拟域分层次确认对齐状态。4. 相位相干验证单音信号、FFT相位和重复性测试4.1 测试平台怎么搭一路信号喂给所有通道验证相位相干的第一步是把一个高质量的正弦波信号等幅等相地送到所有被测通道。最常用的方法是用功分器把信号源的一路输出分成多路再用等长同轴电缆连接到每块RFSOC的射频输入口。这个环节里功分器加上线缆本身的通道间一致性也必须考虑。我一般会先做一次背靠背校准也就是在不经过RFSOC的情况下直接用同一信号源接功分器测量功分器和线缆的固有相位差把这部分从最后的测试结果中扣除或者通过使用高质量的功分器确保功分器自身相位一致性足够好对测试结果的影响可以忽略。如果测试频段很高建议使用校准过的测试夹具并把测试场景固定下来减少可重复性误差。信号源频率的选择也有讲究。我通常选择每个通道工作频段内的一个典型频率同时再选一个靠近频段边缘的频率两轮测试交叉验证。只测一个频率点容易掩盖宽带延时失配问题。4.2 用FFT读取峰值相位差判断校准质量RFSOC采集数据后在FPGA里或者通过上位机对每一通道的数据做FFT找到信号频率对应的峰值bin读取该bin的复数值计算相位角这个相位角就是该通道当前信号相对FFT起点的相位。操作方法如下设通道i的FFT峰值复数值为X_i相位角为phi_i atan2(imag(X_i), real(X_i))。然后以通道0为参考计算各通道的相位差delta_phi_i phi_i - phi_0。理想情况下校准完成后所有delta_phi_i应该在0度附近最大偏差取决于微调步进和信号频率。举个例子如果信号频率是1GHz微调延迟步进是10皮秒那么单步微调对应的相位变化是10ps/1000ps乘以360度等于3.6度。所以理论上校准残差至少在几个度量级内如果温度稳定、前端群延时平坦实测相位差能压到正负1到2度以内。如果发现相位差能到几十度说明前面某个环节一定还有问题不要急着加NCO补偿先回头查粗调和微调是否真的调到位了。FFT本身也需要注意采样点数。点数太少会导致频率分辨率不够峰值bin能量泄漏相位计算不准确。我的经验是FFT点数至少取4096信号频率尽量对准bin中心不要让信号落在两个bin之间的边界上。必要的时候使用窗函数但要注意加窗会影响相位计算最好在调试时使用矩形窗或者找峰后做单点DFT插值精确求相位。4.3 重复性测试下电上电、复位后相位关系是否固定相位相干的另一个核心指标是重复性。系统每次重新上电、每次复位后各通道间的相位差应该保持一致。如果第一次上电时通道1和通道0的相位差是1.5度第二次上电后还是1.5度说明相位相干性是满足的。如果两次的相位差完全随机则说明某些关键同步信号时序没有被可靠建立。重复性测试的做法就是反复执行下电、上电、加载配置、采集信号、相位测量这一整套流程至少重复几十次记录每一次的相位差数据统计均值和标准差。标准差越小说明相位可重复性越好。实际操作中发现影响重复性的最大因素往往不是RFSOC本身的性能而是系统启动流程的稳定性。比如外部时钟芯片的锁定时间是不是每次都一致、SYSREF是不是每次都落在同一个捕获窗口、FPGA加载配置的时序是否固定。保证这个流程从硬件到软件都完全一致才能获得稳定的重复精度。4.4 宽带信号和变频模式下的相位一致性检验单音测试通过不代表宽带信号也通过。真实系统中信号往往占一定带宽如果通道之间的群延时差没有消除不同频率成分会获得不同的相位差波形就会失真。宽带验证比较简单的方法是使用线性调频信号或者多音信号。线性调频信号通过ChipZ变换、相关处理或者分段FFT可以提取每一频点的相位差。多音信号则直接在每个音上分别读取相位差。观察相位差是否随频率线性变化如果线性变化说明通道间存在固定延时差变化斜率就是延时差。变频模式下还要额外检查混频器和NCO的相位一致性。如果系统使用了模拟下变频或数字下变频本振信号和NCO初相的重复性都要纳入验证范围。我的习惯是在验证脚本里覆盖三种模式直采模式、数字下变频模式、模拟混频模式分别记录相位差数据确保每一种模式下系统都满足指标。5. 实战中反复踩过的坑温度漂移、SYSREF树与多板级联5.1 校准完过一会儿相位就飘了温度漂移问题MTS校准完成后如果系统工作一段时间后相位出现缓慢漂移最常见的原因就是温度。RFSOC本身是功耗大户整机工作时die温度和PCB温度都会有显著变化模拟前端和时钟分配链路的延时特性随温度漂移原本校准好的相位关系就会被破坏。应对这个问题有几种实用手段。第一种是合理设计散热降低RFSOC和时钟芯片的工作温度从源头上减小漂移量。第二种是选择温度稳定性好的时钟器件和参考源温度补偿晶振或者OCXO的短期稳定度通常更好。第三种是在软件里设计周期性重校准功能在不中断系统工作的前提下每隔一段时间或者检测到温度变化超过阈值时自动执行一次相位补偿校准。我曾经在一个项目里做了一版简单的温度补偿方案在RFSOC附近放置温度传感器实测不同温度下的相位偏移表然后用插值的方法在软件里动态修正相位读数。虽然精度不如重新校准但在不允许中断业务的场景下已经能给出可接受的结果。这个方案实施起来不复杂但前提是前期要做好温度-相位偏移特性的标定。5.2 SYSREF树形分配多板级联的同步底座多板级联系统上SYSREF树的分配方式直接影响整个系统的同步底子。SYSREF扇出的核心理念是保持从源头到各个消费端的绝对延迟尽可能一致同时保证SYSREF信号质量。我见过不少团队把SYSREF当作普通低速信号来布线没有做等长约束也没有关注信号完整性。这在高频系统里非常致命。SYSREF虽然是低速周期性脉冲但它作为JESD204B子类1的时间基准对边沿位置和抖动要求很高。布线时要注意高速数字设计的基本规则阻抗连续、完整参考平面、适当的端接。多板级联时推荐使用时钟芯片的多路同步输出每一路SYSREF接到一块板卡保证各板卡之间的SYSREF偏斜在芯片规格范围内。某些时钟芯片提供输出通道之间的可编程粗调、微调延迟可以在调试阶段用来微调各板卡的SYSREF到达时刻。这个可编程延迟功能非常实用可以在不修改硬件的条件下补偿PCB布局带来的固定偏差。5.3 常见坑位的复盘清单我把实战中遇到的高频问题整理成一个清单方便后面的人排查时对照。故障现象可能原因排查方向SYSREF捕获状态偶尔失败SYSREF时序余量不足、信号质量差检查SYSREF布线、端接、加延迟调整通道间相位差随机且无规律各芯片PLL上电相位随机SYSREF未生效检查SYSREF是否发出、捕获寄存器状态低频频段正常高频频段相位差变大通道间群延时失配微调亚样本延迟线压缩延时差校准完成后温度升高相位漂移模拟前端/时钟链路温度敏感散热优化设计重新校准机制复位后经常相位不一致复位信号时序不满足要求检查各芯片复位信号时机和SYSREF的先后关系数字域测试pattern通过但外部信号相位差大模拟路径或NCO相位未对齐检查NCO初相配置和模拟前端校准多板级联时少数通道相位总差一个周期粗调延迟方向或范围不足确认粗调寄存器配置范围覆盖周期差异这个清单不是万能的但覆盖了我在多个项目里实际遇到的绝大多数问题。它最大的价值在于帮人建立排查的顺序和方向减少在错误方向上浪费的时间。5.4 一点个人经验做了几个MTS项目之后我最大的体会是MTS三分之一是芯片配置三分之二是系统设计。芯片寄存器配置的方法论是固定的文档写得也清楚真正决定系统最终性能的是时钟方案、PCB布线和上电时序这些前期设计。寄存器校准更像是一个精细调整的过程如果硬件底子没有留够余量软件再怎么调也调不出理想结果。还有一个实际建议把校准流程脚本化。手动点寄存器校准不仅费时而且容易漏步骤、难复现。我后来把整条MTS校准流程写成了一套自动脚本每次上电自动执行把关键状态和校准结果记录到日志里。这套脚本在后续调试中帮我省了大量时间特别是做重复性测试的时候几十轮下电上电完全无人值守跑完直接看统计数据就行。再补一个小技巧调试MTS时信号源和线缆一定要固定。我遇到过排查半天调不通最后发现是测试时换了一根长度不同的线缆测得的相位差根本不是系统的问题。把所有测试条件固定下来这样才能确保对比的结果有参考意义。
返回列表