当前位置: 首页 > news >正文

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

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

MTS(Multi-Tile Synchronization)

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

确保所有通道在同一个采样瞬间采同一个模拟值,时间上零点需要对齐

保证 JESD204 接口的帧边界一致,让每个通道输出的数据帧在 FPGA 中同时到达同一个时刻

确保多通道输出信号具有相同相位基准,实现相位相干

原理

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

image

一些关键信息

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.)

2. 模拟 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.)

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

4. 自动测量并校准 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.)

5. 对数字功能(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页

image

常见问题

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逻辑

http://www.cnnetsun.cn/news/174632.html

相关文章:

  • 【BuildFlow 筑流】unitrix_macros库 Cargo.toml 配置详解及依赖库用法
  • 《开发者出海必看:如何优雅地搞定海外服务支付?(保姆级干货)》
  • Thinkphp和Laravel企业防爆安全设备信息系统
  • Thinkphp和Laravel全家桶鲜花售卖商城系统vue
  • 记录我适配iOS26遇到的一些问题
  • 通过命令模拟pod创建
  • 同步机无感 STM32 低成本 MD500E 永磁同步控制方案大揭秘
  • 小宝玩具 【通达信、源码 、主图、附图】
  • 使用 Github Pages 和 Hexo
  • 审稿 一区期刊注意事项: journal offers the option to connec;please note, reviewers are not expected 是什么意思
  • 线性代数:多维世界的变形工具箱
  • 力扣题目142. 环形链表 II​的解法分享,附图解
  • MATLAB电力系统继电保护之自动重合闸
  • 10 个AI写作工具,助你轻松搞定继续教育论文!
  • 【开题答辩全过程】以 基于Vue的茶道知识科普网站的设计与实现为例,包含答辩的问题和答案
  • 主动配电网两阶段鲁棒恢复:Matlab 代码探索之旅
  • ICG-20660L加速度+陀螺仪六轴IMU传感器原理图设计,已量产(加速度传感器)
  • 百度AI架构师亲授:Agentic智能体在医疗领域的落地(附诊断案例)
  • 软件工程期末高频易错点深度剖析:避开这些坑,你就赢了!
  • 打破 AI 创作枷锁!虎贲等考 AI 双效赋能,让学术原创不设限
  • AI 赋能学术演示!虎贲等考 AI PPT,让科研汇报告别 “无效努力”
  • 听完这场AI产品大会,我觉得如果不赚钱,所谓的提效真的毫无意义。
  • PWN手的成长之路-19-int_overflow
  • Thinkphp和Laravel党员素质能力提升管理系统vue
  • 【权威对比】Open-AutoGLM与Parasoft SOAtest集成能力评测:数据背后的真相
  • eDiary电子日记本(记录生活点滴)
  • Thinkphp和Laravel+vue好未来团购网系统vue
  • Open-AutoGLM vs SoapUI:谁才是自动化测试协同的终极利器?
  • Android ---【经验篇】项目上线前工序:部署 SpringBoot 项目(二)
  • 还在盲目集成测试工具?Open-AutoGLM与SOAtest的6个致命区别你必须知道