fpga与cpu的比较
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
fpga与cpu的比较
悬赏分:0 - 解决时间:2007-10-15 19:33
提问者:左岸右转117 - 四级
最佳答案
fpga是现场可编程门阵列,内部以LUT查找表为核心。
用户买来的fpga一般是一块空的芯片,不具备任何功能。
用户可以使用多种方法(如编程、原理图等)将fpga配置成具有特定功能的专用芯片。
而cpu指的是具有计算和控制功能的中央处理器。
显然fpga可以由用户配置成一块cpu,这一过程相对比较复杂,fpga更多用来配置成具有比较简单功能的专用芯片。
现在一些pld公司提供一些编好程序。
把程序下载到fpga中就可以实现cpu的功能,例如Altera公司的NIOS II,这就是通常所说的具有CPU功能的软核。
我来说说吧
CPU是一种比较复杂的数字逻辑器件,按照厂家预先设定的方式,按顺序读取指令、执行指令。
DSP其实也可以成是CPU,不过和CPU不同,DSP内部具有多个线程,具备一定的并行能力,此外DSP通常还具有专用的运算电路, CPU需要很多时钟周期才能搞定的事情,DSP利用专门电路很快能搞定。
FPGA是一个通用可编程的逻辑器件,可以用FPGA来是实现各种数字逻辑(个别具有特意功能的FPGA具备混合信号处理能力,搭载有片上ADC),CPU和通用DSP也是数字逻辑,所以只要FPGA的片上资源够多(足够的逻辑单元、布线单元、时钟、片上内存等等),就可以用FPGA实现CPU和通用DSP。
CPLD其实和FPGA很像,历史的原因,是先有CPLD后有FPGA,一般来说FPGA具有更细致划分的逻辑单元,更多的片上资源。
ASIC是专用集成电路,是为专门目的而设计集成电路,非通用型。
所以不能泛泛描述它的功能。
通常可以认为FPGA流片后的芯片就算是ASIC了。
FPGA/CPLD能做什么呢?
可以毫不夸张的讲,FPGA/CPLD能完成任何数字器件的功能,上至高性能CPU,下至简单的74电路,都可以用FPGA/CPLD来实现。
FPGA/CPLD如同一张白纸或是一堆积木,工程师可以通过传统的原理图输入法,或是硬件描述语言自由的设计一个数字系统。
通过软件仿真,我们可以事先验证设计的正确性。
在PCB完成以后,还可以利用FPGA/CPLD的在线修改能力,随时修改设计而不必改动硬件电路。
使用FPGA/CPLD来开发数字电路,可以大大缩短设计时间,减少PCB面积,提高系统的可靠性。
FPGA/CPLD还可以做数字IC设计的前端验证,用这种方式可以很大程度上降低IC设计的成本。
FPGA/CPLD的这些优点使得FPGA/CPLD技术在90年代以后得到飞速的发展,同时也大大推动了EDA软件和硬件描述语言(HDL)的进步。
FPGA/CPLD有什么区别呢?
PLD(Programmable Logic Device)是可编程逻辑器件的总称,早期多EEPROM工艺,基于乘积项(Product Term)结构。
FPGA (Field Programmable Gate Arry)是指现场可编程门阵列,最早由Xilinx公司发明。
多为SRAM 工艺,基于查找表(Look Up Table)结构,要外挂配置用的EPROM。
Xilinx把SRAM工艺,要外挂配置用的EPROM的PLD叫FPGA,把Flash工艺(类似EEPROM 工艺),乘积项结构的PLD叫CPLD;
Altera把自己的PLD产品:MAX系列(EEPROM工艺),FLEX/ACEX/APEX系列(SRAM 工艺)都叫作CPLD,即复杂PLD(Complex PLD)。
由于FLEX/ACEX/APEX系列也是SRAM工艺,要外挂配置用的EPROM,用法和Xilinx的FPGA一样,所以很多人把Altera的FELX/ACEX/APEX系列产品也叫做FPGA.
速度与性能:
数据密集型系统,比如,通讯中对信号进行处理的二维卷积器. 在实现这一算法的逻辑系统中,每个单元所需要的输入端较少,但需要很多这样的逻辑单元. 这些要求与FPGA 的结构相吻合. 因为FPGA 的粒度小,其输入到输出的传输延迟时间很短,因而能获得高的单元速度.而控制密集型系统通常是输入密集型的,逻辑复杂,CLB 的输入端往往不够用,需把多个CLB 串行级联使用,同时CLB 之间的连接有可能通过多级通用PI 或长线,导致速度急剧下降. 因而实际的传输延迟时间要大CPLD. 比如,实现一个DRAM 控制器,它由四个功能块组成:刷新状态机、刷新地址计数器、刷新定时器和地址选择开关,需要的输入端有几十个,显然用CPLD 更合适.
逻辑利用率:
逻辑利用率是指器件中资源被利用的程度. CPLD 逻辑寄存器少,FPGA 逻辑弱而寄存器多,这正好与控制密集型系统与数据密集型系统相对应. 比如, 规模同为6000PLD 门的
is2pLSI1032 有192 个寄存器;而XC4005E 有616 个寄存器. 因此从逻辑利用率角度,对于组合电路较复杂的设计,宜采用颗粒较粗的CPLD ;对于时序电路中触发器较多的设计,宜采用用细颗粒的FPGA.
使用方便性:
CPLD更适合完成各种算法和组合逻辑,FPGA更适合于完成时序逻辑。
换句话说,FPGA 更适合于触发器丰富的结构,而CPLD更适合于触发器有限而乘积项丰富的结构。
CPLD的连续式布线结构决定了它的时序延迟是均匀的和可预测的,而FPGA的分段式布线结构决定了其延迟的不可预测性。
在编程上FPGA比CPLD具有更大的灵活性。
CPLD通过修改具有固定内连电路的逻辑功能来编程,FPGA主要通过改变内部连线的布线来编程;FP GA可在逻辑门下编程,而CPLD 是在逻辑块下编程。
FPGA的集成度比CPLD高,具有更复杂的布线结构和逻辑实现。
CPLD比FPGA使用起来更方便。
CPLD的编程采用E2PROM或FASTFLASH技术,无需外部存储器芯片,使用简单。
而FPGA的编程信息需存放在外部存储器上,使用方法复杂。
CPLD的速度比FPGA快,并且具有较大的时间可预测性。
这是由于FPGA是门级编程,并且CLB之间采用分布式互联,而CPLD是逻辑块级编程,并且其逻辑块之间的互联是集总式的。
编程技术:
在编程方式上,CPLD主要是基于E2PROM或FLASH存储器编程,编程次数可达1万次,优点是系统断电时编程信息也不丢失。
CPLD又可分为在编程器上编程和在系统编程两类。
FPGA大部分是基于SRAM编程,编程信息在系统断电时丢失,每次上电时,需从器件外部将编程数据重新写入SRAM中。
其优点是可以编程任意次,可在工作中快速编程,从而实现板级和系统级的动态配置。
CPLD保密性好,FPGA保密性差。
一般情况下,CPLD的功耗要比FPGA大,且集成度越高越明显。
与同样密度的FPGA相比,CPLD的待机功耗更低。
CPLD FPGA (待机电流(在Vcc 为1.8V时))
50K 300μA 200mA
100K 600μA 200mA
200K 1.25mA 300mA
为什么CPLD和FPGA需要不同的逻辑设计技巧?
FPGA是细粒器件,其基本单元和路由结构都比CPLD的小。
FPGA是“寄存器丰富”型的(即其寄存器与逻辑门的比例高),而CPLD正好相反,它是“逻辑丰富”型的。
很多设计人员偏爱CPLD是因为它简单易用和高速的优点。
CPLD更适合逻辑密集型应用,如状态机和地址解码器逻辑等。
而FPGA则更适用于CPU和DSP等寄存器密集型设计。
CPLD有多种密度和封装类型,包括单芯片自引导方案。
自引导方案在单个封装内集成了FLASH存储器和CPLD,无须外部引导单元,从而可降低设计复杂性并节省板空间。
在给定的封装尺寸内,有更高的器件密度共享引脚输出。
这就为设计人员提供了“放大”设计的便利,而无须更改板上的引脚输出。
CPLD特别适合那些要求低功耗和低温度的电池供电应用,像手持设备。
许多设计人员都熟悉传统的PLD,并喜欢这种结构所固有的灵活性和易用性。
CPLD为ASIC和FPGA设计人员提供了一种很好的替代方案,可让他们以更简单、方便易用的结构实现其设计。
CPLD现已达到数十万门的密度,并可提供当今通信设计所需的高性能。
大于50万门的设计仍需ASIC和FPGA,但对于小型设计,CPLD不失为一个高性价比的替代方案。
FPGA采用了逻辑单元阵列LCA(Logic Cell Array)这样一个新概念,内部包括可配置逻辑模块CLB(Configurable Logic Block)、输出输入模块IOB(Input Output Block)和内部连线(Interconnect)三个部分。
FPGA的基本特点主要有:
1)采用FPGA设计ASIC电路,用户不需要投片生产,就能得到合用的芯片。
2)FPGA可做其它全定制或半定制ASIC电路的中试样片。
3)FPGA内部有丰富的触发器和I/O。