请问fpga是什么?

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/08 11:50:16
请问fpga是什么?

请问fpga是什么?
请问fpga是什么?

请问fpga是什么?
FPGA(Field-Programmable Gate Array),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物.它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点.
FPGA简介
背景
  目前以硬件描述语言(Verilog 或 VHDL)所完成的电路设计,可以经过简 单的综合与布局,快速的烧录至 FPGA 上进行测试,是现代 IC 设计验证的技术主流.这些可编辑元件可以被用来实现一些基本的逻辑门电路(比如AND、OR、XOR、NOT)或者更复杂一些的组合功能比如解码器或数学方程式.在大多数的FPGA里面,这些可编辑的元件里也包含记忆元件例如触发器(Flip-flop)或者其他更加完整的记忆块.
  系统设计师可以根据需要通过可编辑的连接把FPGA内部的逻辑块连接起来,就好像一个电路试验板被放在了一个芯片里.一个出厂后的成品FPGA的逻辑块和连接可以按照设计者而改变,所以FPGA可以完成所需要的逻辑功能.
  FPGA一般来说比ASIC(专用集成芯片)的速度要慢,无法完成复杂的设计,而且消耗更多的电能.但是他们也有很多的优点比如可以快速成品,可以被修改来改正程序中的错误和更便宜的造价.厂商也可能会提供便宜的但是编辑能力差的FPGA.因为这些芯片有比较差的可编辑能力,所以这些设计的开发是在普通的FPGA上完成的,然后将设计转移到一个类似于ASIC的芯片上.另外一种方法是用CPLD(复杂可编程逻辑器件备).
CPLD与FPGA的关系
  早在1980年代中期,FPGA已经在PLD设备中扎根.CPLD和FPGA包括了一些相对大数量的可编辑逻辑单元.CPLD逻辑门的密度在几千到几万个逻辑单元之间,而FPGA通常是在几万到几百万.
  CPLD和FPGA的主要区别是他们的系统结构.CPLD是一个有点限制性的结构.这个结构由一个或者多个可编辑的结果之和的逻辑组列和一些相对少量的锁定的寄存器.这样的结果是缺乏编辑灵活性,但是却有可以预计的延迟时间和逻辑单元对连接单元高比率的优点.而FPGA却是有很多的连接单元,这样虽然让它可以更加灵活的编辑,但是结构却复杂的多.
  CPLD和FPGA另外一个区别是大多数的FPGA含有高层次的内置模块(比如加法器和乘法器)和内置的记忆体.因此一个有关的重要区别是很多新的FPGA支持完全的或者部分的系统内重新配置.允许他们的设计随着系统升级或者动态重新配置而改变.一些FPGA可以让设备的一部分重新编辑而其他部分继续正常运行.
FPGA工作原理
  FPGA采用了逻辑单元阵列LCA(Logic Cell Array)这样一个概念,内部包括可配置逻辑模块CLB(Configurable Logic Block)、输出输入模块IOB(Input Output Block)和内部连线(Interconnect)三个部分. 现场可编程门阵列(FPGA)是可编程器件.与传统逻辑电路和门阵列(如PAL,GAL及CPLD器件)相比,FPGA具有不同的结构,FPGA利用小型查找表(16×1RAM)来实现组合逻辑,每个查找表连接到一个D触发器的输入端,触发器再来驱动其他逻辑电路或驱动I/O,由此构成了既可实现组合逻辑功能又可实现时序逻辑功能的基本逻辑单元模块,这些模块间利用金属连线互相连接或连接到I/O模块.FPGA的逻辑是通过向内部静态存储单元加载编程数据来实现的,存储在存储器单元中的值决定了逻辑单元的逻辑功能以及各模块之间或模块与I/O间的联接方式,并最终决定了FPGA所能实现的功能,FPGA允许无限次的编程.
CPLD(Complex Programmable Logic Device)复杂可编程逻辑器件,是从PAL和GAL器件发展出来的器件,相对而言规模大,结构复杂,属于大规模集成电路范围.是一种用户根据各自需要而自行构造逻辑功能的数字集成电路.其基本设计方法是借助集成开发软件平台,用原理图、硬件描述语言等方法,生成相应的目标文件,通过下载电缆(“在系统”编程)将代码传送到目标芯片中,实现设计的数字系统.
简介
  CPLD主要是由可编程逻辑宏单元(MC,Macro Cell)围绕中心的可编程互连矩阵单元组成.其中MC结构较复杂,并具有复杂的I/O单元互连结构,可由用户根据需要生成特定的电路结构,完成一定的功能.由于CPLD内部采用固定长度的金属线进行各逻辑块的互连,所以设计的逻辑电路具有时间可预测性,避免了分段式互连结构时序不完全预测的缺点.
