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

  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原型设计:作为原型验证
  • 数据中心:高带宽、低延迟

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/972101.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【机器学习】超参数调优指南:交叉验证,网格搜索,混淆矩阵——基于鸢尾花与数字识别案例的深度解析

一、前言:为何要学交叉验证与网格搜索? 大家好!在机器学习的道路上,我们经常面临一个难题:模型调参。比如在 KNN 算法中,选择多少个邻居(n_neighbors)直接影响预测效果。 • 蛮力猜…

UGUI RectTransform的SizeDelta属性

根据已知内容,SizeDelta offsetMax - offsetMin 1.锚点聚拢情况下 输出 那么此时SizeDelta就是UI元素的长宽大小 2. 锚点分散时 引用自此篇文章中的描述 揭秘!anchoredPosition的几何意义! SizeDelta offsetMax - offsetMin (rectMax…

51单片机入门_10_数码管动态显示(数字的使用;简单动态显示;指定值的数码管动态显示)

接上篇的数码管静态显示,以下是接上篇介绍到的动态显示的原理。 动态显示的特点是将所有位数码管的段选线并联在一起,由位选线控制是哪一位数码管有效。选亮数码管采用动态扫描显示。所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选&#xff…

mybatis使用typeHandler实现类型转换

使用mybatis作为操作数据库的orm框架,操作基本数据类型时可以通过内置的类型处理器完成java数据类型和数据库类型的转换,但是对于扩展的数据类型要实现与数据库类型的转换就需要自定义类型转换器完成,比如某个实体类型存储到数据库&#xff0…

瑞萨RA-T系列芯片ADCGPT功能模块的配合使用

在马达或电源工程中,往往需要采集多路AD信号,且这些信号的优先级和采样时机不相同。本篇介绍在使用RA-T系列芯片建立马达或电源工程时,如何根据需求来设置主要功能模块ADC&GPT,包括采样通道打包和分组,GPT触发启动…

最新智能优化算法:牛优化( Ox Optimizer,OX)算法求解经典23个函数测试集,MATLAB代码

一、牛优化算法 牛优化( OX Optimizer,OX)算法由 AhmadK.AlHwaitat 与 andHussamN.Fakhouri于2024年提出,该算法的设计灵感来源于公牛的行为特性。公牛以其巨大的力量而闻名,能够承载沉重的负担并进行远距离运输。这种…

【linux】在 Linux 服务器上部署 DeepSeek-r1:70b 并通过 Windows 远程可视化使用

【linux】在 Linux 服务器上部署 DeepSeek-r1:70b 并通过 Windows 远程可视化使用 文章目录 【linux】在 Linux 服务器上部署 DeepSeek-r1:70b 并通过 Windows 远程可视化使用个人配置详情一、安装ollama二、下载deepseek版本模型三、在 Linux 服务器上配置 Ollama 以允许远程访…

【Linux网络编程】应用层协议HTTP(请求方法,状态码,重定向,cookie,session)

🎁个人主页:我们的五年 🔍系列专栏:Linux网络编程 🌷追光的人,终会万丈光芒 🎉欢迎大家点赞👍评论📝收藏⭐文章 ​ Linux网络编程笔记: https://blog.cs…

Chrome多开终极形态解锁!「窗口管理工具+IP隔离插件

Web3项目多开,继ads指纹浏览器钱包被盗后,更多人采用原生chrome浏览器,当然对于新手,指纹浏览器每月成本也是一笔不小开支,今天逛Github发现了这样一个解决方案,作者开发了窗口管理工具IP隔离插件&#xff…

Canal同步MySQL增量数据

引言 在现在的系统开发中,为了提高查询效率 , 以及搜索的精准度, 会大量的使用 redis 、memcache 等 nosql 系统的数据库 , 以及 solr 、 elasticsearch 类似的全文检索服务。 那么这个时候, 就又有一个问题需要我们来考虑, 就是数据同步的问题, 如何将实时变化的…

MacOS 15.3 卸载系统内置软件

1、关闭系统完整性(SIP) 进入恢复模式(recovery) 如果您使用的是黑苹果或者白苹果,可以选择 重启按住CommandR 进入,如果是M系列芯片,长按开机键,进入硬盘选择界面进入。 我是MacMini M4芯片,关…

【核心算法篇七】《DeepSeek异常检测:孤立森林与AutoEncoder对比》

大家好,今天我们来深入探讨一下《DeepSeek异常检测:孤立森林与AutoEncoder对比》这篇技术博客。我们将从核心内容、原理、应用场景等多个方面进行详细解析,力求让大家对这两种异常检测方法有一个全面而深入的理解。 一、引言 在数据科学和机器学习领域,异常检测(Anomaly…

Ubuntu24.04无脑安装docker(含图例)

centos系统请看这篇 Linux安装Docker教程(详解) 一. ubuntu更换软件源 请看这篇:Ubuntu24.04更新国内源 二. docker安装 卸载老版docker(可忽略) sudo apt-get remove docker docker-engine docker.io containerd runc更新软件库 sudo a…

thingboard告警信息格式美化

原始报警json内容: { "severity": "CRITICAL","acknowledged": false,"cleared": false,"assigneeId": null,"startTs": 1739801102349,"endTs": 1739801102349,"ackTs": 0,&quo…

✨2.快速了解HTML5的标签类型

✨✨HTML5 的标签类型丰富多样&#xff0c;每种类型都有其独特的功能和用途&#xff0c;以下是一些常见的 HTML5 标签类型介绍&#xff1a; &#x1f98b;结构标签 &#x1faad;<html>&#xff1a;它是 HTML 文档的根标签&#xff0c;所有其他标签都包含在这个标签内&am…

day12_调度和可视化

文章目录 day12_调度和可视化一、任务调度1、开启进程2、登入UI界面3、配置租户4、创建项目5、创建工作流5.1 HiveSQL部署&#xff08;掌握&#xff09;5.2 SparkDSL部署&#xff08;掌握&#xff09;5.3 SparkSQL部署&#xff08;熟悉&#xff09;5.4 SeaTunnel部署&#xff0…

使用nvm管理node.js版本,方便vue2,vue3开发

在Vue项目开发过程中&#xff0c;我们常常会遇到同时维护Vue2和Vue3项目的情况。由于不同版本的Vue对Node.js 版本的要求有所差异&#xff0c;这就使得Node.js 版本管理成为了一个关键问题。NVM&#xff08;Node Version Manager&#xff09;作为一款强大的Node.js 版本管理工具…

Java8适配的markdown转换html工具(FlexMark)

坐标地址&#xff1a; <dependency><groupId>com.vladsch.flexmark</groupId><artifactId>flexmark-all</artifactId><version>0.60.0</version> </dependency> 工具类代码&#xff1a; import com.vladsch.flexmark.ext.tab…

Qt开发①Qt的概念+发展+优点+应用+使用

目录 1. Qt的概念和发展 1.1 Qt的概念 1.2 Qt 的发展史&#xff1a; 1.3 Qt 的版本 2. Qt 的优点和应用 2.1 Qt 的优点&#xff1a; 2.2 Qt 的应用场景 2.3 Qt 的应用案例 3. 搭建 Qt 开发环境 3.1 Qt 的开发工具 3.2 Qt SDK 的下载和安装 3.3 Qt 环境变量配置和使…

vscode插件开发

准备 安装开发依赖 npm install -g yo generator-code 安装后&#xff0c;运行命令 yo code 运行 打开项目&#xff0c; 点击 vscode 调式 按 F5 或点击调试运行按钮 会打开一个新窗口&#xff0c;在新窗口按快捷键 CtrlShiftP &#xff0c;搜索 Hello World 选择执行 右下角出…