FPGA、CPLD、MCU 与 SoC 的选择
先看工作负载
跳转到“先看工作负载”| 器件 | 擅长 | 不擅长 |
|---|---|---|
| MCU | 控制、协议栈、低成本、快速迭代 | 大规模并行、极高吞吐、纳秒级确定性 |
| CPLD | 上电即用、胶合逻辑、简单时序与电源管理 | 大缓存、复杂算法、高密度数据通路 |
| FPGA | 并行流水、定制接口、多通道同步、确定性延迟 | 软件生态、开发周期、功耗与验证成本 |
| 应用处理器 | Linux、UI、网络、文件系统、复杂算法 | 硬实时 I/O、精确周期级控制 |
| FPGA SoC | 可编程逻辑和处理器紧耦合 | 成本、启动链和软硬件协同复杂度 |
决策顺序
跳转到“决策顺序”flowchart TD A["明确采样率、通道数、协议和延迟"] --> B{"MCU / SoC 外设与 DMA<br/>能否稳定满足?"} B -->|"能"| C["优先 MCU / SoC"] B -->|"不能"| D{"问题是否来自并行吞吐、<br/>定制时序或多通道同步?"} D -->|"是"| E["加入 FPGA / CPLD"] D -->|"否"| F["重新审查接口、算法和系统分工"]量化,而不是凭感觉
跳转到“量化,而不是凭感觉”至少计算:
原始吞吐量 = 通道数 × 每通道采样率 × 每样本传输位数链路利用率 = 原始吞吐量 / 可用有效带宽缓冲时间 = 缓冲容量 / 原始吞吐量有效带宽必须扣除编码、包头、空闲、流控和软件抖动。工程设计应保留余量,并定义溢出、丢包和背压策略。
常见合理分工
跳转到“常见合理分工”- FPGA:采样接口、时间戳、CDC、分包、滤波/抽取、硬件触发。
- MCU/SoC:配置、状态管理、网络、存储、UI 和复杂可变算法。
- CPLD:复位、上电时序、接口复用和简单安全逻辑。
反例
跳转到“反例”- 只因“FPGA 更快”就把所有算法放进 FPGA。
- 只看平均带宽,不看峰值、背压和缓存耗尽时间。
- 把尚未实测的器件性能、相位精度或成本写成确定结论。
- 用器件选型替代系统架构:真正关键的是数据流、控制流、时钟域和故障策略。
具体 AD7768、XDMA 和 i.MX8MP 实现见振动分析仪 FPGA 数据链路项目。