CPLD和FPGA两者的区别

CPLD和FPGA都是我们经常会用到的器件。有的说有配置芯片的是FPGA,没有的是CPLD;有的说逻辑资源多的是FPGA,少的是CPLD;有的直接就不做区分,把他们都叫做FPGA。那么两者到底有什么区别呢?下面我们就以Altera公司的CPLD和FPGA为例来说说两者的区别。

首先我们看一下CPLD的芯片结构,搞清楚CPLD是由哪几部分组成的。下图是MAX系列CPLD的芯片结构图:

从图中可以清楚的看出来CPLD主要由三部分组成:Macro cell(宏单元),PIA(可编程连线),和IO Control Block(IO控制块)。每个宏单元都与GCLK(全局时钟)OE(输出使能)GCLR(清零)等控制信号直接相连,并且延时相同。各宏单元之间也由固定长度的金属线互连,这样保证逻辑电路的延时固定。其中宏单元模块是CPLD的逻辑功能实现单元,是器件的基本单元,我们设计的逻辑电路就是由宏单元具体实现的。下面我们再来看看宏单元的具体结构:

一个宏单元主要包括了LAB Local Array(逻辑阵列),Product-Term Select Matrix(乘积项选择矩阵)和一个可编程D触发器组成。其中逻辑阵列的每一个交叉点都可以通过编程实现导通从而实现与逻辑,乘积项选择矩阵可实现或逻辑。这两部分协同工作,就可以实现一个完整的组合逻辑。输出可以选择通过D触发器,也可以对触发器进行旁路。通过这个结构可以发现,CPLD非常适合实现组合逻辑,再配合后面的触发器也能够实现一定的时序逻辑。

我们再来以cyclone系列为例看看FPGA的内部结构:

FPGA内部主要就是由LAB单元,连线和IO单元组成。一个LAB单元又包含若干个LE模块。LE模块是CycloneFPGA的基本逻辑单元,下图是LE模块的具体结构:

初看上去好像比较复杂,其实最主要的部分就是LUT查找表模块,以及后面的D触发器。其他都是一些清零进位旁路等等控制信号逻辑。也就是说查找表是FPGA最根本的逻辑单元。Cyclone FPGA使用的是4输入LUT查找表。我们设计的逻辑电路最终都是通过EDA工具把所有可能的结果计算出来然后储存在查找表里面。每次根据输入信号查找对应的结果,然后输出就可以了。也就是说FPGA的工作更像是一个RAM,根据不同的输入信号(地址)输出相应的数据。

通过上面的结构图比较我们就可以清楚的看出来CPLD是由实实在在的组合电路组成的,而FPGA说到底就是一个巨大的查找表!也正是这个根本的差异造成了CPLD和FPGA各方面的不同。除了Altera以外,主要的CPLD和FPGA生产厂商还有Xilinx,Actel,LatTIce以及Atmel等。各家公司的产品各有特点,在架构上会略有区别,但基本原理都是相同的。下面我们整理一下CPLD和FPGA的主要区别:

1) CPLD的逻辑阵列更适合可重复编程的EEPROM或Flash技术来实现。而FPGA显然是利用SRAM技术更合适。

2) 由于是EEPROM或者Flash工艺决定了CPLD是有一定的擦写次数限制的。而FPGA在实际使用中几乎可以说是无配置次数限制。

3) CPLD由于采用的是EEPROM或者Flash工艺所以配置掉电后不丢失,也就不需要外挂配置芯片。而FPGA采用的是SRAM工艺,配置在掉电后就没有了,因此需要一个外部配置芯片。

4) CPLD的安全性更高。由于配置芯片的存在,FPGA的保密性就会比CPLD略差。逻辑数据有可能被读取。(当然FPGA芯片会有一定的加密措施)

5) CPLD由于不需要上电重新配置,所以上电后可以马上工作。而FPGA上电后需要配置时间,逻辑量的大小配置方式的区别也会影响配置时间的长短。

