现场可编程门阵列 (fpga) 是数字ic(集成电路),使硬件设计工程师能够根据他们的要求对定制的数字逻辑进行编程。术语“现场可编程”意味着ic的数字逻辑在其制造(或制作)期间不是固定的,而是由最终用户(设计人员)编程。
为了提供这种可编程性,fpga由可配置(或可编程)逻辑块和这些块之间的可配置互连组成。fpga的这种可配置逻辑和互连(路由)使其具有通用性和灵活性,但是,与具有标准单元的类似口径asic相比,它们速度相对较慢且耗电。
自fpga进入市场以来,已经过去了30多年,在这漫长的跨度中,它们经历了巨大的技术进步,并获得了不断增长的普及。
需要注意的是,虽然类似于pld,但pld(现场可编程门器件)仅限于数百个门,而fpga支持数千个门。
fpga组成
通用fpga由三种类型的模块组成,分别是:
可编程逻辑单元(或clb)——负责实现核心逻辑功能。
可编程路由——负责连接逻辑块。
io块——通过路由连接到逻辑块并帮助建立外部连接。
下面是一个非常广义的fpga典型内部结构示意图:
如上图所示,fpga的核心由可配置的逻辑单元和可编程的互连组成,这些被许多可编程io块包围,用于与外部世界通信。
1、可编程逻辑单元
基于xilinx的fpga中的逻辑块称为可配置逻辑块或clb,而基于altera的fpga中的类似结构称为逻辑阵列块或lab。
clb是fpga的基本组件,它提供逻辑和存储功能。基本逻辑块可以是晶体管、与非门、多路复用器、查找表
(lut)、类似pal的结构甚至处理器之类的任何东西。xilinx和altera都使用基于查找表 (lut) 的逻辑块来实现逻辑和存储功能。
逻辑块可以由单个基本逻辑元件或一组互连的基本逻辑元件组成,其中基本逻辑元件是查找表(又由sram和多路复用器组成)和触发器。
具有“n”个输入的lut由2的n次方配置位组成,这些配置位由sram
单元实现。使用这2的n次方个sram位,lut可以配置为实现任何逻辑功能。
2、可编程路由
如果计算功能由逻辑块提供,则可编程路由网络负责互连这些逻辑块。路由网络提供一个逻辑块与另一个逻辑块之间以及逻辑块和io块之间的互连,以完全实现自定义电路。
基本上,路由网络由带有可编程开关的连接线组成,可以使用任何编程技术进行配置。基本上有两种类型的路由架构,分别是:
岛式路由(也称为网状路由)
分层路由
在岛式路由架构中,逻辑块排列成二维阵列,并使用可编程路由网络互连,这种类型的路由广泛用于商业fpga。
另外,许多逻辑块被限制在一组本地连接中,分层路由架构通过将逻辑块划分为几个组或集群来利用此特性。如果逻辑块驻留在同一个集群中,则分层路由将它们连接到较低的层次结构中。
如果逻辑块驻留在不同的集群中,那么布线是在更高层次的层次上完成的。
基于应用的fpga类型
现场可编程门阵列根据应用分为三类,例如低端fpga、中端fpga和高端fpga。
低端fpga;这些类型的fpga专为低功耗、低逻辑密度和每芯片低复杂性而设计。低端fpga的例子有
altera的cyclone系列、xilinx的spartan系列、microsemi的fusion系列和lattice半导体的mach
xo/ice40。
中档
fpga;这些类型的fpga是低端和高端fpga之间的最佳解决方案,它们的开发是为了在性能和成本之间取得平衡。中端fpga的例子有altera的arria、xlinix的artix-7/kintex-7系列、microsemi的
igl002以及莱迪思半导体的ecp3和ecp5 系列。
高端fpga;这些类型的fpga是为逻辑密度和高性能而开发的。高端fpga的例子有altera的stratix系列、xilinx的virtex系列、achronix的speedster
22i系列和microsemi的proasic3系列。
fpga编程技术
fpga的可重编程架构有许多,但负责这种可重配置架构的最常用的编程技术有以下几种:
sram
eeprom/闪存
anti-fuse(反熔丝)
其他技术包括eprom和fusible link,但它们用于cpld和其他pld,不用于fpga,因此,这里仅介绍限于fpga相关的编程技术。
1、sram
众所周知,有两种类型的半导体ram,称为sram和dram。sram是静态ram的缩写,而dram是动态ram的缩写。sram是使用晶体管设计的,术语静态意味着加载在基本sram存储单元上的值将保持不变,直到故意更改或移除电源时。
下图显示了用于存储1位的典型6晶体管sram单元。
这与由晶体管和电容器组合而成的dram形成对比。术语“动态”是指加载到基本dram存储单元中的值在电容器充电之前一直有效。随着电容器随着时间的推移失去电荷,存储单元必须定期充电以保持电荷。
许多fpga供应商在基于sram的fpga中实现静态存储单元进行编程。基于sram的fpga用于对逻辑单元和互连进行编程,并且由于其可重新编程性和使用cmos技术而变得相当重要,cmos技术以其低动态功耗、高速和更紧密的集成而闻名。
2、eeprom/闪存
与基于sram的编程技术相近的替代方案是基于eeprom或闪存编程技术。基于闪存的编程的主要优点是其非易失性。尽管闪存支持可重新编程,但与sram技术相比,可重复编程的次数非常少。
3、反熔丝
反熔丝编程技术是一种生产一次性可编程器件的古老技术。它们是使用称为反熔丝的链接实现的,该链接在未编程状态下具有非常高的电阻,可以被认为是开路。编程时,向输入端提供高电压和电流。因此,最初以非晶硅(基本上是一种电阻非常高的绝缘体)的形式连接两条金属轨道的反熔丝通过转化为导电多晶硅而变得具有生命力。
与其它两种技术相比,反熔丝技术占用的空间最少,但仅作为一次性可编程选项提供。
fpga的应用
fpga在过去十年中获得了快速增长,因为它们可用于广泛的应用。fpga的具体应用包括数字信号处理、生物信息学、设备控制器、软件无线电、随机逻辑、医学成像、计算机硬件仿真、集成多个spld、语音识别、密码学、过滤和通信编码等等。
而一些更常见的fpga应用包括航空航天和国防、医疗电子、asic原型设计、音频、汽车、广播、消费电子、分布式货币系统、数据中心、高性能计算、工业、科学仪器、安全系统、视频和图像处理,有线通信,无线通信。
总结
其实在引入fpga的早期,它们通常用于实现中小型复杂状态机和对小数据的数据处理任务。多年来,随着其复杂性和功能的增加,它们已被纳入多种汽车、消费和工业应用中。
最初,fpga为asic设计原型提供了一个简单的选项,因为它们可以很容易地重新配置以在最终确定主要设计之前测试和尝试硬件的多种变体。但它们作为最终产品的功能具有相对较短的上市时间和较小的实施成本,因此它们已被实施为某些asic的直接竞争对手。
随着fpga成本的下降,它们成为嵌入式控制应用的有力竞争者。如今fpga还可用于实现任何微控制器的软核处理器以及自定义io功能。
日本美容仪什么牌子好?来扒一扒不同种类的美容仪
利用OPC实现VC应用程序与PLC的数据交换
E5061B网络分析仪1.5GHz
光伏控制器的使用
学习计算机组成原理与单片机原理
fpga是什么
中科驭数正式加入openEuler欧拉开源社区
13种功率半导体器件介绍
台积电扩大与大陆集成电路产业化基地和技术中心合作
极低功耗的物联网唤醒芯片
赛灵思FPGA DIY系列(5):中频全数字频谱分析仪的实现
小米预热 RedmiBook Pro:祖传模具,正式退役
电子芯闻早报:诺基亚推OZO,HTC发力虚拟现实
Lexar雷克沙全新1066x microSD存储卡 高质感4K Vlog即刻创作
OpenStack硬件管理加速利器详解
PLC使用及接线注意事项
MAXQ处理器的串口转JTAG接口板
冰箱温度调节怎么调节?冰箱温控器接线图
节能LED显示屏是如何设计的
区块链存在的价值是什么