csz80446
一、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,单片机概念的区别
1、什么是CPLD
CPLD(Complex Programmable Logic Device)复杂可编程逻辑器件,是从PAL和GAL器件发展出来的器件,相对而言规模大,结构复杂,属于大规模集成电路范围。CPLD主要是由可编程逻辑宏单元(MC,Macro Cell)围绕中心的可编程互连矩阵单元组成。其中MC结构较复杂,并具有复杂的I/O单元互连结构,可由用户根据需要生成特定的电路结构,完成一定的功能。由于CPLD内部采用固定长度的金属线进行各逻辑块的互连,所以设计的逻辑电路具有时间可预测性,避免了分段式互连结构时序不完全预测的缺点。
2、什么是FPGA
FPGA英文全名,Field-Programmable Gate Array,既现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。
3、单片机(MCU)
单片机(Microcontrollers)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能集成到一块硅片上构成的一个小而完善的微型计算机系统。
二、编程环境及编程语言
1、CPLD采用原理图输入、编写HDL(VHDL,Verilog),编译,给出逻辑电路的输入激励信号,进行仿真,查看逻辑输出结果是否正确,进行管脚输入、输出锁定,生成代码,通过下载电缆将代码传送并存储在CPLD芯片中。开发工具有quartus,ise等,工作流程和FPGA设计流程基本相似,编程语言和开发工具基本一样。与FPGA的不同在于两者芯片内部不同。
2、FPGA开发环境主要有ISE,quartus,Vivado,modelsim,编程语言常用verilog,VHDL。采用自顶向下设计,从需求到功能模块,编程仿真,时序约束,生成bit文件下载调试。
3、单片机主要是C语言开发,常用开发工具keil,单片机的开发必须熟悉芯片的常用接口,熟练配置,编写接口驱动,硬件复位,软件复位。同时要了解单片机的结构,硬件加密,软件加密等等。
三、三者应用领域
1、CPLD的应用领域
目前已深入网络、仪器仪表、汽车电子、数控机床、航天测控设备等等。
2、FPGA的应用领域
FPGA的应用领域相当广泛,各种高速处理,图像视频处理,航空航天等等,如下图所示。
3、单片机的应用领域
导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物,自动控制领域的机器人、智能仪表、医疗器械以及各种智能机械等等,单片机成本低。