2. ADI SDR硬件架构解析

ADI软件定义无线电(SDR)平台之所以能在同一套硬件上覆盖从短波到毫米波、从窄带语音到宽带信号的多种应用,根本原因在于它把“模拟域尽量靠近天线、数字域尽量靠近处理器”这条分界线设计得非常清晰。理解这条分界线,以及分界线两侧各由谁负责,是后续做通道配置、采样率规划、时钟树设计和数据吞吐评估的前提。本节以典型的AD9361/AD9364收发器搭配Xilinx Zynq SoC(或ADI自研的ADRV9002+FPGA方案)为例,拆解整条信号链的硬件分工。

一、射频前端:从天线到收发器引脚

射频前端(RFFE)位于天线与收发器芯片之间,承担三件事:收发切换、信号滤波与放大、阻抗匹配。以AD9361为例,芯片内部已经集成了LNA、混频器、TIA、ADC/DAC以及大部分通道滤波器,因此外部RFFE通常只需要完成“天线—收发开关—带通滤波器—巴伦/匹配网络—收发器RF端口”这条链路。

接收方向上,天线收到的微弱信号先经过收发开关(TDD模式下常用PIN二极管或SOI开关),再进入带通滤波器抑制带外强干扰,随后通过1:1巴伦把单端50 Ω转换为差分100 Ω送入AD9361的RX输入。发射方向则相反:芯片TX差分输出经巴伦转单端,经功率放大器(PA)和低通滤波器后由开关送到天线。这里有一个容易被忽略的细节:AD9361的RX和TX端口都是差分形式,巴伦不仅是平衡转换,还参与阻抗变换,其带宽和插入损耗会直接影响接收灵敏度和发射EVM。因此选型时要让巴伦的通带覆盖目标频段,并尽量选择幅度/相位平衡度好的型号。

二、收发器芯片:模拟与数字的边界

AD9361是2×2收发器,AD9364是1×1版本,二者内部结构一致。它把零中频(Zero-IF)架构做进了单芯片:接收链路中,射频信号经LNA放大后由正交混频器下变频到基带I/Q,再经TIA、低通滤波、ADC采样;发射链路则把DAC输出的I/Q基带信号经低通滤波、正交上变频、PA后送出。芯片内部还包含完整的时钟合成器、AGC、校准引擎和SPI寄存器接口。

关键参数上,AD9361的射频覆盖范围约70 MHz~6 GHz,通道带宽可从200 kHz配置到56 MHz,ADC/DAC为12位,采样率最高约61.44 MSPS。这些数字决定了系统能力的上限:通道带宽决定能承载的信号带宽,采样率决定数字域可处理的最大带宽,而12位量化则决定了理论动态范围约74 dB。实际使用中,用户通过SPI写入寄存器来设置本振频率、采样率、增益模式、滤波器系数等,这些配置最终由FPGA通过SPI控制器下发。

ADI SDR 硬件信号链与分工架构 天线 ANT 射频前端 RFFE 收发开关 T/R SW 带通滤波器 BPF 巴伦/匹配网络 PA / LNA 收发器芯片 AD9361 RX: LNA→Mixer→TIA→LPF→ADC TX: DAC→LPF→Mixer→PA 本振合成器 / AGC / 校准 12-bit ADC/DAC 70 MHz ~ 6 GHz 带宽 200 kHz ~ 56 MHz SPI 寄存器配置接口 FPGA (Zynq PL) LVDS 数据接收/发送 数字下变频 DDC 数字上变频 DUC 抽取/内插滤波 SPI 控制器 AXI-Stream 接口 DMA / 数据缓存 处理器 ARM PS 协议栈 调度/控制 应用层 LVDS I/Q AXI DMA 时钟体系 参考晶振 (如 40 MHz) → AD9361 内部 PLL → 采样时钟 / 本振 DATA_CLK / FB_CLK 回送 FPGA,作为 LVDS 接口同步时钟 FPGA 内部 MMCM/PLL 生成 AXI 总线时钟与 DSP 处理时钟