发展历史及应用领域
  20世纪70年代,最早的可编程逻辑器件--PLD诞生了.其输出结构是可编程的逻辑宏单元,因为它的硬件结构设计可由软件完成(相当于房子盖好后人工设计局部室内结构),因而它的设计比纯硬件的数字电路具有很强的灵活性,但其过于简单的结构也使它们只能实现规模较小的电路.为弥补PLD只能设计小规模电路这一缺陷,20世纪80年代中期,推出了复杂可编程逻辑器件--CPLD.目前应用已深入网络、仪器仪表、汽车电子、数控机床、航天测控设备等方面.
器件特点
  它具有编程灵活、集成度高、设计开发周期短、适用范围宽、开发工具先进、设计制造成本低、对设计者的硬件经验要求低、标准产品无需测试、保密性强、价格大众化等特点,可实现较大规模的电路设计,因此被广泛应用于产品的原型设计和产品生产(一般在10,000件以下)之中.几乎所有应用中小规模通用数字集成电路的场合均可应用CPLD器件.CPLD器件已成为电子产品不可缺少的组成部分,它的设计和应用成为电子工程师必备的一种技能.
如何使用
  CPLD是一种用户根据各自需要而自行构造逻辑功能的数字集成电路.其基本设计方法是借助集成开发软件平台,用原理图、硬件描述语言等方法,生成相应的目标文件,通过下载电缆(“在系统”编程)将代码传送到目标芯片中,实现设计的数字系统.
  这里以抢答器为例讲一下它的设计(装修)过程,即芯片的设计流程.CPLD的工作大部分是在电脑上完成的.打开集成开发软件(Altera公司 Max+pluxII)→画原理图、写硬件描述语言(VHDL,Verilog)→编译→给出逻辑电路的输入激励信号,进行仿真,查看逻辑输出结果是否正确→进行管脚输入、输出锁定(7128的64个输入、输出管脚可根据需要设定)→生成代码→通过下载电缆将代码传送并存储在CPLD芯片中.7128这块芯片各管脚已引出,将数码管、抢答开关、指示灯、蜂鸣器通过导线分别接到芯片板上,通电测试,当抢答开关按下,对应位的指示灯应当亮,答对以后,裁判给加分后,看此时数码显示加分结果是否正确,如发现有问题,可重新修改原理图或硬件描述语言,完善设计.设计好后,如批量生产,可直接复制其他CPLD芯片,即写入代码即可.如果要对芯片进行其它设计,比如进行交通灯设计,要重新画原理图、或写硬件描述语言,重复以上工作过程,完成设计.这种修改设计相当于将房屋进行了重新装修,这种装修对CPLD来说可进行上万次.
  家庭成员:经过几十年的发展,许多公司都开发出了CPLD可编程逻辑器件.比较典型的就是Altera、Lattice、Xilinx世界三大权威公司的产品,这里给出常用芯片: Altera EPM7128S (PLCC84)
  Lattice LC4128V (TQFP100)
  Xilinx XC95108 (PLCC84)
FPGA与CPLD的辨别和分类
  FPGA与CPLD的辨别和分类主要是根据其结构特点和工作原理.通常的分类方法是:
  将以乘积项结构方式构成逻辑行为的器件称为CPLD,如Lattice的ispLSI系列、Xilinx的XC9500系列、Altera的MAX7000S系列和Lattice(原Vantis)的Mach系列等.
  将以查表法结构方式构成逻辑行为的器件称为FPGA,如Xilinx的SPARTAN系列、Altera的FLEX10K或ACEX1K系列等.
  尽管FPGA和CPLD都是可编程ASIC器件,有很多共同特点,但由于CPLD和FPGA结构上的差异,具有各自的特点:
  ①CPLD更适合完成各种算法和组合逻辑,FP GA更适合于完成时序逻辑.换句话说,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大,且集成度越高越明显.