您的位置首页 >要闻 > 半导体 >

黑金云课堂实战解析FPGA+PCIe 链路,从 ADC 采集到上位机波形显示全流程

黑金云课堂这套 FPGA+PCIe 实战项目,是基于 Z7_P 开发板搭配 AN9238(AD9238)12 位双通道 ADC 模块,完整打通模拟信号采集、FPGA 时序接收、DDR 缓存、XDMA 的 PCIe 高速传输、上位机 Qt+Qwt 波形绘制整条链路,适合想自己做简易高速采集卡、示波器原型的开发者,整套方案核心难点不在单独写 ADC 驱动或者单独调 PCIe IP,而是跨时钟域同步、AXI 数据流配合 DMA 写、上位机数据解析和绘图刷新节奏匹配,一旦 FIFO 溢出、DMA 地址错位、采样数据格式解析出错,就会出现波形断层、乱码、丢点、刷新卡顿,课程里也把从硬件接线、Vivado 工程搭建、驱动安装到上位机代码调试的排坑点全部梳理出来。

整套系统各模块分工清单

  • ADC 模块 AN9238:12bit、最高 65MSPS 双通道采样,LVDS 差分输出采样数据,接收 FPGA 提供采样时钟
  • FPGA 逻辑层:ADC 时序接收、跨时钟域 FIFO、AXIS 数据流打包、XDMA IP 控制、AXI-Lite 寄存器控制通道
  • DDR 缓存:作为高速中转缓冲区,承接 ADC 持续流出的高速数据流,避免 PCIe 带宽波动直接丢采样点
  • XDMA(PCIe IP):实现 DMA 写传输,把 FPGA 里的数据直接搬运到 PC 内存,BAR 空间用来下发采样率、触发开关等控制命令
  • 上位机软件:XDMA 驱动读取内存数据、12bit 原始采样值换算电压、Qwt 双缓冲绘图、波形缩放 / 时基调节

关键链路工作流程

  1. 上电初始化:Vivado 工程配置 XDMA,PC 通过 PCIe 枚举识别开发板,加载 XDMA 驱动;上位机通过 AXI-Lite 下发配置,设置 ADC 采样率、通道开关、触发模式
  2. ADC 采样:FPGA 输出采样时钟给 AD9238,LVDS 差分数据送入 FPGA,用 IDDR 解串,锁存 12 位采样数据
  3. 跨时钟域缓存:ADC 采样时钟和 AXI 总线时钟属于不同时钟域,用异步 FIFO 隔离,防止亚稳态
  4. DMA 搬移:FIFO 达到预设水位后,启动 XDMA 的 DMA WRITE,把数据打包成 AXIS 流写入板载 DDR,再直接传输到 PC 内存
  5. 上位机解析绘图:上位机循环读取 PC 内存块,把 12bit 偏移二进制采样值换算成真实电压,送入 Qwt 绘图组件,靠 Qt 信号槽 + 双缓冲机制刷新波形,减少画面闪烁

高频故障现象与排查对照表

故障现象优先排查方向
波形杂乱、跳变严重ADC 差分时钟 / 数据线接线、IBUFDS、IDDR 时序约束、差分信号阻抗匹配
周期性丢点、波形间断FIFO 深度不足、水位阈值设置不合理、PCIe 链路带宽不够、DMA 传输块大小不匹配
波形整体上下偏移,电压读数不准12bit 数据格式转换错误,偏移二进制和补码换算逻辑写错
上位机刷新卡顿、画面闪烁没有开启双缓冲绘图、读取线程和 UI 线程没有分离、单次读取数据块过大
PCIe 识别正常,但读不到 ADC 数据XDMA 地址配置错误、AXI-Lite 控制寄存器没有正确开启采集使能

课程实操分步落地顺序

  1. 硬件接线:AN9238 模块插到 Z7_P 扩展口,SMA 接入信号源,PCIe 金手指插到电脑主板 PCIe 插槽,给开发板供电
  2. Vivado 工程搭建:例化 XDMA IP、异步 FIFO、ADC 接收模块、AXI 数据打包模块,添加时序约束,生成比特流并下载
  3. PC 端安装 XDMA 驱动,查看设备管理器确认 PCIe 设备识别成功
  4. 编译黑金配套 Qt 上位机,打开软件,下发采集启动命令
  5. 调节信号源输出正弦波、方波,观察波形,测试不同采样率下带宽、丢点情况
  6. 调试优化:修改 FIFO 深度、DMA 传输长度、绘图缓冲区大小,做长时间稳定性测试

【相关 FAQ】

问题 1:黑金云课堂 FPGA+PCIe ADC 采集项目,AN9238 ADC 模块核心参数是什么?

回答 1:黑金云课堂这套 FPGA+PCIe ADC 采集方案使用 AN9238,基于 AD9238 芯片,双通道、12 位精度,最高 65MSPS 采样率,LVDS 差分输出,支持 - 5V~+5V 模拟输入。

问题 2:FPGA+PCIe ADC 采集链路里面 XDMA 起到什么作用,能不能不用 DMA?

回答 2:FPGA+PCIe ADC 采集靠 XDMA 实现 DMA 直传,把 ADC 采样数据直接送到 PC 内存,带宽高、CPU 占用低;如果不用 DMA 只用 PIO,带宽很低,高速采样场景会大量丢点。

问题 3:黑金云课堂这个 FPGA+PCIe ADC 采集项目,上位机为什么选用 Qwt 绘制 ADC 波形?

回答 3:黑金云课堂 FPGA+PCIe ADC 采集的上位机基于 Qt+Qwt 开发,Qwt 专门做科学绘图,支持波形缩放、游标测量,搭配双缓冲绘图,能够缓解高速 ADC 数据流刷新带来的画面闪烁。

问题 4:FPGA+PCIe ADC 采集调试时,异步 FIFO 溢出一般怎么优化?

回答 4:FPGA+PCIe ADC 采集出现 FIFO 溢出,优先调大 FIFO 深度、降低 ADC 采样率、调高 DMA 启动水位,或者增大单次 DMA 传输块大小,让数据搬移速度跟上 ADC 采样速度。

【参考资料】

[2026-10-28](

【黑金云课堂】从 ADC 采集到波形显示:FPGA + PCIe 实战解析)CSDN 博客(ALINX 技术博客)

[2026-10-26](AN9238 高速 ADC 模块手册,双通道 65M 12bit AD9238 说明)ALINX 黑金官网

[2026-09-12](ZYNQ XDMA PCIe DMA 高速传输开发要点)与非网

[2026-07-20](基于 XDMA 的高速 ADC 采集卡设计思路)电子发烧友

[2026-05-10](Qt Qwt 高速波形绘制、双缓冲防闪烁方案)CSDN

【免责声明】

本文仅整理黑金云课堂 FPGA+PCIe 从 ADC 采集到波形显示实战课程技术信息,仅作学习参考;工程例程、IP 配置、驱动版本受 Vivado 版本、开发板硬件版本影响,直接复现可能需要修改时序约束、代码;高速 ADC、LVDS、PCIe 硬件调试有静电损坏器件风险,操作前做好静电防护,实操风险由学习者自行承担。