做射频收发器评估最烦的一件事就是看着一堆寄存器手册和JESD204C协议规范发呆。ADRV902x系列作为ADI主推的四通道宽带收发器功能强是强但第一次接触的人往往会被它的配置体系绕晕——尤其是ARM固件怎么导出来、JESD204C链路的参数怎么和FPGA对上这两件事如果没搞明白板子大概率是点不亮的。这篇文章就聚焦一个实操场景如何用TESTransceiver Evaluation Software这个官方GUI工具一步一步生成ADRV902x用的ARM bin文件以及配套的JESD204C配置文件。文章会从环境准备讲到参数选型再到常见的坑和排查手段尽量把每一步为什么要这么做讲清楚。适合正在调ADRV9026/ADRV9025评估板、或者准备把这类芯片集成到自研板卡上的硬件工程师、FPGA工程师和嵌入式软件工程师参考。1. 项目概述与整体设计思路1.1 为什么需要ARM bin和JESD204C配置ADRV902x系列芯片内部有一颗ARM Cortex-M3处理器这颗ARM处理器不是给你跑操作系统的它承担的是射频芯片内部的初始化、校准算法、温度补偿、DPD跟踪这些“脏活累活”。芯片上电以后ARM必须有一段可执行的固件代码否则整颗芯片就处于“半睡不醒”的状态寄存器写了也没反应数据通路完全不通。而JESD204C配置文件解决的是另一头的问题ADRV902x与FPGA/ASIC之间的高速数据接口。JESD204C不是简单的并行总线它有复杂的链路层、传输层、物理层协议需要明确的lane数量、线速率、LMFC边界、SYSREF时序关系等参数。FPGA端和射频端必须使用完全一致的参数否则链路同步永远失败抓出来的IQ数据全是乱的。所以这两个文件一个是芯片内部系统的“操作系统”一个是芯片对外通信的“语言协议”。做评估板测试时TES就相当于一个“总装车间”所有配置在图形界面里完成然后导出为可复用的文件后续工程化的时候直接用这些文件引导启动。1.2 用TES生成配置的完整流程整个工作流可以拆成四段搭建环境把评估板、PC、电源、参考时钟正确连起来确保TES能通过USB识别到芯片。图形化配置在TES里设置器件型号、参考时钟频率、LO频率、带宽、JESD204C参数等完成全部初始化。验证运行让芯片跑起来查看寄存器状态、读取校准结果、检查链路是否正常。导出文件把ARM固件导出为bin文件把JESD204C相关配置导出为配置文件通常是ini或C头文件格式供后续工程使用。这个流程看似简单但每一个环节都藏着细节尤其是第四步很多人以为“配置好了就能导出”结果导出出来的bin文件换个环境就起不来问题多半出在前面几步的配置不规范而不是导出操作本身。2. 环境准备与核心概念铺垫2.1 需要的软硬件环境先说硬件。以ADRV9026评估板为例你需要准备ADRV9026-EVM或者ADRV9025等对应型号的评估板12V直流电源适配器电流建议3A以上USB线用于连接评估板上的USB转JTAG/UART接口一台Windows系统的PCWindows 10 64位比较稳妥如果后续要测试JESD204C链路还需要一块FPGA板卡和对应的参考时钟源软件方面关键就是TES。ADI官方提供下载安装时建议以管理员身份运行。安装完成后会在桌面上生成快捷方式首次打开时会提示选择器件系列选择ADRV902x并确认版本号。我个人建议把TES、芯片的寄存器手册UG-1727、JESD204C协议文档这三样放在手边实际配置时要经常来回对照。版本匹配这件事尤其重要后面我会用专门一个小节展开。2.2 JESD204C和ARM固件的基本概念这里用生活化的方式来理解一下JESD204C。你可以把它想象成一条多车道的“高速公路”ADRV902x是发货方FPGA是收货方两者之间需要约定一共开通几条车道lane数、每辆车能装多少吨货线速率、车道之间如何对齐多lane同步、什么时候发班车LMFC边界。JESD204C还有扰码、前向纠错FEC、CRC校验这些“道路维护机制”进一步保证数据在高速传输下的可靠性。具体到ADRV902x它支持JESD204B和JESD204C两种协议。JESD204C相比JESD204B一个显著区别是增加了FEC和前向纠错相关配置同时在lane速率提升方面更有优势最高可达24.75Gbps的量级具体随配置模式不同而变化。ARM固件这边ADRV902x内部的ARM核心负责执行校准和跟踪算法这些算法被封装成固件由ADI官方提供。TES工具中已经内嵌了对应版本的ARM固件会在配置时与芯片版本做匹配检查。生成ARM bin的本质就是把当前器件配置状态、寄存器初始化序列和ARM固件打包在一起形成一个可独立分发的镜像文件。3. 实操用TES GUI生成ARM bin与JESD204C配置3.1 从零开始配置ADRV902x打开TES后第一件事是连接设备。在菜单栏选择Device - Connect如果驱动安装正常软件会自动发现评估板上的ADRV902x芯片并显示芯片温度和供电电压等基本信息。这一步如果报错多半是USB驱动问题大概率需要用Zadig工具把驱动切换到WinUSB模式。连接成功以后进入系统配置界面。这里需要逐项填写Device Profile选择对应的器件型号ADRV9026或ADRV9025。Reference Clock填写评估板上TCXO或者外部信号源提供的参考时钟频率常见是38.4MHz、40MHz、61.44MHz等必须和硬件实际焊的晶振频率一致。PLL Frequency设置RF PLL的工作频率也就是LO频率。评估模式下可以快速填入目标频点比如2.4GHz。Sample Rate设置ADC/DAC的采样率ADRV902x通常支持244.14MSPS到491.52MSPS根据具体模式这个值要和FPGA侧的时钟域设计对齐。TES界面的好处是你填完这些参数后软件会自动计算出一大堆派生参数比如时钟分频系数、NCO频率字、滤波器系数等。你不需要手工去算寄存器值但需要学会看计算出来的关键结果尤其是各路的时钟频率是否符合预期。3.2 导出ARM bin的操作路径与注意事项当所有配置完成后就可以导出ARM bin了。具体路径在不同版本的TES里稍有出入一般是在菜单栏选择File - Export然后选择ARM Binary或者类似的选项。导出之前务必确认以下几点器件已经完成初始化流程状态窗口里没有报错。ARM固件版本与芯片版本兼容TES版本过旧可能导致固件版本不匹配。所有需要的收发通道和校准模式都已经配置完整导出后不会因为遗漏配置而导致初始化失败。导出时会让你选择保存路径和文件名建议文件名包含型号、参考时钟、日期等信息比如ADRV9026_REF40M_JESD204C_20250110.bin。这样工程化追溯的时候能一眼看出这个bin文件对应什么配置。关于ARM bin的使用方式有两种常见场景。一种是芯片通过QSPI flash启动此时需要把bin文件烧写到flash的指定地址芯片上电后自动加载。另一种是芯片通过SPI或JTAG由主机引导启动此时启动代码把bin文件读入芯片内部RAM再执行启动命令。无论哪种方式bin文件内部的格式必须和启动方式匹配TES导出时通常已经处理好了这一点但你在自己写启动代码时要搞清楚当前是哪种模式。这里特别提醒不要以为生成了一次ARM bin就一劳永逸。只要你在TES里修改了任何影响初始化的参数比如参考时钟频率、TX/RX通道使能状态、DPD配置都需要重新生成一次bin并重新烧写。否则就会出现明明改了配置但板子重新上电后行为没变化的诡异问题。3.3 导出JESD204C配置文件的操作路径JESD204C的配置页面通常位于TES的JESD或者Link Configuration标签页。核心要填的参数包括JESD Version选择JESD204C。Subclass选择Subclass 1因为ADRV902x的确定性传输延迟功能需要SYSREF支持。Number of Converters根据启用的RX/TX通道数来确定。Number of Lanes每个方向的lane数常见配置是4 lane或者8 lane。Line Rate根据采样率和采样精度算出来的lane速率TES通常会自动计算但你也可以手动指定。Samples per FrameF、Frames per Multi-FrameK等指标这些决定了数据在帧内的映射关系。参数填完后TES会给出对应链路是否满足协议约束的提示。这里的核心检查项是lane速率不能超过芯片SerDes的物理能力同时时钟设定要满足LMFC的要求。如果链路配置合法TES会显示绿色的状态图标。导出配置文件的路径与导出ARM bin类似一般在File - Export里选择Configuration或者Generate Header File。导出内容可以是寄存器级配置脚本ini格式也可以是适用于嵌入式代码的C头文件。两者各有用途寄存器配置脚本方便你在实验室里做对比检查C头文件适合直接集成到自研固件里。如果你是在做完整的产品开发我建议两个都导出来。导出JESD204C配置后我强烈建议你把它和ARM bin文件放在同一个工程目录下并写一份配套的说明文档记录FPGA侧需要匹配的参数。因为你不可能保证半年后还记得当时的链路配置细节一份规范的说明文档能少走很多弯路。4. 核心参数和版面细节拆解4.1 时钟规划是全局的地基ADRV902x的时钟体系比一般芯片复杂得多简单梳理一下一颗芯片里面至少有三个PLL在同时工作一是RF PLL负责产生射频本振直接决定你收发的中心频率二是基带PLL负责产生ADC/DAC采样时钟三是SerDes PLL负责JESD204C的高速串行数据时钟。这三个PLL的参考源都是同一个参考时钟。所以参考时钟的频率稳定性直接决定了整个系统的性能。实际操作中我见过不少人为了图省事用一个精度一般的信号发生器当参考时钟结果频谱仪上出现各种杂散还误以为是PCB布线问题。在TES里时钟规划的关键是你告诉软件参考时钟是多少软件再根据你设定的目标频率反推PLL分频比。你需要重点核对的是SerDes PLL输出频率是否在芯片手册规定的范围内。基带时钟与JESD204C要求的device clock是否成倍数关系。LMFC时钟是否与SYSREF保持同步关系SYSREF要满足建立保持时间。如果TES计算出来的时钟参数有红色告警不要强行往下走先回头检查参考时钟或者目标采样率是不是选得不太合理。4.2 JESD204C的参数怎么选JESD204C的参数非常像“搭积木”选对参数链路才能work。不要被一屏幕的参数吓到核心抓住几个线速率、L/M/F/S/NP、K值还有SYSREF。线速率与采样率、位数、lane数存在确定的换算关系。拿RX方向举例假设你用4个laneADC采样率是491.52MSPS每个采样是16bitIQ双通道同时输出那么总数据率可以用下面这个思路估算每个采样点IQ合起来就是32bitI和Q各16bit每秒采样491.52M次所以数据率大约是491.52 × 10的6次方 × 32 15.7Gbps。如果分到4条lane上每条lane的数据速率就是3.93Gbps左右。这只是基础数据率实际JESD204C还会叠加扰码、控制字符等开销。TES会把这些都算好你只需要确认算出来的lane速率没有超出SerDes能力即可。L、M、F这几个参数的含义可以记为L是lane数决定物理链路宽窄。M是转换器个数决定有多少个数据流。F是每帧包含的字节数决定数据如何塞进帧里。在ADRV902x的典型应用里如果FPGA资源充裕用高lane数可以降低每条lane的速率从而降低PCB布线难度如果FPGA的GTX/GTH资源紧张则可以用较少lane跑高速率。没有绝对正确只有合适与不合适。关于SYSREF建议直接配置为周期性SYSREF并使用Subclass 1这样链路延迟是确定性的多次上电后采集到的数据和SYSREF之间的延迟不会漂移。这在相控阵、多芯片同步场景里是硬性要求不只是“为了规范而规范”。4.3 ARM固件版本匹配问题ADRV902x的ARM固件版本和芯片版本、TES版本之间存在一个“三角关系”。芯片本身会因为晶圆版本不同存在固定的几个版本比如芯片丝印上的版本号。TES内会携带某个版本的ARM固件这个固件通常兼容某一批芯片版本。当你的评估板芯片版本较新而TES版本较旧时可能出现固件不匹配、初始化失败的问题。解决办法很简单升级TES到较新版本。另一类问题是你导出ARM bin以后拿去和自研硬件配合使用但自研板上的芯片版本和评估板不同或者参考时钟不同。这时候不能直接挪用bin必须用自己的硬件环境在TES里重新生成一遍。这一点在产品化阶段特别重要。我自己的习惯是每拿到一批新的芯片都会在TES里确认一下当前芯片固件版本和ARM固件版本是否匹配并把匹配的组合记录在案。这个习惯帮我避免了不少现场调试时的玄学问题。5. 常见问题与排查技巧实录5.1 TES连接与初始化常见问题现象可能原因排查方向USB无法识别设备USB驱动未安装或被系统替换用Zadig或设备管理器检查驱动是否为WinUSB模式连接成功但初始化失败参考时钟频率设置与实际不符用示波器或频率计实测评估板参考时钟输出初始化卡在ARM固件加载TES自带固件与芯片版本不匹配升级TES版本或手动指定匹配的ARM固件芯片温度显示异常供电不足或排线接触不良检查12V电源电流重新插拔连接器连接问题里我踩过最深的坑是USB驱动。评估板上的USB口一般是通过板载的FTDI或者USB转I2C/SPI桥接芯片连接PCWindows有时候会自动装上一个通用驱动导致TES识别不了。解决方法是下载Zadig把对应USB设备的驱动切换为WinUSB问题基本迎刃而解。初始化失败的排查要更有条理一点。先确认硬件层面没有短路、电源正常再确认软件层面的参考时钟频率最后看ARM固件版本。如果TES里有一个独立的“ARM Load”或者“Firmware Download”按钮可以先手动加载一次固件再执行初始化这样能把问题定位得更准。5.2 JESD204C链路同步失败的排查方法JESD204C链路同步失败是最让人头疼的问题之一因为涉及的变量太多。根据我的经验按下面这个顺序排查基本能覆盖90%的情况检查SYSREF用示波器看SYSREF是否正常产生是否有足够的建立保持时间FPGA侧是否采样到了SYSREF。检查线速率匹配FPGA侧的GTX/GTH参考时钟配置是否正确lane速率是否和ADRV902x导出的配置一致。检查映射参数确认L/M/F/S/NP在两边的配置一一对应任何一个参数不一致链路都不可能同步。检查扰码和FEC开关确认在JESD204C模式下两端的扰码使能状态、FEC状态是否一致。还有一个容易被忽视的点是FPGA侧的复位时序。JESD204C协议要求接收端在检测到K28.5字符后要经过一定数量的多帧才能进入数据模式。如果FPGA的复位逻辑设计得太粗暴可能永远卡在同步状态机里。这时候不要只盯着射频端FPGA侧的逻辑分析仪抓一下RX链路状态往往能迅速定位问题。5.3 三个最值得记的避坑经验第一个经验是关于配置文件路径的。TES有时会把配置文件缓存在用户目录下当你切换不同型号的评估板时可能加载到上一次残留的配置导致初始化参数看起来莫名其妙。强烈建议每次开始新项目时先在File - New里新建一个干净工程再导入配置。第二个经验是关于bin文件烧写地址的。如果你要用QSPI启动方式bin文件的烧写地址必须和芯片的启动映射地址一致。每个芯片启动时访问的flash基地址都不太一样具体值要参考该型号的硬件参考手册。烧错地址的典型现象是上电后芯片电流正常但CPU没有任何启动动作寄存器全读不到。第三个经验也是最重要的一条在TES里把所有关键页面截图存档。一旦现场调不通这些截图能帮你快速回溯。比如FPGA工程师说链路不通你可以把TES里的JESD配置页截图发过去两边一对比参数不一致立刻暴露。这比打电话描述半天或传文件来回解析效率高得多。6. 后续从评估板到自研板卡的迁移要点评估板调通只是第一步真正头疼的是把配置迁移到自己设计的板卡上。这个过程中建议提前关注几个点。首先是参考时钟的差异。评估板上有高精度TCXO很多自研板为了省成本用普通晶振或者用FPGA输出的时钟。参考时钟的相位噪声和精度会直接影响射频性能和JESD204C链路的稳定性。在TES里配置时参考时钟的标称值一样不代表实际性能一样建议自研板在参考时钟输入处预留足够的滤波电路和选择电阻方便以后切换外部高精度时钟源。其次是电源设计。ADRV902x对电源质量比较敏感尤其是模拟电源和SerDes电源。评估板的电源设计经过严格验证自研板如果想精简电源方案至少在SerDes电源对应的位置上要保证低纹波。TES里有专门的电源监测页面可以实时看到各路电压值迁移后可先在这里确认各路电压都正常。最后是启动方式的决策。评估板通常支持多种启动方式SPI、QSPI、JTAG自研板需要尽早确定量产时的启动方式并在硬件设计阶段预留对应的启动引脚配置电阻。这个决策会影响要不要在板子上预留QSPI flash位置以及主机软件是否要集成ARM bin的加载逻辑。定性来说真正拉开项目和项目之间差距的往往不是用没用ADRV902x这颗芯片而是评估阶段有没有把配置文件、ARM bin、参数匹配关系这些基础工作做扎实。把这些基础打好后面不管是联调、认证还是量产都会顺畅很多。根据我个人经验ADRV902x这套东西真的不难但绝对是一个“细节决定成败”的活。TES这个工具其实已经把99%的寄存器复杂度封装掉了剩下的难点就是你能不能把tool算出来的参数与FPGA工程里的实际配置一一对应上。强烈建议在拿到一个可用的配置组合后第一时间把TES导出的所有文件、截图、FPGA工程版本号、固件包版本号整理成一个实验记录文档。你未来可能会感谢现在这个“多此一举”的自己。