FPGA和CPLD的区别

简介
FPGA和CPLD的一个重要区别是LAB(Logic Array Block),FPGA的LAB是基于LUT的逻辑单元,CPLD的LAB是基于乘积项和宏单元。FPGA的LAB以网格阵列排列,随器件密度线性增长。CPLD的LAB围绕中心全局互连排列,随着器件中逻辑数量的增加,呈指数增长。 CPLD互连包括LAB本地可编程阵列及中心可编程互连。 FPGA器件除了包括本地互连,用于各个LAB,但是和LAB逻辑分开,器件还包括行列互连,这些互连跨过阵列中的多个LAB,以及整个芯片的长宽。

CPLD
CPLD是基于乘积项技术(Product-Term)、EPPROM或FLASH工艺;直接烧写程序掉电后程序不会消失;有擦写寿命,并且一般宏单元在512以下。比如ALTERA的MAX3000/5000/7000/9000和CLASSIC系列)。

CPLD可分为三块结构:可编程逻辑阵列LAB(Logic Array Block,由若干宏单元(LMC,Logic Maro Cell)组成),可编程内部连线(PIA)和I/O控制块(IO Control Block)

宏单元是CPLD的基本结构,由它来实现基本的逻辑功能。LMC内部主要包括与阵列、或阵列、可编程触发器和多路选择器等电路,能独立地配置为时序或组合工作方式。

每个宏单元都与GCLK(全局时钟)、OE(输出使能)、GCLR(清零)等控制信号直接相连,并且延时相同。各宏单元之间由固定长度的金属线互连,这样保证逻辑电路的延时固定。

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

I/O控制块负责输入输出的电气特性控制,比如可以设定集电极开路输出,摆率控制,三态输出等。

可编程内部连线的作用是在各逻辑宏单元之间以及逻辑宏单元和I/O单元之间提供互连网络。各逻辑宏单元通过可编程连线阵列接收来自输入端的信号,并将宏单元的信号送往目的地。这种互连机制有很大的灵活性,它允许在不影响引脚分配的情况下改变内部的设计。

FPGA
FPGA是基于查找表(Look-Up-Table,LUT)技术、SRAM工艺(可迅速反复地编程);直接烧写程序掉电后程序丢失;理论上擦写100万次以上;一般使用需要外挂EEPROM,可以达到几百万门电路。比如ALTERA的APEX、FLEX、ACEX、STRATIX、CYCLONE等等系列,Xilinx的Spartan、Artix、Kintex、Virtex、UltraScale、UltraScale+等等系列。

FPGA由可编程逻辑功能块(CLB)、输入/输出模块(IOB)及可编程互连资源(PIR)等三种可编程电路和一个SRAM结构的配置存储单元组成

CLB是实现逻辑功能的基本单元,CLB主要由逻辑函数发生器、触发器、数据选择器等电路组成。CLB主要由查找表LUT构成,查找表是FPGA最根本的逻辑单元。我们设计的逻辑电路最终都是通过EDA工具把所有可能的结果计算出来然后储存在查找表里面。每次根据输入信号查找对应的结果,然后输出就可以了。也就是说FPGA的工作更像是一个RAM,根据不同的输入信号(地址)输出相应的数据。

IOB主要由输入触发器、输入缓冲器和输出触发/锁存器、输出缓冲器组成,每个IOB控制一个引脚,它们可被配置为输入、输出或双向I/O功能,主要完成芯片上的逻辑与外部引脚的接口。

可编程互连资源(P IR)包括各种长度的连线线段和一些可编程连接开关,通过自动布线实现各种电路的连接 ,实现FPGA内部CLB之间或IOB之间以及CLB与IOB之间连接起来,构成特定功能的电路。

对比

属性CPLDFPGA
内部结构Product-Term 乘积项Look-Up Table LUT
程序存储内部EEPROMSRAM, 外部EEPROM/FLASH
资源类型组合电路丰富触发器丰富
使用场合组合逻辑时序逻辑
基本逻辑组成LAB由宏单元构成LAB由LE或ALM构成
建立逻辑功能乘积项LUT或ALUT
逻辑布局LAB围绕中心全局互连LAB本地和行/列/分段/整片互连
集成度
布线结构连续式分段式
引脚延时时序延时是均匀的和可预测的延时不可预测
保密性可加密一般不可加密
使用灵活性通过修改具有固定内连电路的逻辑功能来编程(在逻辑块下编程)通过改变内部连线的布线来编程(在逻辑门下编程,更灵活)

最新工艺的CPLD也是基于SRAM工艺,结构上和资源上越来越和FPGA趋同。主要差异在于:CPLD通过集成片内FLASH实现掉电不丢失数据,FPGA需要外部FLASH加载。

  • 2
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值