FPGA、PLD、CPLD之间的杂乱关系
4797
FPGA
ASIC芯片内部架构较为简单,不可以硬件编程,只能用来专门处理某一种功能,灵活性最差,但是在执行某一种任务上的效率最高。ASIC也被称为专用集成电路。
fpga你可以理解成把一堆逻辑器件比如与门,或门,选择器等放在一个盒子里,盒子周围就是片子的引脚。通过逻辑编写,把许多的门和许多选择器等器件串联或并联引脚上。就等于把数电实验在fpga里面做。
FPGA的特点如下:
(1)采用FPGA设计ASIC电路(专用集成电路),用户不需要投片生产,就能得到合用的芯片。
(2)FPGA可做其它全定制或半定制ASIC电路的中试样片。
(3)FPGA内部有丰富的触发器和I/O引脚。
(4)FPGA是ASIC电路中设计周期最短、开发费用最低、风险最小的器件之一。
(5)FPGA采用高速CMOS工艺,功耗低,可以与CMOS、TTL电平兼容。
CPU芯片内部架构最复杂,不可以硬件编程,但是可以通过外部的编程软件来编写实现各种功能的软件,具备最高的灵活性,和最低的处理效率。CPU也被称为通用集成电路。
PLD
PLD是可编程逻辑器件(Programable Logic Device)的简称,FPGA是现场可编程门阵列(Field Programable Ga te Array)的简称,两者的功能基本相同,只是实现原理略有不同,所以我们有时可以忽略这两者的区别,统称为可编程逻辑器件或PLD/FPGA。 PLD是电子设计领域中最具活力和发展前途的一项技术,它的影响丝毫不亚于70年代 单片机 的发明和使用。
PLD能做什么呢?可以毫不夸张的讲,PLD能完成任何数字器件的功能,上至高性能CPU,下至简单的74电路,都可以用PLD来实现。PLD如同一张白纸或是一堆积木,工程师可以通过传统的原理图输入法,或是硬件描述语言自由的设计一个数字系统。通过软件仿真,我们可以事先验证设计的正确性。在PCB完成以后,还可以利用PLD的在线修改能力,随时修改设计而不必改动硬件电路。使用PLD来开发数字电路,可以大大缩短设计时间,减少PCB面积,提高系统的可靠性。 PLD的这些优点使得PLD技术在90年代以后得到飞速的发展,同时也大大推动了EDA软件和硬件描述语言(HDL)的进步。
如何使用PLD呢?其实PLD的使用很简单,学习PLD比学习单片机要简单的多,有数字电路基础,会使用计算机,就可以进行PLD的开发。不熟悉PLD的朋友,可以先看一看可编程逻辑器件的发展历程。当今社会是数字化的社会,是数字集成电路广泛应用的社会。数字集成电路本身在不断地进行更新换代。它由早期的电子管、 晶体管 、小中规模集成电路、发展到超大规模集成电路(VLSIC,几万门以上)以及许多具有特定功能的专用集成电路。
但是,随着微电子技术的发展,设计与制造集成电路的任务已不完全由半导体厂商来独立承担。系统设计师们更愿意自己设计专用集成电路(ASIC)芯片,而且希望ASIC的设计周期尽可能短,最好是在实验室里就能设计出合适的ASIC芯片,并且立即投入实际应用之中,因而出现了现场可编程逻辑器件(FPLD),其中应用最广泛的当属现场可编程门阵列(FPGA)和复杂可编程逻辑器件(CPLD)。早期的可编程逻辑器件只有可编程只读存贮器(P ROM )、紫外线可按除只读存贮器(EP ROM )和电可擦除只读存贮器(EEPROM)三种。
由于结构的限制,它们只能完成简单的数字逻辑功能。 其后,出现了一类结构上稍复杂的可编程芯片,即可编程逻辑器件(PLD),它能够完成各种数字逻辑功能。典型的PLD由一个“与”门和一个“或”门阵列组成,而任意一个组合逻辑都可以用“与一或”表达式来描述,所以, PLD能以乘积和的形式完成大量的组合逻辑功能。这一阶段的产品主要有PAL(可编程阵列逻辑)和GAL(通用阵列逻辑)。
PAL由一个可编程的“与”平面和一个固定的“或”平面构成,或门的输。出可以通过触发器有选择地被置为寄存状态。PAL器件是现场可编程的,它的实现工艺有反熔丝技术、EPROM技术和EEPROM技术。还有一类结构更为灵活的逻辑器件是可编程逻辑阵列(PLA),它也由一个“与”平面和一个“或”平面构成,但是这两个平面的连接关系是可编程的。PLA器件既有现场可编程的,也有掩膜可编程的。 在PAL的基础上,又发展了一种通用阵列逻辑GAL(Generic Array Logic),如GAL16V8,GAL22V10 等。它采用了EEPROM工艺,实现了电可按除、电可改写,其输出结构是可编程的逻辑宏单元,因而它的设计具有很强的灵活性,至今仍有许多人使用。 这些早期的PLD器件的一个共同特点是可以实现速度特性较好的逻辑功能,但其过于简单的结构也使它们只能实现规模较小的电路。
CPLD
CPLD是Complex Programmable Logic Device的简写,中文为复杂可编程逻辑器件,是从PAL和GAL器件发展出来的器件,其规模大,结构复杂,属于大规模集成电路范围。CPLD是一种用户根据各自需要而自行构造逻辑功能的数字集成电路。其基本设计方法是借助集成开发软件平台,用原理图、硬件描述语言等方法,生成相应的目标文件,通过下载电缆将代码传送到目标芯片中,实现设计的数字系统。
20世纪70年代,最早的可编程逻辑器件PLD就诞生了。其输出结构是可编程的逻辑宏单元,因为它的硬件结构设计可由软件完成(相当于房子盖好后人工设计局部室内结构),因而它的设计比纯硬件的数字电路具有很强的灵活性,但其过于简单的结构也使它们只能实现规模较小的电路。为弥补PLD只能设计小规模电路这一缺陷,20世纪80年代中期,推出了复杂可编程逻辑器件CPLD。此应用已深入网络、仪器仪表、汽车电子、数控机床、航天测控设备等方面。
CPLD是一种用户根据各自需要而自行构造逻辑功能的数字集成电路。其基本设计方法是借助集成开发软件平台,用原理图、硬件描述语言等方法,生成相应的目标文件,通过下载电缆(“在系统”编程)将代码传送到目标芯片中,实现设计的数字系统。
CPLD, 体积小,速度快,但是资源少。CPLD是Complex Programmable Logic Device(复杂可编程逻辑器件)的缩写,代表的是一种可编程逻辑器件,它可以在制造完成后由用户根据自己的需要定义其逻辑功能。不需要外部接RAM。
先说FPGA和CPLD,先从名字上理解,FPGA:现场可编程门阵列,CPLD:复杂可编程逻辑器件,他们都是可编程器件,但是CPLD的程序是固化在内部flash的,掉电之后重新上电程序依然在。而FPGA内部并没有flash,掉电之后程序会消失,当然可以外部挂一个flash存储程序,每次掉电重启都从flash加载。从规模上讲,FPGA的的容量(逻辑单元)一般要比CPLD大的多,功能更强,成本更高,功耗也更大,可编程性也更加灵活,所以两者有不同的市场定位,FPGA主要用于芯片功能验证(高度复杂)、图像处理(大数据)和通信(高速率)领域,CPLD可用于信号发生等小规模工控市场。
PLD是一个广泛的概念,FPGA和CPLD都属于PLD,编程是硬件可编程,逻辑设计!PLC是可编程控制器,常见的51单片机就是属于PLC了,是ASIC!也就是硬件是做死的,内部的电路是固化的,可以看作是一种定制的芯片,编程是软件编程!
DSP有很强的运算能力,有更多的乘法器加法器等,严格来说DSP是一种软核,再增加外围的存储、 时钟 等才封装成芯片,在图像处理、数学运算上有较大优势。
从最早的PAL、GAL发展到后来的CPLD、FPGA,都属于可编程逻辑器件。
这些器件的内部构造各有差异,但是总体上看,都很类似于做实验用的那种面包板。
面包板上去我们可以插各种器件,用飞线连接起来,搭成各种各样的电路。
可编程器件也一样,里面有两大部分:预先做好的一大堆逻辑门、触发器、存储器等等单元,还有连接到这些的布线。布线和布线之间的连接点空着,可以通过某种手段,连接或者断开某些布线之间的连接点,使得各种预先做好的器件之间建立电路连接,完成某种功能,这个过程,就叫做“编程”。
有的器件是一次性的,把线路之间一次性烧短路或者断路。有的是用一个传输门连接两条线路,传输门的控制端对应SRAM或者Flash存储器中的一位,1导通0断开之类的。这个存储器就构成了器件的配置区,给这个配置区里写入特定的数据,就能形成需要的电路。
至于这个配置数据怎么得来,简单的PAL、GAL可以自己手写,大规模器件可以先用电路图、逻辑表达式、硬件描述语言等等去描述,然后再用EDA软件做综合和布线,生成最终的配置信息,也就是所谓的网表文件。
FPGA芯片内部架构稍微复杂一些,可以硬件编程,因而可以通过硬件编程语言来改变内部芯片的逻辑结构,从而能够在提供一定灵活性的同时,还能够保证较高的处理效率,算是在灵活性和性能上取了个折中。FPGA也被称为可编程集成电路。