ADS54J60这块片子,圈内做高速数据采集的应该都不陌生。16bit、1GSPS、JESD204B接口,这三个参数放一起,基本就是为高端软件无线电、宽带信号分析、医疗成像这类场景准备的。我当时拿到这块FMC子卡的任务时,第一反应不是性能,而是怎么把这颗芯片的潜力真正发挥出来。毕竟从芯片规格书到一块能稳定出数据的板卡,中间隔着的东西太多了:时钟树设计、电源噪声控制、JESD204B多通道同步、FPGA侧的对齐逻辑……每一步都有讲究。这篇内容我就把自己从零开始设计、调试这块4通道采集子卡的过程完整复盘一遍,包括选型逻辑、原理细节、踩过的坑和排查方法,希望对同样在做高速采集的朋友有点参考价值。
1. 采集子卡的整体设计与前端选型
1.1 为什么核心选型落在ADS54J60上
先聊选型。FMC接口的高速采集卡,市面上方案不少,有直接上国产ADC的,也有用其他国际厂商器件的。我最终锁定ADS54J60,核心看中的是它在低功耗、高分辨率、高采样率之间的平衡。
ADS54J60这颗芯片是16bit精度、最大1GSPS采样率,内部集成了多通道ADC核心。它最亮眼的其实是JESD204B接口,最高可以跑到15Gbps的lane速率,用少量差分线就能把海量数据传回FPGA。如果换成并行LVDS接口,16bit乘以1G采样率根本没法想象:每个通道至少需要几十对差分线,布线资源和FPGA引脚都会被吃干榨净,板子尺寸也完全控制不住。
从规格上看,ADS54J60的SFDR典型值能做到90dBFS以上,SNR也有75dBFS左右,这对宽带接收链路来说非常关键。实际测试环境里,我用单音信号扫频到400MHz输入,带内杂散能压到80dBFs以下,这个表现在同类16bit ADC里属于第一梯队。
这颗芯片还有一点值得提:它支持多片同步和SYSREF参考,对多通道幅相一致性要求高的系统很友好。我们这块子卡上放了2颗ADS54J60,组合成4通道同步采集,通道间延迟可以校准到皮秒级。
1.2 FMC接口与结构布局的权衡
FMC(FPGA Mezzanine Card)标准本身就是为高速信号扩展设计的,它把模拟前端、ADC和FPGA主体分开,既保证了模拟部分的性能,又方便更换不同功能的子卡。
我选择了HPC(High Pin Count)连接器,因为4通道16bit 1G采样率的数据带宽需要足够的用户IO和串行收发器引脚。FMC HPC引脚定义中包含了多组高速差分对,正好满足JESD204B的lane分配。
结构布局上,必须把模拟输入、时钟电路和数字接口做一个清晰的空间隔离。板卡外形标准在160mm×110mm左右,4层板根本不够用,至少需要6层以上,我用了12层板设计,专门隔离了模拟地、数字地和电源层,整个布局分成了三个区域:
- 输入前端区:靠近FMC连接器一侧,走模拟信号的巴伦耦合、阻抗匹配和滤波电路
- ADC核心区:两颗ADS54J60居中放置,紧邻时钟芯片,减少时钟走线长度
- 数字接口区:JESD204B lane串行差分对,直接指向FMC连接器,保证差分阻抗100欧姆
这样分区的核心原因是为了缩短所有关键路径。模拟信号是最脆弱的,它一旦被数字开关噪声污染,后面做再多的去耦都无法挽回。经验是模拟输入走线越短越好,而时钟到ADC的距离决定了孔径抖动,直接影响ENOB。
2. JESD204B接口机制与多通道同步原理
2.1 替代并行总线的核心原因
JESD204B是ADC/DAC和逻辑器件之间的串行数据接口标准,它从本质上改变了高分辨率高速转换器的数据搬运方式。
如果采用传统并行LVDS,16bit数据、1G采样率,即使是DDR模式,一个通道就需要32根数据线加上时钟线。而JESD204B把数据打包成连续的高速串行流,每个通道只需要2~4对差分线就能完成同样的传输任务。ADS54J60的典型配置是8条lane、每条lane 1.25Gbps~10Gbps,具体看采样率和通道模式。
这个改变的收益不只是PCB布线面积。串行传输降低了PCB上同时翻转信号的数量,从根本上减少了地弹和串扰问题。而且JESD204B包含的确定性延迟机制,能让多片ADC之间做到精确定时对齐,这是并行总线很难做到的。
2.2 Subclass 1同步机制拆解
JESD204B根据同步方法和确定性延迟的支持情况分为三个子类。ADC采样系统必须使用Subclass 1,因为它依赖SYSREF这个全局参考信号来锁定确定性延迟。
SYSREF本质上是一个与设备时钟同源、且相位关系明确的参考脉冲。每个ADC都需要在SYSREF的有效沿对内部本地多帧时钟进行对齐复位,从而保证所有数据帧从同一个时间基点开始。
ADS54J60内部集成了SYSREF采样逻辑。设计时,我把SYSREF和器件时钟都接到同一颗低抖动时钟发生器上,保证两者相位关系只是固定的走线延迟差。调试时常常遇到的问题是SYSREF采样不够稳定,尤其在不同温度条件下,根本原因往往是时钟芯片到各ADC的SYSREF走线长度不一致,形成了不同的建立保持时间余量。解决办法要么是等长约束,要么是在寄存器里调整SYSREF的采样相位。
2.3 数据映射与链路预算
在配置JESD204B链路时,必须明确ADC的通道数量、采样精度、每一帧的样本数、lane数量以及lane速率之间的关系。
ADS54J60在1G采样率、16bit输出的配置下,每个通道的数据率是16Gbps(未编码)。如果采用8条lane,每条lane的原始数据率是2Gbps。但JESD204B采用的是8b/10b编码方式,实际线速率需要乘以10/8,也就是2.5Gbps。这个速率对常规FR4板材、FMC连接器和FPGA收发器来说都相当友好。
我做的链路预算表如下:
| 参数 | 设计取值 | 说明 |
|---|---|---|
| ADC采样率 | 1 GSPS | 最高工作档 |
| 分辨率 | 16 bit/通道 | 直送有效位 |
| 通道数 | 4 | 2片ADS54J60 |
| JESD204B lane数 | 8 | 每片ADC 4条lane |
| Lane速率 | 5 Gbps | 留足裕量 |
| 编码方式 | 8b/10b | JESD204B规范 |
实际使用时,不一定每次都跑满1G。如果系统只需要500M采样率,我可以把lane速率降半,并做2倍抽取,让FPGA侧的处理压力小很多。
3. 硬件设计的关键实操要点
3.1 时钟树的设计与抖动预算分配
高速ADC对时钟质量极度敏感。孔径抖动(Aperture Jitter)会直接折损SNR,时钟相噪是影响采样性能的主要因素之一。
以1GHz采样、100MHz输入信号为例,在SNR目标75dB以上时,整体均方根抖动需要控制在1ps以内。这颗ADS54J60本身孔径抖动只有几十飞秒级别,所以外部时钟源和分配器的抖动成了预算大头。
我当时选了一颗低相噪的时钟发生器,并搭配专用分配缓冲器给两片ADC提供采样时钟和SYSREF。关键设计细节是:
- 采样时钟走线必须独立,不与数字数据线交叉,包地处理
- 时钟输入端使用交流耦合,并加0.1uF串联电容隔离直流
- SYSREF信号走线要保证到两片ADC的延迟差控制在10ps以内
调试时用示波器实测SYSREF到ADC引脚的时序,两片芯片的空对齐偏差在理想范围内,这保证了通道间相位一致性问题不会成为性能瓶颈。
3.2 电源方案与去耦策略
ADS54J60的模拟电源AVDD和数字电源DRVDD,对噪声要求完全不同。AVDD直接影响模拟转换精度,DRVDD影响数字输出质量。不能简单地用一个LDO统一供电,必须分开处理。
模拟电源我使用了低噪声LDO,输出端加铁氧体磁珠和LC滤波器,把电源纹波压低至微伏级。数字电源则用单独的开关稳压器加LDO两级结构,既保证了效率又控制了纹波。
去耦电容的选择也很有讲究。推荐布局是0.1uF加1uF再加大容量钽电容,从芯片引脚由近及远分布。关键是通过磁珠做单点连接,把ADC区域、时钟区域、数字接口区域的电源平面分开。实测下来,模拟电源纹波可以控制在1mV以下,频谱上看不到明显的电源噪声杂散。
3.3 PCB布局布线的具体取舍
12层板叠层设计时,我的信号层和参考层安排如下:
- L1:顶层,信号走线
- L2:完整地平面
- L3:模拟信号层
- L4:电源平面分割
- L5:完整地平面
- L6:信号层(高速lane)
- L7:地平面
- L8:信号层
- L9:电源平面
- L10:地平面
- L11:信号层
- L12:底层,元器件
JESD204B差分对的布线我严格按照以下规则:
- 差分阻抗100欧姆(±5%)
- 对内等长误差控制在2mil以内
- 对间等长误差控制在5mil以内
- 每一对差分线旁边不间断放置地过孔,形成回流栅栏
模拟输入的巴伦电路,尽管是模拟信号,同样需要精心做阻抗匹配。100MHz以上的信号,微带线阻抗、焊盘容性效应都会影响回波损耗。实测时我用网络分析仪扫过S11,在全频段内优于-15dB。
4. FPGA侧对接与寄存器配置实战
4.1 JESD204B链路初始化流程
FPGA端的逻辑设计是子卡能否真正工作的临门一脚。JESD204B链路初始化涉及复杂的握手流程,大致分为几个阶段:
- 加载ADC寄存器配置,设置采样率、lane数、每帧字节数
- 配置FPGA侧的JESD204B IP核参数与远端一致
- 等待ADC和FPGA的PLL锁定
- 由FPGA或系统控制器发送SYNC信号
- 进入数据流工作状态
- 检测误码,确认链路稳定
这里最麻烦的是寄存器配置。ADS54J60的SPI寄存器很多,不能靠猜,一定要根据官方文档的表映射逐项确认,并做回读校验。我实际调试时最常犯的错误是配置了采样率,却忘记同步修改JESD204B的lane数和每帧字节数,导致链路反复重启。
我建议把寄存器配置过程用脚本化方式编写,这样可以快速回滚到已知正确状态。调试时把FPGA侧的链路状态寄存器打印出来,配合误码检测模块,很快能定位是物理层问题还是对齐问题。
4.2 多片同步与数据对齐校准
两片ADC要做到四通道同步采样,仅仅在链路层跑通还不够,必须处理跨芯片的对齐问题。SYSREF在硬件层面保证了两片ADC的本地多帧时钟(LMFC)边界对齐,但FPGA内部的FIFO读写逻辑也需要配合。
具体操作时,我在FPGA里实现了可重新同步的对齐状态机:
- 每个通道的数据进入对齐缓存
- 接收SYSREF同步事件,产生一拍对齐脉冲
- 在LMFC边界时刻,判断所有通道FIFO空满状态,统一释放数据
这个机制保证了无论哪一包数据最先到达,最终都从同一个LMFC边界开始输出,通道间相位误差因此被限制在一个时钟周期以内。实际测试中,四通道在10MHz~400MHz频段内的相位一致性都能保持在1度以下。
4.3 数据采集通路实例
数据从JESD204B链路出来之后,是连续不断的样本流。针对不同应用,我在FPGA内部设计了两种典型的采集通路。
实时频谱监测场景,我会让数据先通过FFT IP核做分段处理,再输出频谱结果。计算量集中在FPGA内部,没有数据落盘的压力。
高保真空采场景,则需要把原始数据无压缩地送到存储介质。这时需要做数据缓冲和速度匹配。一种常用做法是用多路DDR4控制器,把JESD204B输出的数据按通道交织写入,再通过PCIe或千兆以太网传至上位机。
我最终采用的方案是FPGA内做异步FIFO加AXI总线的形式,将四通道16bit数据拼成64bit位宽,通过AXI DMA送往DDR,再统一转发。这样主机端收到的数据排列是顺序且稳定的。
注意:FPGA侧JESD204B的复位时序非常敏感。每次PCIe主机复位或FPGA重配置后,必须让ADC重新执行一次完整的SYSREF同步复位,否则通道间相位就会错乱。这一点我因此在测试环境中遇到多次数据错乱问题。
5. 实测性能与问题排查复盘
5.1 关键性能指标的实际测试方法
性能测试我是用一台高精度信号源和一块高端示波器完成的。测试项目包括SNR、SFDR、ENOB、通道隔离度。
具体做法:信号源输出单音正弦波,幅度调整到略低于ADC满量程(约-1dBFS),通过巴伦差分送入模拟输入。FPGA采集一定长度的数据块上传到上位机,用Python做加窗FFT分析。
以100MHz输入、1GSPS采样为例,实测数据的FFT频谱图上,基频幅度为-1dBFS,最大杂散在-88dBFS左右,计算得到SFDR约87dBc,SNR约74.5dB。这个结果和芯片手册标称值非常接近,说明前端设计和电源噪声控制没有被拖后腿。
换到400MHz输入信号时,由于前端变压器带宽和PCB走线的损耗,SFDR略有下降,降至80dBc附近,但对宽带系统来说依然可以接受。
5.2 误码与链路不稳定问题的定位思路
实际调试中不可能一帆风顺,遇到问题需要用系统化的思路快速定位。
一次典型故障是链路偶发性误码。现象是JESD204B链路连接正常,但数据中会隔几秒冒出一段乱码。排查过程:
- 用快速误码检测模块统计误码位置
- 观察发现误码集中在特定的lane和多帧边界
- 推断是SYSREF建立时间在高温下逐渐恶化,导致LMFC相位偶尔漂移
- 调整SYSREF采样相位寄存器后问题解决
另一类问题是模拟前端震荡。输入端如果悬空,高增益放大器很容易自激,在频谱上表现为低频尖峰。解决方法是加入端接电阻,让输入在无信号时也有确定的直流参考点。
我把常见的异常现象和排查方向整理成了一张速查表:
| 故障现象 | 可能原因 | 排查动作 |
|---|---|---|
| 链路完全无法建链 | SPI配置错误、PLL失锁 | 回读寄存器、检查时钟输出 |
| 偶发误码 | 差分阻抗失配、SYSREF抖动超标 | 检查走线阻抗、调整采样相位 |
| 特定通道数据全零 | ADC通道未使能 | 正确配置通道控制寄存器 |
| 单音频谱杂散偏高 | 电源纹波、输入前端饱和 | 检查电源频谱、降低输入幅度 |
| 多通道相位偏差大 | LMFC对齐失败 | 重新执行SYSREF复位,检查FIFO释放时机 |
| 高温后数据错乱 | SYSREF余量不足 | 优化布局降低温度、调节SYSREF相位 |
6. 扩展应用与实际体会
6.1 这块子卡能做什么
四通道、16bit、1GSPS、FMC接口,这套配置天然适合三大类应用。
第一类是宽带无线通信测试。现在的5G和未来的超宽带系统,信号带宽动辄几百兆,传统的窄带接收机根本无法完整捕获信号。高速采集卡可以直接对整段频谱进行中频采样,配合FPGA做数字下变频,后端只需处理自己关心的目标频段即可。
第二类是雷达与电子战系统。多通道相参采集是系统核心需求,四通道同时采样配合SYSREF精确校准,可以直接实现相参阵列的信号数字化。我在某个模拟项目中做过类似尝试,多通道的幅相一致性数据完全可以支撑后续的数字波束形成算法。
第三类是医学与科研仪器。16bit的高分辨率对微弱信号的还原能力是8bit、10bit ADC无法比拟的。在光谱分析、质谱检测等场景中,精确量化幅值变化是提升系统灵敏度的关键,这块子卡能把整条链路的探测下限压低不少。
6.2 我走过的弯路和最后的经验
做完这块子卡,我最大的一条心得是:高速采集系统的短板往往不在ADC本身,而在于整个时钟链和电源系统。项目初期,我把大部分精力花在ADC寄存器配置上,忽略了时钟抖动,结果SNR怎么都上不去。后来耐心把时钟做干净,数据性能立刻就达标了。
第二点体会是测试工具一定要备齐。调试JESD204B链路时,普通示波器根本抓不到高速串行信号,必须用高带宽示波器或逻辑分析仪配协议解码功能。刚开始我对协议解码不熟悉,全靠误码率检测硬猜,效率极低。后来熟悉了触发方式,配合链路状态寄存器,一分钟就能定位到具体故障层次。
第三件事是关于散热的。1G采样率下,两片ADS54J60加上FPGA和时钟芯片,整体功耗并不小。如果机箱风道设计不好,温度上升到一定程度,SYSREF采样余量会逐步缩小,链路开始不稳定,甚至ADC的ENOB也会下降1~2bit。有条件的话还是优先考虑主动散热方案。
如果后续要扩展,我最想做的事情是加一片DAC子卡,把采集和信号发生组成闭环系统,这样很多通信链路和闭环控制实验都能在这套平台上一站式完成。高速采集这块的玩法远不止跑一个FFT那么简单,把底层的时钟、同步、数据搬运理顺之后,上面能长出的应用会非常多。