示波器学习笔记1 —— 采集板数据通路与核心模块

一、系统层次

系统为三层架构:

  • 采集板(ACQ):接收 ADC 数据,触发检测,数据存储与预处理,GT 发送
  • 处理板(PRO):也是 FPGA 板。汇聚多块采集板数据,DSP 处理,触发决策,波形绘制,PCIe 发送
  • PC 上位机:软件显示与交互

本文介绍采集板的数据通路与核心模块。


二、整体数据流

%%{init: {'theme': 'base', 'themeVariables': { 'lineColor': '#aaa' }}}%%
flowchart TB
    ADC["ADC 采集
JESD204B 接口"] GAIN["数字增益"] FILTER["带宽限制滤波"] TRIG_DEC["触发路径
通道间隔抽取"] TRIG_CMP["触发比较器"] PRE_DEC["前置抽取
峰值/高分辨率"] STORE["存储
Scan/RAM/DDR4"] FUSE["通道融合
256→8路 FIFO"] DSP_FIR["DSP FIR 校准滤波"] POST["后级处理
抽取→插值→DBI→GT"] PRO["处理板"] ADC --> GAIN --> FILTER FILTER --> TRIG_DEC --> TRIG_CMP --> POST FILTER --> PRE_DEC --> STORE --> FUSE --> DSP_FIR --> POST POST --> PRO

数据从 ADC 进来后分叉为两条路径:

触发路径 主数据路径
目的 实时检测触发事件 存储、处理、传输完整波形
延迟要求 极低 允许较高延迟
数据量 仅需判断触发条件 需要完整波形数据

三、核心模块

1. ADC 与 JESD204B 接口

高速 ADC 与 FPGA 之间采用 JESD204B 协议进行数据传输,这是一种高速串行接口标准,每对差分线速率可达 10Gbps 以上。数据被编码成帧后通过 SerDes Lane 传输,FPGA 端使用 GTY 高速收发器硬核接收,配合 JESD204B IP 核完成帧解码,恢复为并行数据。

JESD204B 取代了传统并行 LVDS 接口,优势在于引脚数少、速率高、无需处理多路数据线间的时序偏移。

2. 数字增益与带宽滤波

数字增益对 ADC 输出进行幅度缩放,配合模拟前端实现垂直灵敏度档位切换。带宽限制滤波为 FIR 低通滤波器,滤除高频噪声,防止后续抽取时的频谱混叠。

3. 触发比较器——示波器的核心

触发路径先做通道间隔抽取(256 路取 1/4 为 64 路,降低数据量),送入触发比较器。比较器将数据与触发电平比较,检测上升沿/下降沿,产生触发标志。

触发是示波器最核心的机制。信号以 GSa/s 速率涌入,屏幕只刷几十 Hz。触发通过锁定信号的特定相位,保证每帧波形起始位置一致,使显示稳定不滚动。

频率计也挂接在此处,利用边沿计数配合闸门时间计算信号频率。

4. 前置抽取与存储

根据时基档位对数据流进行抽取,使数据率匹配存储带宽。两种关键模式:

  • 峰值检测(Peak Detection):取区间内最大/最小值——即使大量抽取也不丢失窄脉冲。这是示波器区别于普通 ADC 采集卡的核心特征。
  • 高分辨率(Hi-Res):取平均值,提高有效位数。

抽取后三条子路径:Scan(滚动显示,不存储)、RAM(FPGA 内部环形缓冲,短时基触发捕获)、DDR4(外部深存储,GB 级,长时基和分段存储)。

5. 通道融合(256→8 路 FIFO)与跨时钟域

异步 FIFO 将 256 路宽并行数据压缩为 8 路,同时从 ADC 时钟域切换到系统时钟域。这是关键的跨时钟域(CDC)处理——多 bit 数据跨时钟域的标准方案就是异步 FIFO。

6. DSP FIR 校准滤波——TIADC 校准

复系数 FIR 滤波器,用于 TIADC(时间交织 ADC)通道失配校准。TIADC 用多颗 ADC 交替采样来提高等效采样率,但各通道间存在增益/偏移/时钟偏斜误差。FIR 滤波器在线更新校准系数,消除拼合波形的杂散谱。

7. IFIR 精细插值

非整数倍插值滤波器,在原始采样点间插入估算点(等效 sin(x)/x 插值)。小时基档位下采样点不足时,IFIR 使波形显示平滑。

8. DBI 与 GT 高速发送

DBI 负责 2x/4x 插值、DUC(数字上变频)和数据打包成帧。注意这里的 DBI 指 Digital Bandwidth Interpolation,不是 Digital Bandwidth Interleaving(多颗低速 ADC 频域拼接技术)。

GT 收发器内部含 PCS(8b/10b 编码)和 PMA(串行化/解串),将并行数据转为串行 bit 流发往处理板。这才是真正完成并转串的模块。