FPGA与CPLD的区别

FPGA与CPLD的区别CPLD和FPGA两者的区别CPLD和FPGA都是我们经常会用到的器件。有的说有配置芯片的是FPGA,没有的是CPLD;有的说逻辑资源多的是FPGA,少的是CPLD;有的直接就不做区分,把他们都叫做FPGA。那么两者到底有什么区别呢?下面我们就以Altera公司的CPLD和FPGA为例来说说两者的区别。首先我们看一下CPLD的芯片结构,搞清楚CPLD是由哪几部分组成的。下图是MAX系…

大家好,又见面了,我是你们的朋友全栈君。

CPLD和FPGA两者的区别

 

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

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

 

CPLD和FPGA两者的区别

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

CPLD和FPGA两者的区别

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

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

CPLD和FPGA两者的区别

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

CPLD和FPGA两者的区别

初看上去好像比较复杂,其实最主要的部分就是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的结构,如下图:

CPLD和FPGA两者的区别

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

CPLD和FPGA两者的区别

一个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资源太少。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/135898.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 微博舆情分析系统_新浪舆情通

    微博舆情分析系统_新浪舆情通1新浪微博舆情分析系统 摘要  随着互联网的迅速发展,互联网上信息也在飞速增加。如何在广泛信息中总体把握舆情,是一个很重要的问题。本系统实现了基于新浪微博的舆情分析,提供了相关话题获得、关注度曲线绘制、情感取向分析等功能;并对“复旦”关键词进行了跨越一年的舆情分析的实验。  关键词  中文信息处理; 舆情分析; 情感分析 1. 引言 随着Web2.0时…

    2022年9月19日
  • kafka集群操作命令「建议收藏」

    kafka集群操作命令「建议收藏」1.修改kafka配置文件 broker.id=0zookeeper.connect=192.168.1.10:2181,192.168.1.12:2181,192.168.1.13:2181/kafka 说明: 默认Kafka会使用ZooKeeper默认的/路径,这样有关Kafka的ZooKeeper配置就会散落在根路径下面,如果你有其他的应用也在使用ZooKee…

    2022年5月16日
  • linux系统centos7安装nginx

    linux系统centos7安装nginxlinux系统centos7安装nginx,简单亲自测试成功

    2022年5月15日
  • 四十一、SPSS中的t检验和卡方检验[通俗易懂]

    四十一、SPSS中的t检验和卡方检验[通俗易懂]@Author:ByRunsen@Date:2020/5/14在2020年一月初,也是我大三上的寒假,我开始写书,为什么呢?因为化工原理和化工热力学挂了,我需要重拾自己的自信。对于一个大学三年,每天往死里干的人,竟然挂了两科。虽然,我化工专业已经陷入了绝境,大学我主要学习日语,Python,Java和一系列数据分析软件。所以本专栏数据分析将使用Excel,Powerbi,Python,R,Sql,SPSS,stata以及Tableau,后面还会补充BI。第五章应该是二月份完成的。文章目

    2022年5月16日
  • Mac激活idea【2021免费激活】

    (Mac激活idea)本文适用于JetBrains家族所有ide,包括IntelliJidea,phpstorm,webstorm,pycharm,datagrip等。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年3月29日
  • javaWeb实现qq邮箱验证(二)「建议收藏」

    javaWeb实现qq邮箱验证(二)「建议收藏」上篇写的实现基本上是一个工具类,并没封装成下图这样方式(梨视频注册界面),现在开始完善上篇的java邮箱激活验证功。java邮箱验证地址:https://blog.csdn.net/BlackPlus28/article/details/85044068———————————————————————…

    2022年6月13日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号