FPGA简介|结构、组成和应用

发布于:2025-02-13 ⋅ 阅读:(6) ⋅ 点赞:(0)

  Field Programmable Gate Arrays(FPGA,现场可编程逻辑门阵列),是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物, 是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路灵活性的不足,又克服了原有可编程器件门电路数有限的缺点。

参考文章
Ⅰ electronicshub
Ⅱ IBM

  为了实现可编程,FPGA通常包括可编程逻辑块(Programmable Logic Blocks,PLBs)/(Configurable Logic Blocks,CLBs) 和逻辑块之间的可配置互连线组成。相比于单片机、CPU等集成电路芯片具有效率高、功耗低的特点,同时相较于ASIC具有更短的开发周期与开发难度,但成本较高、且在资源的利用率上远不及ASIC

1.不同类型的PLD

  在进一步深入了解FPGA之前,我们先引入这样一个概念——Programmable Logic Devices(PLD),他是一个更高层面的概念,指包含大量逻辑门触发器的集成电路,用户可以对其进行配置以实现各种功能

  最简单的可编程逻辑设备通常由一系列的与门或门组成,这些门的逻辑及其互连可以通过编程配置。基本上,PLD可以分为三种类型:

1.1 简单可编程逻辑器件(SPLD)

1.1.1 可编程逻辑阵列(PLA)

  PLA由一个可编程互连的AND门平面一个可编程互连的OR门平面组成,通过连接水平和垂直互连线,每个输入可以连接到任何一个与门,然后来自不同与门的输出可以进一步连接到或门以构成更复杂的逻辑

在这里插入图片描述

1.1.2 可编程阵列逻辑(PAL)

  在PAL中,只有与门是可编程的,而或门平面在在制造过程中是固定的,其灵活性不如PLA,但他们消除了与可编程或门相关的时间延迟

在这里插入图片描述

1.1.3 通用数组逻辑(GAL)

  在组成上GAL与PAL类似,区别在于其可编程结构,PAL使用PROM,它是一次性可编程的,而GAL使用EEPROM可以重新编程

1.2 复杂可编程逻辑器件(CPLD)

  CPLD是在SPLD器件基础上开发的,它由多个Logic Block组成,其内部由PAL或PLA以及Macrocell组成,用于创建更大、更复杂的设计

在这里插入图片描述

1.3 现场可编程门阵列(FPGA)

  FPGA与CPLD的区别主要在于他们的组合逻辑形成模式不同,CPLD是基于基本门电路形成的,而FPGA是基于查找表(LUT——RAM、MUX)形成的

  FPGA比CPLD还要复杂,它由可编程逻辑单元CLB可编程互联可编程IO块组成

在这里插入图片描述

  FPGA可以通过指定每个CLB的逻辑功能,并设置每个可编程逻辑开关的连接来实现任何自定义设计,由于设计定制电路的过程是在现场而不是在晶圆厂完成的,因此该器件被称为“现场可编程”

在这里插入图片描述

2.FPGA的组成

  通常,FPGA由三个基本组件组成:

  • 可编程逻辑单元(CLBs)——负责实现核心逻辑功能
  • 可配置互连线——负责连接逻辑块
  • IO块——通过布线连接到CLB,有助于建立外部连接

在这里插入图片描述

2.1 Configurable/Programmable Logic Blocks

  CLB是FPGA的基本组件,它同时提供 逻辑(基于LUT)存储(基于FF) 功能,基本逻辑块可以是晶体管、NAND门、多路选择器、查找表、类似PAL的结构甚至处理器等任何东西,Xilinx和Altera都使用基于查找表的逻辑模块来实现逻辑和存储功能

  单个CLB模块的内部结构大致如下图所示,方框中的部分即为一个四输出的查找表单元

在这里插入图片描述

查找表的设计原理
  对于下图中真值表对应的控制逻辑,如果用查找表实现的话,可以先设计4bit的RAM,RAM中存储的数据对应为真值表中的逻辑结果,然后分别用信号A和B控制双路选择器,输出结果为Y,这就是一个简单的二输入查找表

在这里插入图片描述

  具有n个输入的LUT由 2 n 2^n 2n个配置位(由SRAM单元实现),使用这些SRAM Bits,LUT可以配置为实现任何逻辑功能

2.2 Configurable interconnects

  如果说逻辑功能由CLB提供,则可编程布线则负责将这些CLB互联,它提供了一个逻辑块与另一个逻辑块之间以及逻辑块和IO块之间的互连,以完全实现自定义电路

  基本上,布线网络由可编程开关的连接线组成,可以使用任何编程技术进行配置,基本上有两种类型的互连体系结构,他们是:

  • 网格布线
    在网格布线架构中,逻辑模块以二维阵列排列,并使用可编程布线网络互连,这种布线方式广泛应用于商业FPGA中

在这里插入图片描述

  • 分层路由
    分层路由架构将逻辑块分成几个组或集群。如果逻辑块位于同一集群中,则分层路由会在较低层次上将它们连接起来,如果逻辑块在不同的集群中,则布线是在更高层次进行的

在这里插入图片描述

  • 片上存储器
      最早的FPGA仅使用FF将内存集成到逻辑块内部,然而随着FPGA功能的增加,越来越复杂的设计需要专用的片上存储器来缓冲和重用数据,现代FPGA综合使用大型SRAM存储器阵列,较小的查找表和传统的FF元件来提供存储

  • DSP:
      在早期的FPGA中,唯一可用的算术资源就是简单的加法器,任何更复杂的逻辑都是由更原始的CLB模块构成的,随着硅技术的进步,更加复杂的算术资源被整合到FPGA中,最终形成了现代的FPGA DSP模块,DSP模块为实现高性能计算提供了高度优化的资源从而避免在CLB中实现这些功能的复杂性

3.FPGA编程技术

  FPGA中可编程开关主要利用以下三种方法实现:

  • SRAM

  SRAM使用晶体管设计,静态(S,Static)意味着SRAM存储单元上加载的值将保持不变,直到故意更改或移除电源,下图显示了一个典型的六晶体管的SRAM单元,用于存储1位二进制数据

在这里插入图片描述

  基于SRAM对逻辑单元和互连进行编程,有着低动态功耗、高速和易于集成的优点(得益于CMOS结构)

在这里插入图片描述

  • EEPROM/闪存

  主要优点是其非易失性,但是尽管flash支持可重新编程,与SRAM技术相比,其可重写次数有限

  • 防熔断剂

  防熔丝编程技术是生产一次性可编程器件的技术,他们是使用antifuse的链路实现的,该链路在未编程状态下具有非常高的电阻,可以被视为开

  编程时,向输入端提供高电压和电流,因此,最初以连接两条金属轨道的非晶硅形式形成的反熔丝,通过转化为导电多晶硅而焕发生机

在这里插入图片描述

  与其他两种技术相比,反熔丝技术占用的空间最小,但只能作为一次性可编程选项

4.FPGA应用

FPGA基本设计流程
利用硬件描述语言进行编程设计–>EDA 工具编译、综合、布局布线–>转换为可烧录的文件–>最终加载到FPGA器件中,改变FPGA内部的连线–>完成所实现的功能

在这里插入图片描述

  • 雷达应用:FPGA因其高速、并行处理能力而受到信号处理和数据采集的青睐
  • 无人机(UAV):高速信号处理算法使FPGA非常适合执行无人机中的飞行控制、传感器处理和通信任务
  • 工业控制系统(ICS):用于实现各种自动化和基于硬件的加密功能,以实现高效的网络安全
  • ASIC原型设计:作为原型验证
  • 数据中心:高带宽、低延迟