入行几年的硬件工程师,依然经常分不清 FPGA 和 CPLD,采购、BOM、原理图把 AG256SL100 标注成 FPGA,后续开发、时序、物料选型连环踩坑。本篇从架构、上电行为、时序、资源、功耗、应用场景 6 个维度对比,结合 AGM AG256SL100、AG10K 真实案例,一次性分清两者差异,以后选型不再混淆。

存储架构差异(最核心):CPLD(AG256SL100):Flash/EEPROM 非易失存储,程序直接存在芯片内部,断电不掉,上电立刻运行,0 加载时间;FPGA(AG10K):SRAM 查找表架构,SRAM 掉电丢失配置,必须外挂 SPI Flash 存储 bit 流,上电之后 FPGA 花几百 us~ms 从 Flash 加载配置,加载完成才开始运行逻辑,有启动延迟。这个差异直接决定上电时序、电源管理方案。工业设备要求上电瞬间同步信号、故障锁存,优先 CPLD;图像流水线数据流,接受短暂启动延迟,选 FPGA。
布线与时序特性:CPLD 是全局连续乘积项布线,时序延迟固定、可预测,时序收敛简单,高温、电压波动下时序稳定,适合控制逻辑;FPGA 是分段布线,资源之间连线由布局工具自动分配,路径长短不一样,时序不可预测,必须严格时钟约束、STA 时序分析,适合大量触发器搭建并行流水线(图像、运动控制)。AG256SL100 做复位逻辑,不用复杂时序约束,常温高温都稳定,这就是 CPLD 时序优势。
资源结构:CPLD 以乘积项、宏单元为主,触发器数量偏少,BRAM 缓存几乎没有,不适合缓存图像行数据;FPGA 有大量 LUT、FF、独立 BRAM 块、PLL、DSP 硬核,适合缓存数据流、流水线算法、倍频时钟。之前视觉团队想用 AG256SL100 做图像滤波,就是因为缺少 BRAM,资源直接爆满,时序崩掉,典型选错器件。
功耗特性:同逻辑规模下,CPLD 静态功耗远低于 SRAM FPGA,适合电池低功耗场景;FPGA 动态功耗高,时钟越高功耗越大,但是并行算力强。
开发和烧录:AGM 的 CPLD、FPGA 统一用 Supra 工具、同一套下载器,Verilog 语法一致,这是 AGM 生态的便利点;但是烧录对象不一样,CPLD 烧内部 Flash,FPGA 烧外挂 Flash。
成本定位:小逻辑(几百宏单元以内),CPLD 成本更低,AG256SL100 就是典型低成本型号;上万 LUT 大规模逻辑,FPGA 性价比更高。
真实对比案例:同一家工控企业,两个项目。项目 A:伺服板电源上电顺序、多路复位、故障锁存,选用 AG256SL100 CPLD,上电瞬间就绪,时序稳定,成本低;项目 B:编码器脉冲解析、差分脉冲输出、运动控制流水线,选用 AG10K FPGA,用 BRAM 缓存位置数据,PLL 倍频到高频时钟,实现高精度运动控制。两个项目如果互换器件,都会出现功能或者成本问题。
常见误区盘点:误区 1:CPLD 是老技术,不如 FPGA 先进;不是先进与否,是场景适配,上电时序领域 CPLD 至今无可替代;误区 2:只要是可编程芯片都能跑图像算法;没有 BRAM 的 CPLD 很难做图像缓存;误区 3:FPGA 启动延迟无所谓,所有项目随便上 FPGA;电网、安全回路、急停故障锁存,上电必须立刻响应,不能等加载,只能 CPLD。
选型快速判断清单:需要上电零延迟、时序稳定可预测、简单 IO / 复位逻辑、低功耗、不想外挂 Flash → CPLD,优先 AG256SL100;需要图像缓存、流水线、PLL 倍频、大量触发器、高速数据流 → FPGA,AG10K 起步。