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&…...
RestClient
什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端,它允许HTTP与Elasticsearch 集群通信,而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级ÿ…...

Chapter03-Authentication vulnerabilities
文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...

label-studio的使用教程(导入本地路径)
文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...

【力扣数据库知识手册笔记】索引
索引 索引的优缺点 优点1. 通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度(创建索引的主要原因)。3. 可以加速表和表之间的连接,实现数据的参考完整性。4. 可以在查询过程中,…...
MySQL用户和授权
开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务: test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...

优选算法第十二讲:队列 + 宽搜 优先级队列
优选算法第十二讲:队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...
LangChain知识库管理后端接口:数据库操作详解—— 构建本地知识库系统的基础《二》
这段 Python 代码是一个完整的 知识库数据库操作模块,用于对本地知识库系统中的知识库进行增删改查(CRUD)操作。它基于 SQLAlchemy ORM 框架 和一个自定义的装饰器 with_session 实现数据库会话管理。 📘 一、整体功能概述 该模块…...
虚拟电厂发展三大趋势:市场化、技术主导、车网互联
市场化:从政策驱动到多元盈利 政策全面赋能 2025年4月,国家发改委、能源局发布《关于加快推进虚拟电厂发展的指导意见》,首次明确虚拟电厂为“独立市场主体”,提出硬性目标:2027年全国调节能力≥2000万千瓦࿰…...

Git 3天2K星标:Datawhale 的 Happy-LLM 项目介绍(附教程)
引言 在人工智能飞速发展的今天,大语言模型(Large Language Models, LLMs)已成为技术领域的焦点。从智能写作到代码生成,LLM 的应用场景不断扩展,深刻改变了我们的工作和生活方式。然而,理解这些模型的内部…...
SpringAI实战:ChatModel智能对话全解
一、引言:Spring AI 与 Chat Model 的核心价值 🚀 在 Java 生态中集成大模型能力,Spring AI 提供了高效的解决方案 🤖。其中 Chat Model 作为核心交互组件,通过标准化接口简化了与大语言模型(LLM࿰…...