RFSOC学习记录(四)MTS时序分析

在MIMO等场景中,ADC DAC的多发多收机制是很重要的,在如今多数的使用场景里,RFSOC这样射频直采的模式逐渐代替了超外差接收机,零中频接收机,而多发多收的板卡每一个ADC/DAC系统都有自己的独立采样时钟,如果这些事中相位不同,哪怕是几十皮秒的频偏,不同片的波形输出就会存在相位偏差,对于多通道波束成形与MIMO阵列信号处理等应用时都会产生灾难性的影响,于是我们就需要确保所有通道在同一个采样瞬间采同一个值,这就是MTS的首要目的

MTS(Multi-Tile Synchronization)

多片同步,是指在系统中存在多个采样器(ADC)或多个数模器(DAC)时,要保证它们之间的 采样时刻、相位、数据帧边界完全一致。

  1. 确保所有通道在同一个采样瞬间采同一个模拟值,时间上零点需要对齐
  2. 保证 JESD204 接口的帧边界一致,让每个通道输出的数据帧在 FPGA 中同时到达同一个时刻
  3. 确保多通道输出信号具有相同相位基准,实现相位相干

原理

在pg269的官方文档里面,我们可以看到MTS涉及到的信号以及步骤是这样的:MTS 用一路 SYSREF(外部/模拟与 PL 捕获的 SYSREF) 作为全局定时参考,通过板内分发和软件 API(IP 内的同步状态机 + RFdc 驱动)对所有参与 tile 的分频器相位、FIFO 延时和可动态更新的数字功能(如 NCO/混频、QMC、coarse delay)进行可重复、确定性对齐,以保证多 tile、甚至多器件间的样本时序与数字更新同时发生

一些关键信息

SYSREF

这个信号在上一讲的时候其实已经介绍过了,SYSREF是多设备(FPGA adc dac)之间的共同时钟标记,告诉这些设备在某个时刻,所有的帧边界需要对齐,其是由PLL2的VCO时钟经过内部逻辑分频产生,可以配置为单次脉冲(One-shot),周期性脉冲(periodic)和禁止输出(powerdown),是周期性、低抖动的参考脉冲流(通<10 MHz,且是各相关时钟的整数子倍数),用于对齐 divider 相位(Tn clocks)、以及触发动态更新事件(NCO 相位/频率写入)。模拟 SYSREF 和 PL SYSREF 必须相同频率且在需要确定性延迟时保持恒定相位关系。

模拟 SYSREF 从器件外部进入主 tile(tile0),由该 tile 内部平衡分发到其它 tiles;PL_SYSREF 则进入 PL 用于捕获并传递给 IP核使用(user_sysref_adc / user_sysref_dac)

SYNC

**特别要注意的一点,这里的SYNC和上一讲讲的SYNC不是同一个信号!!**上一讲的SYNC是外部/PL端的SYNC,用来控制触发产生SYSREF,而现在说的SYNC是RFDC IP内部生成的同步脉冲,是由捕获到的 SYSREF 上升沿产生,用于 tile 对齐

SYNC 是在 MTS 流程中,由主 tile 捕获到的 SYSREF 上升沿触发生成的内部tile 级同步脉冲(Tile Synchronization Pulse),用于同步 tile 内部的分频器、相位累加器和 FIFO 读写指针,从而实现 tile 间的相位对齐。当外部 SYSREF 输入到tile 0时,tile 内部会捕获它的上升沿,并据此生成 SYNC 脉冲分发给不同的tile

SYNC 一旦产生,会复位或重新对齐 每个 tile 内部的采样分频器相位;对齐 tile 内的 FIFO 读/写指针;对齐内部数字路径(Mixer、NCO、Interpolator/Decimator)中的相位起点;对齐数据流到 PL 的时序,使不同 tile 输出的第一个有效样本落在同一时刻。

PL SYSREF 捕获与 PL 时钟要求

PL_SYSREF 与 PL_clock 必须是差分信号,且 PL_clock 要放在专用时钟引脚,AXI-Stream 时钟应由 PL 时钟生成(不要用 core 的时钟输出来驱动 PL)。SYSREF 的频率必须既是转换器内部时钟的整数子倍,又是 PL_clock 的整数子倍(以保证在 PL 中被同步采样)

模拟SYSREF和PL SYSREF必须在MTS期间为连续时钟

主从tile

