问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

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

创作时间:
作者:
@小白创作中心

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

引用
CSDN
1.
https://blog.csdn.net/v_o_i_l_a/article/details/145588612

FPGA(Field Programmable Gate Array,现场可编程门阵列)是一种在专用集成电路(ASIC)领域中发展起来的半定制电路。它结合了定制电路的灵活性和原有可编程器件的门电路数量优势,通过可编程逻辑块(PLBs/CLBs)和可配置互连线实现高效、低功耗的特性。

1. 不同类型的PLD

在深入了解FPGA之前,我们先介绍一个更广泛的概念——可编程逻辑器件(PLD)。PLD是一种包含大量逻辑门和触发器的集成电路,用户可以通过编程来配置其功能。

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

  • 可编程逻辑阵列(PLA):由可编程互连的AND门平面和OR门平面组成,每个输入可以连接到任何一个与门,然后来自不同与门的输出可以进一步连接到或门以构成更复杂的逻辑。

  • 可编程阵列逻辑(PAL):只有与门是可编程的,而或门平面在制造过程中是固定的,这种设计消除了与可编程或门相关的时间延迟。

  • 通用阵列逻辑(GAL):与PAL类似,但使用EEPROM而不是PROM,因此可以重新编程。

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

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

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

FPGA与CPLD的主要区别在于它们的组合逻辑形成模式不同。CPLD是基于基本门电路形成的,而FPGA是基于查找表(LUT)形成的。FPGA比CPLD还要复杂,它由可编程逻辑单元CLB、可编程互联和可编程IO块组成。

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

2. FPGA的组成

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

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

2.1 Configurable/Programmable Logic Blocks

CLB是FPGA的基本组件,它同时提供逻辑(基于LUT)和存储(基于FF)功能。Xilinx和Altera都使用基于查找表的逻辑模块来实现逻辑和存储功能。

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

查找表的设计原理

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

具有n个输入的LUT由2^n个配置位(由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原型设计:作为原型验证。
  • 数据中心:高带宽、低延迟。
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号