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原型设计:作为原型验证
- 数据中心:高带宽、低延迟
相关文章:
FPGA简介|结构、组成和应用
Field Programmable Gate Arrays(FPGA,现场可编程逻辑门阵列),是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物, 是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,…...
[c语言日寄]在不完全递增序中查找特定要素
【作者主页】siy2333 【专栏介绍】⌈c语言日寄⌋:这是一个专注于C语言刷题的专栏,精选题目,搭配详细题解、拓展算法。从基础语法到复杂算法,题目涉及的知识点全面覆盖,助力你系统提升。无论你是初学者,还是…...
Golang的多团队协作编程模式与实践经验
Golang的多团队协作编程模式与实践经验 一、多团队协作编程模式概述 在软件开发领域,多团队协作编程是一种常见的工作模式。特别是对于大型项目来说,不同团队间需要协同合作,共同完成复杂的任务。Golang作为一种高效、并发性强的编程语言&…...
cv2.Sobel
1. Sobel 算子简介 Sobel 算子是一种 边缘检测算子,通过对图像做梯度计算,可以突出边缘。 Sobel X 方向卷积核: 用于计算 水平方向(x 方向) 的梯度。 2. 输入图像示例 假设我们有一个 55 的灰度图像,像素…...
Windows软件自动化利器:pywinauto python
Pywinauto WindowsAPP UI自动化 Windows软件自动化利器:pywinauto python...
关于 IoT DC3 中驱动(Driver)的理解
在开源IoT DC3物联网系统中,驱动(Driver)扮演着至关重要的角色,它充当了软件系统与物理设备之间的桥梁。驱动的主要功能是依据特定的通信协议连接到设备,并根据设备模板中配置的位号信息进行数据采集和指令控制。不同的…...
LogicFlow自定义节点:矩形、HTML(vue3)
效果: LogicFlow 内部是基于MVVM模式进行开发的,分别使用preact和mobx来处理 view 和 model,所以当我们自定义节点的时候,需要为这个节点定义view和model。 参考官方文档:节点 | LogicFlow 1、自定义矩形节点 custo…...
多模态本地部署ConVideoX-5B模型文生视频
文章目录 一、多模态概念1.多模态学习2. 人机交互3. 健康医疗4. 内容创作和娱乐 二、模型介绍三、环境安装1. 安装工具包2. 模型下载 四、运行代码五、代码解析六、效果生成七. 总结1. 模型介绍2. 部署环境3. 部署步骤4. 生成视频5. 应用场景 一、多模态概念 多模态࿰…...
html 点击弹出视频弹窗
一、效果: 点击视频按钮后,弹出弹窗 播放视频 二、代码 <div class="index_change_video" data-video-src="</...
业务干挂数据库,Oracle内存分配不足
📢📢📢📣📣📣 作者:IT邦德 中国DBA联盟(ACDU)成员,10余年DBA工作经验 Oracle、PostgreSQL ACE CSDN博客专家及B站知名UP主,全网粉丝10万 擅长主流Oracle、MySQL、PG、高斯…...
MongoDB 7 分片副本集升级方案详解(下)
#作者:任少近 文章目录 1.4 分片升级1.5 升级shard11.6 升级shard2,shard31.7 升级mongos1.8重新启用负载均衡器1.9 推荐MongoDB Compass来验证数据 2 注意事项: 1.4 分片升级 使用“滚动”升级从 MongoDB 7.0 升级到 8.0,即在其他成员可用…...
Webpack相关优化总结
在使用webpack时提供了各种配置,这里结合在业务中常用的配置汇总一下可以进行的一系列的webpack优化 缩小文件搜索范围 其原理是在构建时,会以用户配置的Entry为开始依次递归遍历每个Module,在遍历每个Module时会调用相应合适的Loader对原模…...
ollama实践笔记
目录 一、linux安装文件命令: 二、启动ollama 三、linux 如何把ollama serve做为服务方式启动 四、安装deepseek-r1 五、如何在网页中使用ollama? 5.1 安装Open WebUI【不推荐】 5.2 安装ollama-webui-lite 六、Ubuntu安装docker、只需要一句话…...
springCloud-2021.0.9 之 服务调服务 示例
文章目录 前言springCloud-2021.0.9 之 服务调服务 示例1. 主要用到的组件2. 效果3. 源码3.1. 服务A3.2. 服务B接受接口 前言 如果您觉得有用的话,记得给博主点个赞,评论,收藏一键三连啊,写作不易啊^ _ ^。 而且听说点赞的人每…...
如何使用DHTMLX Scheduler的拖放功能,在 JS 日程安排日历中创建一组相同的事件
DHTMLX Scheduler 是一个全面的调度解决方案,涵盖了与规划事件相关的广泛需求。假设您在我们的 Scheduler 文档中找不到任何功能,并且希望在我们的 Scheduler 文档中看到您的项目。在这种情况下,很可能可以使用自定义解决方案来实现此类功能。…...
QxOrm生成json
下载Qxorm-1.5版本 使用vs打开项目,直接生成即可: lib目录中会生成dll和lib文件 新建Qt项目使用Qxorm: 将QxOrm中上面三个目录拷贝到新建的Qt项目中 pro文件添加使用QxOrm第三方库 INCLUDEPATH $$PWD/include/ LIBS -L"$$PWD/lib" LIBS…...
XS9922B(CHIPUP) 模拟高清 寄存器手册 XS9922B 四通道 多合一模拟高清解码芯片
XS9922B 是一款 4 通道模拟复合视频解码芯片,支持 HDCCTV 高清协议和 CVBS 标 清协议,视频制式支持 720P/1080P 高清制式和 960H/D1 标清制式。芯片将接收到的高清 模拟复合视频信号经过模数转化,视频解码以及 2D 图像处理之后…...
Django创建超管用户
在 Django 中创建超级用户(superuser)可以通过命令行工具 createsuperuser 完成。以下是具体步骤: 1. 确保已进行数据库迁移 在创建超级用户前,确保已执行数据库迁移: python manage.py migrate 2. 创建超级用户 …...
基于Kotlin中Flow扩展重试方法
最近项目中统一采用Kotlin的Flow来重构了网络请求相关代码。 目前的场景是,接口在请求的时候需要一个accessToken值,因为此值会过期或者不存在,需要刷新,因此最终方案是在使用Flow请求的时候先获取accessToken值然后再进行接口请求…...
好好说话:深度学习扫盲
大创项目是和目标检测算法YOLO相关的,浅浅了解了一些有关深度学习的知识。在这里根据本人的理解做一些梳理。 深度学习是什么? 之前经常听到AI,机器学习,深度学习这三个概念,但是对于三者的区别一直很模糊。 AI&…...
多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度
一、引言:多云环境的技术复杂性本质 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时,基础设施的技术债呈现指数级积累。网络连接、身份认证、成本管理这三大核心挑战相互嵌套:跨云网络构建数据…...
设计模式和设计原则回顾
设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...
React hook之useRef
React useRef 详解 useRef 是 React 提供的一个 Hook,用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途,下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...
C++ 基础特性深度解析
目录 引言 一、命名空间(namespace) C 中的命名空间 与 C 语言的对比 二、缺省参数 C 中的缺省参数 与 C 语言的对比 三、引用(reference) C 中的引用 与 C 语言的对比 四、inline(内联函数…...
在Ubuntu中设置开机自动运行(sudo)指令的指南
在Ubuntu系统中,有时需要在系统启动时自动执行某些命令,特别是需要 sudo权限的指令。为了实现这一功能,可以使用多种方法,包括编写Systemd服务、配置 rc.local文件或使用 cron任务计划。本文将详细介绍这些方法,并提供…...
DBAPI如何优雅的获取单条数据
API如何优雅的获取单条数据 案例一 对于查询类API,查询的是单条数据,比如根据主键ID查询用户信息,sql如下: select id, name, age from user where id #{id}API默认返回的数据格式是多条的,如下: {&qu…...
涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战
“🤖手搓TuyaAI语音指令 😍秒变表情包大师,让萌系Otto机器人🔥玩出智能新花样!开整!” 🤖 Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制(TuyaAI…...
USB Over IP专用硬件的5个特点
USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中,从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备(如专用硬件设备),从而消除了直接物理连接的需要。USB over IP的…...
安宝特案例丨Vuzix AR智能眼镜集成专业软件,助力卢森堡医院药房转型,赢得辉瑞创新奖
在Vuzix M400 AR智能眼镜的助力下,卢森堡罗伯特舒曼医院(the Robert Schuman Hospitals, HRS)凭借在无菌制剂生产流程中引入增强现实技术(AR)创新项目,荣获了2024年6月7日由卢森堡医院药剂师协会࿰…...
毫米波雷达基础理论(3D+4D)
3D、4D毫米波雷达基础知识及厂商选型 PreView : https://mp.weixin.qq.com/s/bQkju4r6med7I3TBGJI_bQ 1. FMCW毫米波雷达基础知识 主要参考博文: 一文入门汽车毫米波雷达基本原理 :https://mp.weixin.qq.com/s/_EN7A5lKcz2Eh8dLnjE19w 毫米波雷达基础…...

