一、DMA 是什么
DMA(Direct Memory Access,直接内存访问)是一种由专用硬件控制器执行的数据传输机制,用于在内存与外设之间或内存与内存之间直接搬运数据,无需 CPU 干预。CPU 仅负责发起请求,数据搬运完全由 DMA 控制器完成,大幅降低 CPU 负载。
二、FPGA 是什么
FPGA 是一种"可以自己设计硬件电路的芯片"。它不像 CPU 那样靠执行软件指令工作,而是通过编写代码(Verilog 或 VHDL)来定义电路结构,就像亲手搭建一个微型硬件系统。
| 对比项 | CPU | FPGA |
|---|---|---|
| 工作方式 | 执行软件指令 | 硬件电路可编程 |
| 灵活性 | 通用处理器 | 内部结构可自定义 |
| 并行性 | 串行执行 | 并行计算 |
| 延迟 | 不确定 | 确定性低延迟 |
FPGA 核心特性:可编程性强、并行计算能力强、确定性强低延迟,支持 PCIe、SPI、I2C、Ethernet 等各种外设控制器。
三、为什么 DMA 使用 FPGA
- 自定义 PCIe 协议栈,模拟合法外设
- 实现 DMA 读写控制器,旁路系统访问物理内存
- 无驱动运行,主机感知不到
- 硬件级总线操控,远高于软件 Hook 权限
- 易于加密/混淆逻辑,反检测能力强
四、PCIe 与 DMA
PCIe 是现代主板与外设之间最常用的高速串行通信总线,点对点通信,带宽从 x1 到 x16。
简单理解:PCIe 是传输通道(马路),DMA 是数据搬运方式(货车),两者组合使用——PCIe 提供通路,DMA 负责发起数据传输请求。
五、DMA 常用芯片选型
DMA 板卡一般选择 Xilinx Artix-7(A7)系列芯片,包含 35T / 75T / 100T 等版本。
| 型号 | 逻辑单元 | DSP | 适用场景 |
|---|---|---|---|
| XC7A35T 入门 | 33,280 | 90 | 工程简单,降低成本 |
| XC7A75T 主流推荐 | 75,520 | 180 | 工程中等,资源够用,性价比高 |
| XC7A100T 高端 | 101,440 | 240 | 工程复杂,资源充足,支持更多功能 |
"T" 表示 Targeted,通用可编程用途。逻辑单元越多 = 越复杂的设计;BRAM 越多 = 更多缓存/FIFO;DSP 越多 = 更复杂数学计算。
想从零开发自己的 DMA 固件?参考 零基础 FPGA 开发 DMA 固件系列 →