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&…...
C++中string流知识详解和示例
一、概览与类体系 C 提供三种基于内存字符串的流,定义在 <sstream> 中: std::istringstream:输入流,从已有字符串中读取并解析。std::ostringstream:输出流,向内部缓冲区写入内容,最终取…...
leetcodeSQL解题:3564. 季节性销售分析
leetcodeSQL解题:3564. 季节性销售分析 题目: 表:sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...
全志A40i android7.1 调试信息打印串口由uart0改为uart3
一,概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本:2014.07; Kernel版本:Linux-3.10; 二,Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01),并让boo…...
Element Plus 表单(el-form)中关于正整数输入的校验规则
目录 1 单个正整数输入1.1 模板1.2 校验规则 2 两个正整数输入(联动)2.1 模板2.2 校验规则2.3 CSS 1 单个正整数输入 1.1 模板 <el-formref"formRef":model"formData":rules"formRules"label-width"150px"…...
听写流程自动化实践,轻量级教育辅助
随着智能教育工具的发展,越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式,也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建,…...
Redis的发布订阅模式与专业的 MQ(如 Kafka, RabbitMQ)相比,优缺点是什么?适用于哪些场景?
Redis 的发布订阅(Pub/Sub)模式与专业的 MQ(Message Queue)如 Kafka、RabbitMQ 进行比较,核心的权衡点在于:简单与速度 vs. 可靠与功能。 下面我们详细展开对比。 Redis Pub/Sub 的核心特点 它是一个发后…...
AirSim/Cosys-AirSim 游戏开发(四)外部固定位置监控相机
这个博客介绍了如何通过 settings.json 文件添加一个无人机外的 固定位置监控相机,因为在使用过程中发现 Airsim 对外部监控相机的描述模糊,而 Cosys-Airsim 在官方文档中没有提供外部监控相机设置,最后在源码示例中找到了,所以感…...
RSS 2025|从说明书学习复杂机器人操作任务:NUS邵林团队提出全新机器人装配技能学习框架Manual2Skill
视觉语言模型(Vision-Language Models, VLMs),为真实环境中的机器人操作任务提供了极具潜力的解决方案。 尽管 VLMs 取得了显著进展,机器人仍难以胜任复杂的长时程任务(如家具装配),主要受限于人…...
MacOS下Homebrew国内镜像加速指南(2025最新国内镜像加速)
macos brew国内镜像加速方法 brew install 加速formula.jws.json下载慢加速 🍺 最新版brew安装慢到怀疑人生?别怕,教你轻松起飞! 最近Homebrew更新至最新版,每次执行 brew 命令时都会自动从官方地址 https://formulae.…...
脑机新手指南(七):OpenBCI_GUI:从环境搭建到数据可视化(上)
一、OpenBCI_GUI 项目概述 (一)项目背景与目标 OpenBCI 是一个开源的脑电信号采集硬件平台,其配套的 OpenBCI_GUI 则是专为该硬件设计的图形化界面工具。对于研究人员、开发者和学生而言,首次接触 OpenBCI 设备时,往…...

