一、FPGA与CPLD区别
FPGA和CPLD都是可编程ASIC器件,有很多共同特点,但是也还是有很多区别的,我们一起来看下
1、概念上的区别
FPGA/CPLD 是通过硬件实现功能的。
FPGA是Field-Programmable Gate Array的缩写,即现场可编程门阵列。
CPLD是Complex Programmable Logic Device的缩写,即复杂可编程逻辑器件。
通过名字可以看出,二者都是可编程的逻辑器件,即实实在在的硬件,通过对硬件编程以实现某种特定功能。说直白一些,二者就是一个与非门或者或非门阵列。由于所有的逻辑式子都可以变换成与非结构或者或非结构,因此所有的逻辑功能都可以通过FPGA/CPLD实现, 编程后的芯片相当于一个数字芯片,如加法器,移位寄存器等。
二者的区别在于FPGA是基于RAM结构的,CPLD是基于ROM机构的。
2、结构上的区别
1、逻辑块的粒度不同
FPGA 中的CLB 是逻辑块,其特点是粒度小。
CPLD中逻辑块粒度较大。
显然,CPLD粗大的分块结构使用时不如FPGA 灵活.
2、逻辑之间的互连结构不同
CPLD 的逻辑块互连是集总式的,其特点是等延时,任意两块之间的延时是相等的,这种结构给设计者带来很大方便。
FPGA 的互连则是分布式的,其延时与系统的布局有关,
3、应用范围上的区别
CPLD更适合完成各种算法和组合逻辑。
FPGA更适合于完成时序逻辑。
换句话说,FPGA更适合于触发器丰富的结构,而CPLD更适合于触发器有限而乘积项丰富的结构。
CPLD的连续式布线结构决定了它的时序延迟是均匀的和可预测的,而FPGA的分段式布线结构决定了其延迟的不可预测性。
4、编程上的区别
在编程上FPGA比CPLD具有更大的灵活性。CPLD通过修改具有固定内连电路的逻辑功能来编程,FPGA主要通过改变内部连线的布线来编程;FPGA可在逻辑门下编程,而CPLD是在逻辑块下编程。
FPGA的集成度比CPLD高,具有更复杂的布线结构和逻辑实现。
CPLD比FPGA使用起来更方便。CPLD的编程采用E2PROM或FASTFLASH技术,无需外部存储器芯片,使用简单。而FPGA的编程信息需存放在外部存储器上,使用方法复杂。
5、运行速度上的区别
CPLD的速度比FPGA快,并且具有较大的时间可预测性。
6、编程方式的区别
在编程方式上,CPLD主要是基于E2PROM或FLASH存储器编程,编程次数可达1万次,优点是系统断电时编程信息也不丢失。
FPGA大部分是基于SRAM编程,编程信息在系统断电时丢失,每次上电时,需从器件外部将编程数据重新写入SRAM中。其 优点是可以编程任意次,可在工作中快速编程,从而实现板级和系统级的动态配置。
7、CPLD保密性好,FPGA保密性差。
8、一般情况下,CPLD的功耗要比FPGA大,且集成度越高越明显。
二、FPGA与单片机的区别
1,FPGA运行速度快FPGA内部集成锁项环,可以把外部时钟倍频,核心频率可以到几百M,而单片机运行速度低的多.在高速场合,单片机无法代替FPGA2,FPGA管脚多,容易实现大规模系统单片机IO口有限,而FPGA动辄数百IO,可以方便连接外设.比如一个系统有多路AD,DA,单片机要进行仔细的资源分配,总线隔离,而FPGA由于丰富的IO资源,可以很容易用不同IO连接各外设3,FPGA内部程序并行运行,有处理更复杂功能的能力单片机程序是串行执行的,执行完一条才能执行下一条,在处理突发事件时只能调用有限的中断资源;而FPGA不同逻辑可以并行执行,可以同时处理不同任务,这就导致了FPGA工作更有效率4,FPGA有大量软核,可以方便进行二次开发FPGA甚至包含单片机和DSP软核,并且IO数仅受FPGA自身IO限制,所以,FPGA又是单片机和DSP的超集,也就是说,单片机和DSP能实现的功能,FPGA一般都能实现。
三、应用范围的区别
1、CPLD和FPGA
大多用于可编程数字电路的实现,使数字电路设计趋于简单和可更改设计。这几年随之FPGA的发展,内部可以嵌入微控制器核,来构建SoC(System on Chip),但是开发难度相当大。
2、单片机
主要用于控制系统,工作频率一般来说低,硬件上具有多个IO端口,同时也集成了多个外设,主要是便于在控制系统中的应用。至于ARM处理器,可认为是MCU的高级版本,ARM本身只是一个内核,目前已经有多个版本。
四、编程环境、编程语言的区别
1、FPGA
FPGA开发环境主要有ISE,quartus,Vivado,modelsim,编程语言常用verilog,VHDL。
2、CPLD
开发工具有quartus,ise等,工作流程和FPGA设计流程基本相似,编程语言和开发工具基本一样。与FPGA的不同在于两者芯片内部不同。
3、单片机
单片机的编程语言:早期单片机主要用汇编语言,现在C语言在单片机开发中占据主导地位,另外还有其它一些高级语言也可用在单片机开发中,但是使用复杂,应用范围有限。
单片机由于生产厂家众多,所以其开发环境基本上都是不一样的,能够涵盖大多数单片机开发的编程环境是IAR,今年随着ARM的崛起,MDK的应用也越来越多。
CPLD、FPGA、单片机都是数字电路系统中的三种常见的硬件平台,它们之间有很多区别。
CPLD(Complex Programmable Logic Device,复杂可编程逻辑器件)是一种由可编程逻辑组合而成的数字电路芯片,适用于中等规模电路的设计,可实现数字逻辑功能。CPLD的主要应用场景包括控制器、接口适配器、数据选择器、DMA控制器和数据处理等领域。CPLD的编程方式通常使用HDL语言(如Verilog和VHDL)。
FPGA(Field Programmable Gate Array,现场可编程门阵列)是一种类似于CPLD的数字电路芯片,但是其规模更大,也更加复杂,可实现各种复杂的数字电路系统。FPGA主要应用于高速数字信号处理、深度学习、计算机视觉、机器人技术、工业控制等领域。FPGA的编程通常使用Verilog,VHDL等HDL语言编写。
单片机(Microcontroller,MCU)是一种集成了CPU、内存、IO、外设等多种功能的芯片,它可以完整地实现一个微型计算机系统,具有成本低廉、易于维护、易于开发、易于控制等优点。单片机的应用场景包括电子设备控制、嵌入式系统、家用电器等各种领域。单片机的编程方式主要有汇编语言和C语言。
总之,CPLD、FPGA、单片机都是数字电路系统中非常重要的硬件平台,各自有适合的应用场景和编程方式。
本文来自投稿,不代表天一生活立场,如若转载,请注明出处:http://tiyigo.com/baike/34865.html