三、FPGA与处理器的分工

收发器芯片输出的I/Q数据是高速LVDS差分信号,必须由FPGA的SelectIO资源接收。以AD9361为例,它使用一个6位或12位LVDS DDR接口,数据速率与采样率相关。假设采样率为30.72 MSPS、12位I/Q,则单通道数据率为30.72×12×2=737.28 Mbps,双通道约1.47 Gbps。FPGA需要在这个速率下完成串并转换、通道对齐和数字下变频(DDC)/上变频(DUC)。

FPGA内部通常划分三个区域:接口层负责LVDS收发和SPI控制;DSP层负责混频、抽取/内插滤波、增益调整;数据搬运层通过AXI-Stream和DMA把处理后的基带数据送到PS端DDR。处理器(ARM)则运行Linux和用户应用,负责协议栈、调度、参数计算和网络接口。这种分工的核心逻辑是:FPGA做确定性、高吞吐、低延迟的流处理,处理器做非确定性、复杂决策和系统管理。

四、数据接口与时钟体系

数据接口方面,AD9361与FPGA之间是LVDS并行接口,包含DATA_CLK、FB_CLK、RX_FRAME、TX_FRAME以及多对数据线。DATA_CLK由AD9361产生,是接收数据的同步时钟;FB_CLK由FPGA回送,用于发送数据同步。这种源同步结构要求PCB走线等长,通常控制在同一组内±5 mil以内,否则采样窗口会偏移导致误码。

时钟体系是整机性能的根基。AD9361内部有一个分数分频PLL,输入参考时钟通常为40 MHz晶振。通过SPI配置,可以产生所需的采样时钟和本振频率。例如要得到30.72 MSPS采样率,可让PLL输出122.88 MHz,再4分频得到30.72 MHz。本振频率则根据目标射频频率计算,例如接收2.4 GHz信号时,本振设为2.4 GHz,零中频下变频后基带中心为0 Hz。

FPGA侧需要从DATA_CLK恢复出同步时钟,并用MMCM生成AXI总线时钟(如100 MHz)和DSP处理时钟(如122.88 MHz)。这里有一个常见陷阱:如果FPGA逻辑时钟与DATA_CLK不同源,跨时钟域处理不当会造成数据错位。正确做法是用DATA_CLK驱动接收FIFO的写侧,用AXI时钟驱动读侧,中间加异步FIFO隔离。

实践提示:调试时先用示波器确认DATA_CLK频率与预期采样率一致,再检查RX_FRAME的周期是否等于I/Q样本周期。若帧信号抖动大,优先排查LVDS走线匹配和参考时钟质量。

五、典型配置示例

假设目标是一个2.4 GHz、20 MHz带宽的TDD接收链路,采样率设为30.72 MSPS。配置流程如下:

1. 参考时钟:40 MHz 晶振接入 AD9361 XTALP/N
2. SPI 写入 0x001 设置采样率 30.72 MSPS
3. SPI 写入 0x002 设置本振 2400 MHz
4. SPI 写入 0x003 设置 RX 增益模式为 AGC 慢速
5. SPI 写入 0x004 加载 RX FIR 滤波器系数(20 MHz 带宽)
6. FPGA 侧使能 LVDS 接收,等待 DATA_CLK 稳定
7. 检查 RX_FRAME 周期 = 1/30.72 MHz ≈ 32.55 ns
8. 通过 DMA 将 I/Q 数据搬入 DDR,ARM 读取并做 FFT 验证

验证时,若FFT在2.4 GHz处出现单音,且底噪在-80 dBFS以下,说明链路基本正常。若底噪偏高,优先检查巴伦匹配和LNA增益设置;若出现镜像,检查I/Q平衡校准是否执行。

六、架构总结