很多刚接触电子和嵌入式的同学,都会在一个问题上反复纠结:
FPGA 和 CPLD 看起来都能“写逻辑”,它们到底有什么区别?我该先学哪个?
如果你也有类似疑惑,这篇文章就是为你准备的。
一、先一句话记住它们的本质
CPLD:一个“可编程的控制逻辑芯片”
FPGA:一个“可以被重构的数字系统平台”
它们都不是 MCU,也不是 CPU,但都能“写代码”。只是写出来的东西,层级完全不同。
二、从“用途”理解,比技术名词更重要
CPLD 在干什么?
CPLD 通常负责这些事情:
上电时序控制
复位信号管理
地址译码、片选逻辑
把一堆零散逻辑“粘”在一起(Glue Logic)
你可以把 CPLD 理解为:
把几十个 74 系列逻辑芯片,装进一颗可编程芯片里
它做的事情简单、直接、确定性强。
FPGA 在干什么?
FPGA 则完全是另一个级别:
图像 / 视频处理
高速数据采集与处理
并行算法加速
通信协议处理
甚至在芯片里“造”一颗 CPU
更准确地说:
FPGA 不是在“写程序”,而是在“搭电路”
你写的 HDL,本质是在描述硬件结构。
三、为什么 FPGA 能做这么多事?
关键在于内部结构不同。
FPGA 的核心:LUT + 可编程互连
FPGA 内部有大量:
LUT(查找表)
触发器
可编程连线
RAM、DSP、高速接口模块
这些资源可以被任意组合,形成你需要的硬件结构。
结果就是:
并行度极高
灵活度极强
但设计复杂度也很高
CPLD 的核心:宏单元(Macrocell)
CPLD 的结构更“传统”:
与或阵列
固定寄存器
固定时序路径
好处是:
时序非常稳定
上电立即工作
几乎不用担心“时序收敛”
四、上电行为:新手最容易忽略的差别
这是一个非常工程化,但极其重要的区别。
CPLD
多为 Flash / EEPROM 配置
上电即工作
掉电不丢配置
所以它常被放在系统“最前面”。
FPGA
多为 SRAM 型
上电后是“空的”
需要从 Flash / SD / MCU 加载配置
这也是为什么:
很多系统里,是 CPLD 在“管” FPGA
五、新手最关心的问题:我该学哪个?
如果你是纯新手
建议路线非常明确:
直接从 FPGA 入门,而不是 CPLD
原因很现实:
FPGA 学到的 HDL 是通用的
教程、板卡、资料极其丰富
能看到更直观的“成果”
而 CPLD 更像是:
FPGA 的“前辈技术”
工程中依然重要
但学习成就感不强
如果你的目标是工程应用
那结论是:
CPLD + FPGA 是黄金组合
CPLD:负责上电、复位、控制
FPGA:负责算法、数据、计算
这是工业级设计的常态。
六、FPGA 对新手来说难在哪?
说实话:不简单。
主要难点在于:
思维方式改变
不是“顺序执行”
而是“所有逻辑同时运行”
时序概念抽象
建立时间
保持时间
时钟域交叉
调试方式不同
没有 printf
主要靠波形和逻辑分析
但好消息是:
一旦跨过门槛,能力提升非常明显
七、给 FPGA 新手的实用建议
从 Verilog 入手
比 VHDL 简洁
先学组合逻辑和时序逻辑
用仿真工具理解“并行”
不要一上来就做复杂项目
把 FPGA 当“硬件”,不是软件
八、最后的总结
CPLD 是确定性的控制逻辑器件
FPGA 是可重构的数字系统平台
新手入门:先 FPGA
工程实践:两者并用