6) 由于CPLD的连续式布线结构,决定了它的时序延时是均匀和固定的。而FPGA采用的分段式布线结构造成了延时不固定。

7) 由于工艺难度的差异,CPLD一般集成度较低,大多为几千门或几万门的芯片规模,做到几十万门已经很困难。而FPGA基于SRAM工艺,集成度更高,可以轻松做到几十万门甚至几百万门的芯片规模,最新的FPGA产品已经接近千万门的规模。

8) 同样由于结构的差异,CPLD更适合完成的是复杂的组合逻辑,如编、译码的工作。而FPGA更适合做复杂的时序逻辑。换句话说就是FPGA更适合触发器丰富的逻辑结构,CPLD适合于触发器有限但是乘积项丰富的逻辑结构。

9) 也是由于工艺的原因,一般CPLD会比FPGA的功耗高。

当然以上只是CPLD和FPGA通常意义上的区别,技术是在不断发展中的,这些差异也不能一概而论。随着技术的发展,CPLD和FPGA也在不断的更新当中。

Altera在StraTIx III 系列FPGA以后的产品中调整了LE的结构,如下图:

从原来的一个4输入查找表加D触发器变成了两个6输入查找表加两个D触发器。再进一步细化查找表的结构图如下:

一个6输入查找表又可以细分为一个4输入查找表和两个3输入查找表。无论结构怎么变,只是出于对资源优化利用考虑的改变,基本的LUT查找表方式没有变。但是新出的MAX II系列和MAX V 系列CPLD则从根本上模糊了CPLD和FPGA的区别。通过阅读芯片手册我们可以发现,两个系列的CPLD虽然名字没有变,但是架构已经完全是与FPGA相同的系统架构了,最小单元也变成了LUT查找表,宏单元已经消失不见了。也许和CPLD还能搭上关系的就是两个系列把配置电路集成到了芯片当中,在实际使用中和原有的CPLD保持了相同的使用习惯。可以说两个系列的产品已经是披着CPLD外衣的FPGA了。

从技术的延续性上来看,可编程器件技术大致经历了PROM-PLA-PAL-GAL-EPLD-CPLD和FPGA的发展过程,CPLD和FPGA是两个不同的发展分支。生产厂商似乎在模糊CPLD和FPGA之间的区别。也许以后只剩下名字的区别,两者会统一成一类器件,或者又会出现更新的技术作为替代。无论技术如何演进,作为工程师而言,我们要做的就是去把握每种器件的原理,优缺点和适用场景,然后在实际的项目中正确选择,灵活使用。

1、是否需要同时学习FPGA和CPLD?

很多同学有疑问,是否需要同时学习FPGA和CPLD,完全没有必要,因为FPGA和CPLD的设计语言都是Verilog,至于CPLD和FPGA内部结构不一样,在编码阶段完全看不出来,软件会根据CPLD还是FPGA自动生成编程文件,所以学习的话建议值学习FPGA即可,FPGA学会了,基本就会用CPLD了。

2、现在的电路设计规模越来越大,动不动都是上万个或者几十万个甚至上百万个寄存器规模,这种规模下,CPLD根本不会考虑的,CPLD资源太少。

