1、名称上的区别:
FPGA(Filed Programmable Gate Array,现场可编程门阵列)
CPLD(Complex Programmable Logic Device,复杂可编程逻辑器件)
相同点就是“Programmable”,即都可以像单片机一样编程(这里的编程本质与单片机不同,只是方便理解)。
2、出现的时代
CPLD诞生于20世纪80年代,由PLD进化而来。
FPGA,第一款产品XC2064由Xilinx在1985年推出。
时间上而言,FPGA略晚一点,大概可以理解为他是后起之秀,自然而然博采众长,集多种器件的优点于一身(事实上它就是在PAL、GAL、CPLD等的基础上发展起来的)。
3、适合的场景
CPLD适合组合逻辑,FPGA适合时序逻辑。
相信懂点数字电路的朋友都应该有所了解组合逻辑和时序逻辑的区别,组合逻辑:例如138译码器,投票表决电路等等;时序逻辑:例如触发器、状态机之类的(他们的输出由信号出现的先后顺序及之前状态决定)。
4、内部构造
CPLD的内部构造的基本单元是与或阵列,是基于乘积项的,而FPGA的内部构造的基本单元是查找表(Xilinx系列的芯片和Altera系列芯片略有区别)。在我看来,CPLD的内部构造更为底层,有点像土和砖的区别,土经过烧结变砖转,虽然大楼是由砖堆砌而来,但砖块的底层是土。
概括如下:
CPLD:基于”乘积项“的与或逻辑阵列
FPGA:基于”查找表“的CLB阵列
5、编程
这一点是相同的,它们都可以通过硬件描述语言,如Verilog、HDL语言进行编程。
6、FPGA、CPLD与单片机有何区别(并行VS串行)
CPLD和FPGA的出现体现了电子产品开发中的定制化与半定制化的权衡,它是一种灵活的开发工具。注意:单片机与FPGA是有着本质的区别,FPGA经常用于通信领域,并行运行,而单片机内部有一个处理器,单片机编程采用C语言,需要取指,译码,执行,它是串行执行的。串行和并行可以分别对应于CPU和显卡,CPU是一句一句执行程序的,而显卡可以并行处理多条语句。如果每条语句都很简单,但这样的语句很多很多,且需要并行处理的话,就适合用显卡,像ANN人工神经网络节点的权值阈值的计算,这就是为什么深度学习平台如TensorFlow需要CUDA显卡支持。
单片机编程并不改变其内部电路的连接结构,只是根据实际的功能来编写运行的程序。
除此之位,FPGA中包含众多的IP核,可以方便用于的开发,IP核又分为软核和硬核,他们有点像(这样说可能很不准确)单片机开发中的函数。相比而言,FPGA更多的用在通信和人工智能领域,它可以支撑深度学习大规模并行计算的需求。事实上,现在FPGA和CPLD的概念越来越模糊了。