Mercury放出来这颗DRF2580的时候,我盯着“Direct RF”“FPGA”“System on Module”这一串关键词看了很久。搞无线通信、射频信号处理还有软件无线电的工程师应该都懂,Direct RF 这几个字意味着什么——收发链路不再需要一级一级地变频,ADC 和 DAC 直接工作在射频频段,传统射频前端里的混频器、本振、中频滤波器这类器件,全部被塞进了 FPGA 器件内部的射频数据转换器(RFDC)里。再配合 Zynq UltraScale+ RFSoC 这条成熟到不行的架构,一块 SoM 就把射频采样、数字下变频、DDC/DUC、协议解析和上位机通信全都打包好了。
这篇文章我会按从业者的视角,把 DRF2580 这类 Direct RF FPGA SoM 背后的设计逻辑、核心参数怎么读、实际开发中绕不开的环节,以及我调试 RFDC 和 JESD204B/C 链路时踩过的坑,都摊开来聊一聊。适合正在选型射频前端方案、准备从零搭建宽带 SDR 平台,或者想在 FPGA 里做射频信号处理的工程师参考。
1. 直接射频采样为什么成为新趋势
1.1 从超外差架构到直接采样
传统接收机的经典架构是超外差:天线收到射频信号后,先经过低噪声放大器(LNA),再跟本振混频,落到一个固定的中频(IF),做完中频滤波、增益控制之后,才送到 ADC 去采样。这套链路在蜂窝通信、广播接收里跑了快一百年,成熟稳定,但放在今天宽带、多频段、软件定义无线电的需求面前,痛点非常明显。
链路器件太多。一个典型超外差接收链路里至少有 LNA、混频器、本振、镜像抑制滤波器、中频放大器、抗混叠滤波器,每颗器件都会引入插损、噪声和失真,级联之后系统噪声系数和线性度指标很难做上去。再有就是带宽受限,中频滤波器把接收带宽限制死了,想覆盖多个频段就得做多个通道、多套滤波器,硬件规模和标定工作量直接翻倍。最后是校准头痛,本振泄漏、镜像抑制、IQ 不平衡这些误差在模拟域很难彻底消除,只能靠数字域补偿算法去追,每次改频点都要重新校准一遍。
直接射频采样把中间这些环节砍掉了。天线出来的信号经过必要的滤波和放大之后直接进高分辨率高速 ADC,采样完成之后,下变频、滤波、抽取这些事全在 FPGA 数字域里做。射频信号本身频率不需要很高,比如 S 波段以下的信号,几 GSPS 采样率就能直接覆盖。这样整个前端就变成一个"宽带透明"的通道,不管你想要哪个频段,只要它在采样带宽以内,改一改软件配置就能收,硬件上不用换一颗料。
很多人问我直接采样是不是一定比超外差好,这要分场景。如果是窄带、固定频段、对动态范围要求极致的产品,传统架构经过几十年优化依然很有竞争力。但如果你的产品要做宽带接收、多模式切换、频段灵活跳变,直接射频采样带来的架构简化是非常明显的。DRF2580 这种模块之所以能吸引人,本质就是它把"射频到数字"这件事的门槛大幅拉低了。
1.2 RFSoC 把射频前端装进了 FPGA
直接采样能够工程化落地,绕不开 AMD/Xilinx 的 Zynq UltraScale+ RFSoC 这一代芯片。它把多通道高速 ADC、DAC、DDC、DUC 和数字步进衰减器全部集成到一颗 SoC 内部。也就是说,你拿到的不再是"FPGA + 外部 ADC/DAC + 时钟分配 + 数据接口"这一堆板级器件,而是一个统一的可编程射频信号链。
这条架构路线最直接的好处是省掉了 JESD204B 接口的板级传输。传统的"FPGA + 外部数据转换器"方案里,ADC 出来的高速串行数据要先过 JESD204B 物理层、协议层,再进 FPGA 逻辑做对齐和校验,整个链路里同步头、描述符、误码校准都是开发期间的麻烦事。RFSoC 把这些转换器直接放在 FPGA 芯片内部,数据从 RFDC(RF Data Converter)IP 出来后直接就是并行 AXI4-Stream 总线,时序收敛和调试复杂度低了不少。
在 DRF2580 这类 SoM 产品里,RFSoC 这类核心器件是占绝对主导地位的。板子上还要配上 DDR4、高速串行收发器、以太网物理层、时钟芯片、电源树和散热结构,但这些本质上都是"伺候"这颗 RFSoC 的配套设施。模块化之后,用户拿到手的不再是一堆散件,RF 采样前端、FPGA 逻辑资源、嵌入式处理器、高速数据接口全都在一块邮票大小的载板上跑通、测试过了。
从系统架构层面看,这种方案把射频设计能力和数字逻辑设计能力解耦了。射频工程师不需要关心 FPGA 里怎么搭 DDC、怎么控制 RFDC 寄存器;FPGA 工程师也不需要纠结板级射频通道的阻抗匹配和噪声系数。两边各自聚焦,通过 SoM 的标准化接口对接。DRF2580 这种产品形态在工业界越来越受欢迎,逻辑就在这里。
2. DRF2580 SoM 的整体设计与选型思路
2.1 为什么是 SoM 而不是整板方案
拿到 DRF2580 这个名字的时候,很多人的第一反应是:Mercury Systems 不本来就是做整板捕获卡、信号处理板的吗,为什么现在强调 System on Module?这背后其实是嵌入式系统设计里一个很现实的取舍问题。
SoM 方案的核心逻辑是把"高密度、高难度、易出错的电路"预先做进模块里,用户在载板上只做自己的差异化设计。对于 Direct RF FPGA 模块来说,最难的部分就是 RFSoC 的电源完整性设计、多层 PCB 的射频布线、精密时钟分配和高速信号完整性控制。这些工作如果从零做,一个经验丰富的硬件团队也要半年以上,中间随便一个电源纹波超标或者时钟相噪超标,产品性能就废了。
选择 SoM 之后,用户的精力可以集中在载板和天线/射频前端的设计上。你要做什么频段、什么接口、什么结构、什么防护等级,由你自己的载板决定。这种机制特别适合研发周期紧、批量不大、方案迭代快的项目和预研任务。相比之下,整板方案适合真正大批量、成本敏感、硬件细节完全可控的产品,它能把每一分物料成本都压到极致,但前提是你有足够的硬件积累和开发周期。
还有一个隐性考虑是升级路径。RFSoC 芯片每次换代,引脚和 DDR、GTY 等接口设计都可能变化,重新画整板代价很高。但 SoM 厂商会在新模块上尽量保持 pin-to-pin 兼容,你的载板甚至不用改版,换模块就能完成硬件升级。这种迭代方式在需要长期供货的工业项目里价值非常大。
2.2 我理解的 DRF2580 关键规格与性能边界
因为 Mercury 官方数据手册还没有完整释放,下面这些参数是我基于 DRF2580 命名规则、行业同类产品和 RFSoC 公开能力做的合理推演,真实数据要以官方数据手册为准。这套推演方法其实也值得大家借鉴——拿到任何一款新模块,先按厂商产品体系和核心器件猜测能力边界,再去看数据手册确认。
DRF2580 这个名字里的"2580"很像是产品系列编号,从 Mercury 一贯的产品定位来看,它大概率基于 Zynq UltraScale+ RFSoC Gen 3 系列器件。按照 RFSoC Gen 3 的典型能力,这颗 SoM 很可能支持 8 通道 ADC,单通道采样率在 2.5 GSPS 到 5 GSPS 量级,分辨率 14 bit;DAC 侧也是 8 通道,采样率约 9.85 GSPS 或 10 GSPS,同样是 14 bit。RF 输入带宽覆盖 DC 到 6 GHz 是比较现实的指标,这种能力允许直接采样 L、S、C 波段的信号。
数字侧的资源量级可以从兆级 LUT、几十 Mb 存储和几百个 DSP Slice 起步估算,具体取决于选的器件型号。内存肯定是 DDR4 起步,而且容量上会比普通通信板卡大不少,毕竟高速采样之后的实时数据处理和缓存需求是刚性的。对外接口大概率会有 PCIe Gen3 x8 或者万兆以太网,用来把吞吐量巨大的采样数据搬到上位机。
环境指标是另一个值得关注的点。Mercury 做嵌入式信号处理平台出身,DRF2580 作为模块级产品,大概率是宽温设计,工作温度范围可能在 -40°C 到 +70°C 甚至更宽,并且有加固、抗振动、涂敷三防这些选配项。做工业雷达或者野外测试设备的同学,选型时一定要把工作温度范围和环境认证看清楚,消费级和工业级别看长得一样,到了现场全是泪。
2.3 典型适配场景:宽带 SDR、频谱监测与信号捕获
DRF2580 适合的场景,本质就是那些"带宽太宽、频率变化太快,传统窄带接收机根本追不上"的场景。
第一个是宽带软件无线电(SDR)平台。传统 SDR 很多时候只是在基带和数字中频层面软件化,射频前端还是硬邦邦的。Direct RF SoM 把射频采样也软件化了:在 3 GHz 以内,配置一下 RFDC 的 NCO 频率就能把目标频段搬到基带。这在抢修、应急、临时布站这些对灵活性要求高的任务里是非常大的优势。
第二个是频谱监测和信号分析。连续宽带监测需要接收机不遗漏地观察一段时间内整个频段,传统扫频接收机的扫描速度很可能漏掉短时突发信号。DRF2580 的 2.5 GSPS 以上采样率意味着你能实时盯着 1 GHz 以上的瞬时带宽,把所有信号都录下来再离线分析,这就变成"数据存储"问题了,不再是"实时截获"问题。配套的载板上如果挂了大容量 NVMe 存储,长时间频谱记录回放系统就非常容易搭起来。
第三个是雷达信号模拟回放。雷达目标模拟器需要生成高带宽的雷达回波信号,DAC 直接输出射频信号到雷达接收机。DRF2580 的 DAC 数据流有 FPGA 逻辑做实时波形生成、多普勒调制,完全可以替代传统的中频+上变频方案。同理,多通道相控阵系统的校准也需要多通道高带宽数据采集和分析能力。
这些场景有一个共同特点:需求的差异化非常大,而且迭代快。每换一个频段、换一种波形体制,硬件框架不需要动,改逻辑软件就行。这正是 Direct RF + FPGA + SoM 组合最有竞争力的地方。
3. 围绕 Direct RF FPGA SoM 的实操要点
3.1 JESD204B/204C 链路是绕不开的第一步
可能有人会问:RFSoC 的 RFDC 都在片内了,怎么还需要关心 JESD204B 链路?这个说法对了一半。RFDC 内部的数据接口确实是并行 AXI4-Stream,但要让 RFDC 正常跑起来,配置链路并不简单——它仍然建立在 JESD204 协议族思想之上,尤其是当你选择 ADC 采样率和 DAC 插值倍率较高的时候,芯片内部实质上还是在做串行/解串和多路并行化处理。
我自己调试 JESD204B 链路时总结了一个经验:先时钟后配置,先测 BER 再看波形。时钟是这条链路的绝对命脉,JESD204B 要求 device clock、SYSREF、lane rate 三者严格对齐。调试第一步是确认参考时钟的频率和相位噪声是否达标,然后用频谱仪或示波器看 SYSREF 是否与 device clock 对齐。很多人链路起不来,最后查出来就是 SYSREF 时序不对或者根本没有送进来。
第二步是配置 RFDC IP 和 JESD204B PHY,重点核对每一条 lane 的速率是否符合协议上限,比如 JESD204B 通常要求 lane rate 在 12.5 Gbps 以内,JESD204C 可以到 32 Gbps。采样率、分辨率、通道数、采样模式这几个参数必须算清楚,公式是 lane rate = (M × N' × 10 / F) × L,看起来繁琐但绕不开。我建议把这个公式写进自己的开发笔记里,每次配置前先手算一遍,别指望 GUI 能帮你发现所有错误。
再往下就是误码率(BER)测试。Vivado 里 Ibert 核就是干这个的,它能针对高速串行收发器做 PRBS 测试,直接验证物理层是否可靠。我记得有一次链路同步上了但 BER 是 10 的负 6 次方量级,找了一整天,最后发现是 PCB 走线的过孔阻抗不连续,换了连接器问题才消失。这种问题在模块化方案里基本不会出现,因为厂商已经把布线做好了,这也算 SoM 的隐形价值之一。
3.2 时钟与同步:Direct RF 的命根子
Direct RF 系统里,采样时钟的纯净度直接决定 ADC 的 SNR 和 SFDR。如果用带相位噪声很差的时钟去采样,再好的 ADC 芯片也白搭。以 DRF2580 这类 SoM 为例,设计上通常会采用低抖动时钟源(比如 LMK04828 或者 AD9528 之类),给 RFDC 提供 device clock 和 SYSREF。
工程上我建议你重点关注两个指标:集成抖动(integrated jitter)和相噪曲线。采样时钟的抖动会直接折算成信噪比损失,经验公式是 SNR 损失大概为 20 × log10(2π × fin × tjitter)。假设输入信号频率是 2 GHz,时钟抖动 100 fs 的话,SNR 损失大概在 2 dB 左右;如果抖动飙到 500 fs,损失会到 8 dB 以上,整个系统指标直接没法看。所以在评估 DRF2580 或者类似 SoM 时,记得去数据手册里查采样时钟的相噪曲线,特别是在 10 kHz 到 10 MHz 这个 offset 范围内的积分抖动。
多模块同步是另一个深坑。做多通道测向、相控阵或者多板相干接收时,所有板卡的采样时钟必须做到相位对齐。重点有两个:一是让每一路 device clock 和 SYSREF 同步到同一个参考源,二是保证 RFDC 内部的 NCO 相位对齐。实际操作中,需要用 SYSREF 作为系统同步脉冲,所有板卡在同一个沿启动 ADC 采样,并且配合锁相环实现多模块的低偏差同步。
如果你的应用要求多块 DRF2580 协同工作,建议在项目早期就讨论好同步方案:是拿一个外部参考时钟分发给所有模块,还是用 PTP/白兔协议做网络同步?后者灵活,但同步精度通常在亚微秒级,不够看;射频采样系统需要皮秒量级,硬线 SYSREF 分发才是最可靠的方案。这块一定要在载板设计时预留接口,等整体系统做完了再想同步就晚了。
3.3 PS/PL 协同与软件链路搭建
DRF2580 这类 SoM 内 PS 侧有 ARM 处理器,整个系统跑起来涉及 FPGA 逻辑和嵌入式 Linux 的协同工作。我的习惯是先规划好数据通路,再写代码,不然后面动不动就要推翻重来。
典型的数据通路是:天线信号 → RFDC ADC → PL 内的 DDC/抽取 → DMA → PS 的 DDR4 → 应用层 → 万兆网/PCIe 上传上位机。RFDC 配置好之后,数据由 AXI4-Stream 接口送出,PL 里通常会放一个 AXI DMA 或者更高级的 ALM(Axis Linx Memory mapped)来做数据搬运。数据宽度和传输效率要匹配好,比如 ADC 输出 16 bit、多个通道交织,DMA 侧就要按 128 bit 对齐来搬运,避免带宽浪费。
软件侧的关键是 PetaLinux 的配置。RFSoC 器件的 Linux 工程不是随手 make 一下就能跑,驱动、设备树、启动脚本都要配合 RFDC 驱动一起完成。我踩过一个坑:设备树里忘了配置 RFDC 的时钟源,启动后驱动程序一直报设备未就绪,进系统以后手动读写寄存器才发现是设备树节点时钟属性填错了地址。
做这类系统时,我还建议先写一个最小的裸机例程验证 RFDC 数据通路,看到 ILA 里数据波形正常了,再切换到 Linux 环境。这样能非常快地排除"是逻辑问题还是软件问题"的干扰。很多团队一上来就搞 Linux,调了两周发现是 PL 侧 AXI 总线的 burst 长度配错了,这种低级错误很浪费时间和精力。
3.4 布局、散热与电源完整性
DRF2580 已经把 RFSoC 的引脚映射和板级设计都固定好了,但 SoM 用户仍然要在载板开发里面对不少关键的物理设计问题,尤其是在射频输入输出部分。RF 走线要紧守射频设计规范:阻抗控制、短走线、合适的连接器、足够的禁布区。高频信号走线穿过电源层时要特别注意开窗和过孔回流路径,处理不好就是杂散和灵敏度问题。
电源完整性同样不能忽视。RFSoC 大规模工作的时候,瞬间电流率很高,载板上的电源模块需要足够的去耦电容储备和低的电源阻抗。我见过有些载板只在模块接口上放了很小的去耦电容,一到满负荷运行就出现误码,查了很久才知道是电源瞬态跌落导致芯片内部 LDO 输出异常。模块厂商通常会在 SoM 引脚定义里把各路电源分开引出,设计载板时每一路都不能省去耦。
散热方面,DRF2580 定位不低,FPGA 全速跑起来功耗很可能到几十瓦量级。选择散热片、风扇或导冷结构时,要做热仿真,不能凭感觉。经验是:先算功耗,再留 30% 的余量选散热方案。很多嵌入式系统在实验室跑没问题,一到密闭机箱里就降频、采样错乱,问题往往就出在热设计余量不足上。
4. 调试高频 Direct RF 与 FPGA 时踩过的坑
4.1 RFDC 数字增益和满量程控制
RFDC 里有很多数字增益、粗调/精调衰减、满量程控制这类寄存器。项目初期我经常被"为什么频谱上信号幅度看起来不对"这个问题困扰。后来发现是 RFDC 自带的 DSA(数字步进衰减)和满量程配置并没有按实际输入功率去合理设置,数字增益拉得太高,频谱上满是杂散;拉得太低,底噪又下不去。
正确的做法是先把外部射频前端的增益锥度计算清楚,明确输入到模块接头的最大功率是多少,再回头设置 RFDC 的满量程和内部衰减。不要一上来就想着把数字增益拉到满,先给系统留出 6 dB 以上的余量,等整体指标稳定之后再逐步优化。这个思路几乎适用于所有带数字增益控制的 ADC 和 RFSoC。
4.2 采样时钟谐波与交织伪像
高速 ADC 常常通过多个子 ADC 时间交织来获得更高采样率,交织的后果就是会产生固定的杂散点,位置通常在 fs/N 附近,N 是交织因子。比如两个子 ADC 交织的 5 GSPS ADC,spur 可能出现在 2.5 GHz 附近,幅度跟两个 channel 的 offset、增益、相位失配直接相关。
RFSoC 器件通常有内置校准逻辑,理论上上电后会自动校准掉这些失配。但我在实际调试中发现,温度变化大或者采样率切换之后,校准未必能立即生效,需要观察频谱,必要时手动触发校准,看看 spur 是否下降。还有一个技巧:如果某一台设备上 spur 特别严重且跟校准无关,检查采样时钟的占空比和压摆率,劣质时钟会放大交织失配。
4.3 多通道相位一致性调校
多通道接收应用里,通道间相位一致性是要严格保证的。DRF2580 这类 8 通道产品,片内不同 ADC 通道天然会有一定的相位偏差,主要是布线长度差异和采样时钟到达时间差异导致的。做测向或者波束形成前,一定要先做系统级校准。
校准方法大概这样:给所有通道灌同一个信号源,采集数据后做 FFT,取出目标频点的相位值,按通道顺序排列,得到一条相位偏移曲线。然后把这条曲线作为校准系数存在系统里,后续数据处理时直接扣掉。注意相位偏移会随温度和频点漂移,所以运行一段时间后重新校准是必要的。
我见过不少团队忽略这个步骤,直接拿着 RFSoC 的数据去跑 DOA 算法,结果角度估计偏差大得离谱,以为是算法写错了,其实是硬件相位一致性没做。
4.4 调试工具链:Vivado、IBERT 与 ILA 的配合
最后聊聊工具。从 Vivado 工程创建到上板验证,这一套流程有几点值得分享。第一是高速串行收发器验证,强烈建议每个板卡项目都先在硬件上跑一遍 Ibert 核,验证所有 GTY/GTM 收发器的物理层。这一步通过之后,上层协议开发再出问题,你至少可以排除物理层。
第二是 RFDC 的调试界面。Vivado 自带的 RFDC 集成 IP 有波形显示功能,可以对 ADC 输入做实时频谱观察,这对初步验证信号有没有进来、频率对不对非常有用。它是所有 RFDC 调试的起点。
第三是 ILA 的使用。PL 侧数据通路的问题,比如 AXI 总线阻塞、DMA 描述符错误、FIFO 溢出,用 ILA 抓时序是最直接的手段。但 ILA 的存储深度有限,太长了抓不了,所以通常先用计数器在逻辑里判断数据流是否异常,再用 ILA 抓异常附近的内容。这种"先粗后细"的定位方式,比盲抓效率高太多。
5. 关于选型与长期维护的一些体会
DRF2580 这类 Direct RF FPGA SoM 真正让人心动的地方,在于它把选择权交还给了系统设计师。你可以买现成的载板快速验证,也可以按自己的需求设计载板,把固定成本压在模块复用上。它既不用为了节省成本自己去和数字射频、模拟射频的边界缠斗,也不用被封闭的整机方案绑住手脚。
不过我始终要提醒一句:SoM 不是万能钥匙。如果你的最终产品量级很大,单价压力很大,而且射频链路和数字处理都相对固定,自研整板可能是更经济的选择。SoM 更适合的项目形态是:项目周期短、需求变化快、批量中等偏小、对可靠性有明确要求。这个取舍没有对错,只有合不合适。
在实际开发中,我建议大家拿到模块的第一周,先不要急着写复杂的算法逻辑,而是老老实实把 RFDC 配置、数据通路、时钟同步、网络/PCIe 传输这些基础设施全部打通,把每一级信号的功率、频谱、误码都记录下来。这套"基线数据"会在后面所有调试里反复用到。没有基线,出了问题就全是抓瞎。
DRF2580 的出现也让我感慨,几年前要搭一套 2.5 GSPS 以上的宽带采样系统,从 RF 前端到高速数据采集卡到 FPGA 处理板,没有半年时间很难跑通,而且每一级都可能让你怀疑人生。如今一块 SoM 就解决了大部分苦活累活,后期调试的心力可以完全集中在算法和应用逻辑上。技术演进带给大家的红利,大概就是让之前少数人才能碰的领域,慢慢变成普通工程师也能高效推进的日常工作。