在 MTS 中,tile 0(ADC/DAC 的 Tile_0)必须是 active 并作为 master。所有参与 MTS 的 tiles 必须采样率相同、相同 decimation/interpolation、相同 samples per AXI4-Stream word 和相同 AXI4-Stream 时钟率,且 ADC tiles 在一个组内必须是相同类型(Quad 或 Dual)。否则 MTS 不被支持

MTS步骤

  1. 打开时钟与 SYSREF 源(analog 与 PL) ,确保 PLL/时钟 lock。任何时钟改变都必须重新同步(Both analog and digital clocks must be running and locked before synchronization begins.

Any change to the clocks requires resynchronization.)

  1. 模拟 SYSREF 捕获(在主 tile),IP 把捕获到的上升沿转换为内部 sync 脉冲并平衡分发到所有 tiles。这是针对每个芯片完成的,需要多个周期性SYSREF脉冲,以便确定最佳延迟值。因此,MTS过程需要周期性SYSREF时钟(Ensures SYSREF is safely captured by auto-adjusting the internal SYSREF programmable delay for setup/hold. This is done for each tile and requires a number of periodic SYSREF pulses so that the optimal delay value can be determined. As a result, a periodic SYSREF clock is needed for the MTS process.)

  2. 复位时钟分频器,当所有芯片都安全捕获SYSREF时,后续SYSREF边沿用于同步所有分频器相位(When all tiles are safely capturing SYSREF, a subsequent SYSREF edge is used to synchronize all divider phases.)

  3. **自动测量并校准 FIFO 延时,**IP + 驱动自动完成测量/调整,以匹配每个 tile 的延迟,可以运行API读取返回值以确认(Analog SYSREF and PL_Sysref signals are used to measure the latency through each FIFO.Use the measurements across all tiles to adjust the latencies so that they match.)

  4. 对数字功能(NCO、QMC、Coarse Delay 等)进行 SYSREF 触发的动态更新(先在所有 tile 写好目标寄存器并"arming",再用 SYSREF 触发,确保所有 tile 在同一 SYSREF 边沿生效)。对于 NCO 更新,必须在更新前关断/门控 SYSREF(或使用 IP 的内部门控机制),以避免边沿落在更新过程中导致不一致;之后再恢复 SYSREF(When digital features which will impact the tile alignment are enabled, the related digital function blocks must be initialized/updated with SYSREF dynamic update event. These digital features include fine mixer/NCO, QMC, and coarse delay.)

下图见pg269文档的第201页

常见问题

  1. 必须确认所有参与 MTS 的 tiles(ADC/DAC)采样率、decimation/interpolation、samples-per-AXI-word、AXI 时钟一致

  2. SYSREF不可以是单脉冲触发一次性对齐,必须要是连续时钟一遍ip核捕获

  3. PL SYSREF 必须被 PL clock 同步采样,且 AXI4-Stream 时钟应由 PL clock 生成,不能由ip核的clk_out输出,这点在学习记录(二)里面已经提及过

  4. SYSREF捕获正确但是数据没对齐可能是FIFO的延迟差异,未正确应用 Target_Latency,导致部分 tile 输出比其他早几个时钟,或者PL 端复位时序问题,MTS 之后立刻启动 AXI 流,部分 tile 尚未出数据。可以等5-10us再拉起axi逻辑

总结

上述就详细解释了MTS过程中的流程以及关键信号,在用于多片adda同步的过程中,甚至是多块FPGA同步的过程中都有关键的应用,更多的可以参考官方文档

相关推荐
酌量5 小时前
基于3D激光点云的障碍物检测与跟踪---(2)点云聚类
学习·机器人·聚类·激光点云
黑岚樱梦5 小时前
计算机网络第四章学习
网络·学习·计算机网络
彡皮6 小时前
qt实用学习案例:数据库设计+图表显示+model-view模式+样式表定制
数据库·qt·学习
宫瑾6 小时前
STM32USB学习
stm32·嵌入式硬件·学习
CS Beginner6 小时前
【JavaWeb学习】myabtis.xml一次性加载mapper相关的文件
xml·学习
矢志航天的阿洪6 小时前
用TikZ绘制专业流程图:从入门到进阶(基于D3QN训练流程)
学习
一只侯子7 小时前
Tuning——CC调试(适用高通)
开发语言·图像处理·笔记·学习·算法
迷途呀7 小时前
Latex中的错误汇总
论文阅读·笔记·学习·其他·编辑器
Larry_Yanan7 小时前
QML学习笔记(四十六)QML与C++交互:Q_PROPERTY宏映射
c++·笔记·qt·学习·ui·交互