FPGA与CPLD之区别相关推荐

  1. FPGA与CPLD的区别

    CPLD和FPGA两者的区别 CPLD和FPGA都是我们经常会用到的器件.有的说有配置芯片的是FPGA,没有的是CPLD;有的说逻辑资源多的是FPGA,少的是CPLD;有的直接就不做区分,把他们都叫做 ...

  2. FPGA和CPLD的区别

    简介 FPGA和CPLD的一个重要区别是LAB(Logic Array Block),FPGA的LAB是基于LUT的逻辑单元,CPLD的LAB是基于乘积项和宏单元.FPGA的LAB以网格阵列排列,随器 ...

  3. 学习笔记——FPGA与CPLD的联系与区别

    一.概念介绍 1.FPGA: (1)概念:FPGA的内部基本结构为门阵列构成静态存储器(SRAM).该SRAM可构成函数发生器,即查找表(LUT),通过查找表可实现逻辑函数功能. (2)逻辑单元:在F ...

  4. FPGA和CPLD芯片选型介绍(一)

    两类芯片现状对比 FPGA和CPLD的区别: 1.CPLD的逻辑阵列使用可重复编程的EEPROM或Flash技术来实现(乘积项结构):而FPGA利用SRAM技术(查找表). 2.由于是EEPROM或者 ...

  5. ARM、DSP、FPGA的特点和区别

    说明ARM.DSP.FPGA的异同点 ARM(AdvancedRISCMachines) 是微处理器行业的一家知名企业,设计了大量高性能.廉价.耗能低的RISC处理器.相关技术及软件.ARM架构是面向 ...

  6. (03)FPGA与CPLD区别

    (03)FPGA与CPLD区别 1.1 目录 1)目录 2)FPGA简介 3)Verilog HDL简介 4)FPGA与CPLD区别 5)结语 1.2 FPGA简介 FPGA(Field Progra ...

  7. (34)FPGA面试题FPGA和CPLD有哪些区别

    1.1 FPGA面试题FPGA和CPLD有哪些区别 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)FPGA面试题FPGA和CPLD有哪些区别: 5)结束语. 1.1.2 ...

  8. FPGA与CPLD的概念及其区别

    一.FPGA与CPLD的基本概念  1.CPLD  CPLD主要是由可编程逻辑宏单元(LMC,Logic Macro Cell)围绕中心的可编程互连矩阵单元组成,其中LMC逻辑结构较复杂,并具有复杂的 ...

  9. 【嵌入式】单片机,FPGA,CPLD,PLC,DSP之间的关系与区别

    前言   最近在学PLC,联想到此前非常熟悉的单片机,以及有所耳闻的FPGA,CPLD,DSP等名词,于是就想到找到它们之间的区别.下面是找到的比较好的资料. 参考资料 PLC与工业控制计算机各有什么 ...

最新文章

  1. DeepChem | PyTorch中用自定义层实现DeepChem的GraphConvLayer
  2. Deepfake技术实现秒速换脸!!!
  3. PHP Shell生成工具Weevely
  4. linux 命令之电子书chm格式下载
  5. 【iOS 开发】使用 iMazing 进行沙盒调试
  6. 深搜DFS\广搜BFS 图初步入门
  7. php web 目录遍历,php的目录遍历操作
  8. 学 Python 最大的 1 个误区,看看你中招了吗?
  9. 力扣 ---- java
  10. 高效率OCR场景文字图片合成工具发布!
  11. java 文件分隔符_java知识点---文件分隔符
  12. 1400——507B、1370C、1363B、1324D、1365C、1374D
  13. 十个你必须知道的ps技巧
  14. SystemVerilog芯片验证 SV语言部分(一)
  15. tftpd32 工具中的 dhcp tftp 使用说明
  16. 3373. 进制转换(高精度除法)
  17. 端云协同,打造更易用的AI计算平台
  18. 2015 Syrian Private Universities Collegiate Programming Contest
  19. java实现qq抢红包_java抢红包功能实现
  20. ffmpeg Windows下录制桌面视频命令

热门文章

  1. java只更新部分图像,java – 绘制从角落偏移的图像的某些部分...
  2. BUUCTF:[SWPU2019]神奇的二维码
  3. b站pink老师JavaScript的jQuery 案例代码——电梯导航案例
  4. 等额本息Vs等额本金
  5. 大数据知识点总结笔记
  6. oracle用case计算分段函数,分段函数在微积分中地计算.PDF
  7. Android_版本控制_Git命令行介绍和使用说明
  8. 将帐户从Quickbooks迁移到Xero
  9. 在服务器上一按l键自动退出,利用 SysRq 键排除和诊断系统故障
  10. 以太坊学习路线——(一)私有链搭建与基本操作