FPGA工作原理、架构及底层资源

FPGA工作原理、架构及底层资源


文章目录
  • FPGA工作原理、架构及底层资源
  • 前言
  • 一、FPGA工作原理
  • 二、FPGA架构及底层资源
    • 1.FPGA架构
    • 2.FPGA底层资源
      • 2.1可编程输入/输出单元简称(IOB)
      • 2.2可配置逻辑块
      • 2.3丰富的布线资源
      • 2.4数字时钟管理模块(DCM)
      • 2.5嵌入式块 RAM(BRAM)
      • 2.6底层内嵌功能单元(soft core,软核,区别于软IP核)
      • 2.7内嵌专用硬核(hard core,硬核,区别于硬IP核)
  • 相关知识快速通道

前言

随着数字电路设计和嵌入式系统应用的不断发展,FPGA(Field-Programmable Gate Array)作为一种灵活、可重构的可编程逻辑器件,受到了越来越广泛的关注和应用。本篇博客将探讨FPGA的原理、架构及底层资源,旨在为读者深入了解FPGA提供全面的专业知识。


一、FPGA工作原理

FPGA的原理基于可编程逻辑块和可编程互连网络。逻辑块是FPGA的基本组成单元,通常由查找表(Look-up Table,LUT)和寄存器组成。查找表是FPGA的关键组件之一,它是一种存储逻辑功能的表格结构,可以实现2输入至6输入的逻辑运算。随着技术的发展和FPGA的进化,FPGA芯片中的逻辑块和查找表的规模不断增加,以满足更复杂的逻辑功能和应用需求。较高输入数量的查找表能够支持更多复杂的逻辑运算,提供更大的灵活性和性能优化。通过编程或配置查找表的值,可以改变逻辑功能的实现。寄存器用于存储状态或临时计算结果,在时钟信号的控制下进行数据的存储和传输。

FPGA的可编程互连网络负责将逻辑块连接在一起以形成所需的电路拓扑。它由全局连线和局部连线两部分组成。全局连线是一组专用的高速互联通道,用于实现逻辑块之间的远距离连接,例如跨时钟域的连接。局部连线则是邻近的逻辑块之间的连线,用于实现邻近互连关系。FPGA的互连网络可通过编程开关(Programmable Switch)的控制以实现连线的通断,使得逻辑块之间的连接变得灵活可变。

深入浅出的理解:如果把FPGA理解为一块电路板,作为设计师就是要去利用这块电路板去通过选用器件和选通布线的方式设计自己要用的电路。这个板子上有很多器件,且各种类器件的位置已经固定,器件之间存在丰富的布线资源,器件和布线都是可以通过编程决定是否选用。设计的过程就是根据功能选用不同的器件,再选通设计中的布线。最后形成目标电路。

二、FPGA架构及底层资源

1.FPGA架构

FPGA架构及底层资源
目前主流的FPGA仍以查找表技术为基础,主要由六部分组成:可编程输入输出单元(IOB)、可编程逻辑单元(CLB)、完整的时钟管理(DCM)、嵌入块状RAM(BRAM)、布线资源、内嵌的底层功能单元(soft core,软核,区别于软IP核)和内嵌专用硬件模块(hard core,硬核,区别于硬IP核)。其中最为主要的是可编程输出输出单元、可编程逻辑单元和布线资源。
IP核一般分为软IP核,硬IP核和固IP核。和上述的软硬核并不是同一个定义范畴。软核(soft core)和硬核(hard core)是FPGA中的两种不同类型的处理器核心或其他复杂的数字逻辑功能的实现方式。

软核(soft core)通常是指通过FPGA中的逻辑资源进行编程实现的处理器核心或其他复杂的数字逻辑功能,它们的实现是通过FPGA内部的逻辑单元和存储单元来完成的。一个常见的软核是Xilinx(现在被AMD收购)的MicroBlaze,它是一款可在Xilinx FPGA中实现的32位RISC处理器核心,设计者可以根据自己的需求对其进行配置和定制,以满足特定的应用需求。另一个常见的软核是Altera(现在被Intel收购)的Nios II,也是一款可在FPGA中实现的可编程处理器核心。

硬核(hard core)则是指在FPGA芯片的物理结构中以硬件形式实现的处理器核心或其他专用的硬件模块。这种硬件功能通常由FPGA芯片的制造厂商直接设计和实现,并在FPGA芯片中进行硬件布局,与FPGA中的逻辑资源分离。举例来说,一些FPGA芯片可能内置了ARM处理器的硬核,这些ARM处理器核心是作为FPGA芯片的一部分直接集成在硅片中,用户可以直接利用这些处理器核心来实现特定的处理器功能,而不需要通过FPGA的逻辑资源来实现。

因此,软核和硬核代表了FPGA中实现处理器核心或其他复杂逻辑功能的两种不同方式,软核通过FPGA中的逻辑资源进行编程实现,而硬核则是直接作为FPGA硅片的一部分实现的,两者各有优劣,选择取决于具体的应用需求和设计考虑。`

2.FPGA底层资源

2.1可编程输入/输出单元简称(IOB)

可编程输入/输出单元简称I/O单元,是芯片与外界电路的接口部分,用于完成不同电气特性下对输入/输出信号的驱动与匹配要求,其示意结构如图1-2所示。FPGA内的I/O按组分类,每组都能够独立地支持不同的 I/O标准。通过软件的灵活配置,可适配不同的电气标准与I/O物理特性,可以调整驱动电流的大小,可以改变上下拉电阻。目前,I/O口的频率越来越高,一些高端的 FPGA通过 DDR寄存器技术可以支持高达多个Gb/s的数据速率。

外部输入信号可以通过IOB模块的存储单元输入到 FPGA的内部也可以直接输入FPGA内部。当外部输入信号经过IOB模块的存储单元输人到FPGA内部时,其保持时间(Hold Time)的要求可以降低,通常默认为0。

为了便于管理和适应多种电气标准,FPGA的IOB被划分为若干个组(bank),每个bank的接口标准由其接口电压Vcco决定,一个bank 只能有一种 Vcco,但不同 bank的 Vcco可以不同。只有相同电气标准的端口才能连接在一起,Vcco相同是接口标准的基本条件。
在这里插入图片描述
关于IOB需要注意:
IOB的结构如上,PAD即与外界连接焊盘引脚,同时有一个IBUF和OBUF。当配置为output时,连接左边的OBUF,配置为input时,连接右边的IBUF。在FPGA中,每一个IOB都有与之对应的一个xIOI3模块(有LIOI3和RIOI3之分,由三个触发器Flip-Flop组成,TFF,OFF和IFF),且其布线资源比较固定,使用xIOI3中的触发器有一个较大的好处,就是其布线资源固定,且最靠近各个引脚,可以实现较低的延迟,在某些特定的场合如高速数据采样下,使用xIOI3可以实现良好的采样效果。如果不使用IOB的触发器而连接普通的Slice内部寄存器,则信号进入第一级寄存器的布线会因为每次综合结果的不同而各有不同,且由于Slice距离接口较远,有可能导致高速信号的采样不正确,不满足时序要求。

	 一般情况下IOB的寄存器缺省为OFF,如果需要设置接口的寄存器,可以通过下列约束实现:set_property IOB TRUE {get_ports your_port_name}如果需要取消接口的寄存器,可以通过下列约束实现:set_property IOB FALSE {get_ports your_port_name}
2.2可配置逻辑块

可配置逻辑块CLB(Configure Logic Block)是实现组合逻辑和时序逻辑的主要资源,由一对Slice(片单元)组成,每一个CLB都是连接到了一个交换矩阵(Switch Matrix)中。
每个Slice资源包含4个6输入的LUT,8个FF以及MUX和Carry。Slice又可分为SliceL和SliceM两种类型,在7系列器件中,大约2/3的Slice为SliceL,其余为SliceM,两者区别是SliceM可配置为分布式RAM(Distribute RAM)和移位寄存器,SliceL则不行。

每个CLB都包含一对Slice,这对Slice可能都是SliceL或是一个SliceL和一个SliceM。属于一个CLB中的SliecL和SliceM是独立的,无相互连接的线路,只有属于同一列的Slice之间才会通过进位链进行连接。每个Slice有一个坐标XcYr,r为slice的列序号,c为行序号,同一个CLB的slice行序号是相同的。
在这里插入图片描述
在这里插入图片描述

2.3丰富的布线资源

FPGA芯片内部有丰富的布线资源,根据工艺、长度、宽度和分布位置的不同而划分为4类:

1.全局布线资源,用于芯片内部全局时钟和全局复位/置位的布线;

2.长线资源,用于完成芯片 bank 间的高速信号和第二全局时钟信号的布线;

3.短线资源,用于完成基本逻辑单元之间的逻辑互连和布线;

4.分布式的布线资源,用于专有时钟、复位等控制信号线。

在实际中,设计者不需要直接选择布线资源,布局布线器可自动地根据输入逻辑网表的拓扑结构和约束条件选择布线资源来连通各个模块单元。几乎遇不到需要手动去布局布线的情况。

2.4数字时钟管理模块(DCM)

用于生成和管理芯片内部的时钟信号,包括时钟分频、相位锁定和时钟多路复用等功能,确保设计中的时序要求得到满足。目前,业内大多数FPGA均提供数字时钟管理,在内部资源中通常整合为CMT(Clock Manage Tile,时钟管理模块),每个区域对应一个CMT,一个CMT由一个MMCM(Mix-mode Clock Manager)和1个PLL(Phase Locked Loop)组成。主要起到频率综合、去抖动和去偏斜的作用。

对于我们一般设计者来说,最常见的就是用DCM去产生FPGA设计中要用到的时钟。

2.5嵌入式块 RAM(BRAM)

1.架构和特性:

BRAM 是专门为 FPGA 设计而优化的存储资源。它是内置在 FPGA 中的硬件块,能够提供高速、低功耗和可配置的存储功能。
BRAM 通常由多个存储块组成,每个存储块都有一个比特宽度和一个数据深度。每个存储块由一个寄存器数组、读取端口和写入端口组成。
BRAM 可以被配置成单端口 RAM、双端口 RAM、内容寻址存储器(CAM)和 FIFO 等不同的存储结构,以适应各种应用需求。

2.容量和配置:

BRAM 的容量通常以位宽和深度来描述,例如 18Kbit 表示容量为 18 千比特,深度为 1024,常见的容量包括 18Kbit、36Kbit 等,不同型号的 FPGA 器件会提供不同大小和规格的 BRAM。
BRAM 的位宽决定了每个存储位置可以存储的二进制位数,而深度则确定了存储位置的数量。开发者可以根据需要调整 BRAM 的位宽和深度来满足存储需求。

3.用途和应用:

BRAM 在 FPGA 中有广泛的应用场景。它可以用于存储程序指令、缓存数据、实现状态机或 FIFO 缓冲区等。
BRAM 还可用于存储查找表(LUT)和存储器初始化值。对于存储器初始化值,可以在设计中使用 BRAM 以提高初始化数据的可读性和灵活性。

4.优势和注意事项:

BRAM 提供了低延迟和高带宽的存储能力,在许多应用中比分布式 RAM 更适合。
使用 BRAM 可以节省逻辑资源,因为 BRAM 在 FPGA 中是内置的,不占用额外的逻辑单元。
需要注意的是,使用 BRAM 需要合理规划存储容量,并注意时钟和数据控制信号的正确配置,以确保正确的数据存储和访问。

2.6底层内嵌功能单元(soft core,软核,区别于软IP核)

内嵌功能模块主要指 DLL(Delay Locked Loop)、PLL(Phase Locked Loop)、DSP和CPU 等软处理核(Embeded Processor)。正是由于集成了丰富的内嵌功能单元,从而使得单片 FPGA 成为系统级的设计工具,具备了软、硬件联合设计的能力,逐步向 SOC 平台过渡。

DLL和 PLL具有类似的功能,可以完成时钟高精度、低抖动的倍频和分频,以及占空比调整和移相等功能。Xilinx 公司生产的芯片上集成了 DLL,Altera 公司的芯片集成了PLL,Lattice 公司的新型芯片上同时集成了 PLL和DLL。PLL 和DLL可以通过IP 核生成的工具方便地进行管理和配置。

2.7内嵌专用硬核(hard core,硬核,区别于硬IP核)

FPGA 中的内嵌专用硬核是指在 FPGA 芯片中内置的、专门设计用来执行特定功能的硬件模块。这些专用硬核旨在提供特定的功能和性能,与可编程逻辑单元(PL)相比,它们通常具有更高的性能、更低的功耗和更低的时延。以下是对 FPGA 中常见的一些内嵌专用硬核的专业详细介绍:

内嵌处理器核(如 ARM Cortex 等):
FPGA 芯片中常常内置有各种处理器核,如 ARM Cortex-A 系列、Cortex-R 系列、Cortex-M 系列等,用于执行通用计算任务、操作系统运行等应用。
这些处理器核与 FPGA 可编程逻辑结合使用,为系统提供了灵活性和性能的双重优势,可以针对特定应用实现定制化的处理器系统。

数字信号处理器(DSP):FPGA 中通常集成了大量的 DSP 切片,用于高性能数字信号处理、滤波、运算等应用。每个 DSP 切片包含多个乘法器和累加器,可以并行地进行复杂的算术运算。DSP 切片在许多信号处理、通信和图像处理应用中发挥重要作用,可以加速各种数学运算和信号处理操作。

存储器控制器:FPGA 中的存储器控制器硬核用于驱动外部存储器接口,如 DDR SDRAM、QDR SRAM 等,以实现高速的数据读写操作。
存储器控制器硬核通常集成了复杂的时序控制逻辑和高速接口,能够与外部存储器设备进行高效的通信。

通信接口硬核(如 PCIe、Ethernet MAC 等):FPGA 中集成了各种通信接口硬核,如 PCIe 控制器、以太网 MAC 控制器等,用于实现与外部设备的高速数据交换和通信。这些通信接口硬核提供了标准化接口和协议实现,能够轻松地与其他设备进行互联和数据传输。例如,为了适用通信总线与接口标准,很多高端的FPGA内部都集成了串并收发器(SERDES),可以达到数十吉比特/秒的收发速度。

总的来说,FPGA 中的内嵌专用硬核提供了各种用途的硬件加速功能,能够为特定的应用场景提供高性能、低功耗和灵活配置的硬件加速解决方案。开发者可以通过合理地使用这些内嵌硬核,实现复杂的功能和系统,并优化系统性能。

行文仓促,如有错误,欢迎指出!


相关知识快速通道

点击下方链接,快速直达下列文章
《FPGA设计相关技能树》
持续更新ing,欢迎大家关注,一起进行技术探讨~

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【JVM】JVM基础教程(一)

目录 初识JVM JVM是什么? JVM的功能 解释、即时编译和运行 内存管理 常见的JVM JVM虚拟机规范 HotSpot的发展历程 JVM的组成 字节码文件详解 应用场景 以正确姿势打开字节码文件 ​编辑字节码文件的组成 基本信息 Magic魔数 主副版本号 常量池 接口…

无监督学习笔记 - A Cookbook of Self-Supervised Learning

无监督学习笔记 参考资料: 无监督学习Cookbook 几乎总结了所有的自监督学习方法,阅读过程中,根据参考文献索,进一步深入阅读每个方法具体得细节,掌握该论文,基本上就掌握了所有自监督学习的方法与基础。 统计学习方法…

Trimble X9三维激光扫描仪高效应对化工厂复杂管道扫描测绘挑战【沪敖3D】

化工安全关系到国计民生,近年来随着化工厂数字化改革不断推进,数字工厂逐步成为工厂安全管理的重要手段。而化工管道作为工厂设施的重要组成部分,由于其数量多、种类繁杂,一直是企业管理的重点和难点。 传统的化工管廊往往缺乏详…

synchronized的特性

1.互斥 对于synchronized修饰的方法及代码块不同线程想同时进行访问就会互斥。 就比如synchronized修饰代码块时,一个线程进入该代码块就会进行“加锁”。 退出代码块时会进行“解锁”。 当其他线程想要访问被加锁的代码块时,就会阻塞等待。 阻塞等待…

【vue3 for beginner】Pinia基本用法:存储user的信息

🌈Don’t worry , just coding! 内耗与overthinking只会削弱你的精力,虚度你的光阴,每天迈出一小步,回头时发现已经走了很远。 📗概念 Pinia 简介 Pinia 是一个用于 Vue.js 应用的状态管理库,是 Vuex 的…

动态规划(二) ---斐波那契型深度解析

一、使用最小花费爬楼梯 题目链接:746. 使用最小花费爬楼梯 - 力扣(LeetCode) 题目:给你一个整数数组 cost ,其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用。一旦你支付此费用,即可选择向上爬一…

记录一下,解决js内存溢出npm ERR! code ELIFECYCLEnpm ERR! errno 134 以及 errno 9009

项目是个老项目,依赖包也比较大,咱就按正常流程走一遍来详细解决这个问题,先看一下node版本,我用的是nvm管理的,详细可以看我的其他文章 友情提醒:如果项目比较老,包又大,又有一些需…

Luma 视频生成 API 对接说明

Luma 视频生成 API 对接说明 随着 AI 的应用变广,各类 AI 程序已逐渐普及。AI 已逐渐深入到人们的工作生活方方面面。而 AI 涉及的行业也越来越多,从最初的写作,到医疗教育,再到现在的视频。 Luma 是一个专业高质量的视频生成平…

三维扫描检测在汽车制造中的应用

三维扫描,通过先进三维扫描技术获取产品和物体的形面三维数据,建立实物的三维图档,满足各种实物3D模型数据获取、三维数字化展示、3D多媒体开发、三维数字化存档、逆向设计、产品开发、直接3D打印制造或辅助加工制造等一系列的应用。 三维扫描…

应用案例 | 船舶海洋: 水下无人航行器数字样机功能模型构建

水下无人航行器数字样机功能模型构建 一、项目背景 为响应水下装备系统研制数字化转型及装备系统数字样机建设的需要,以某型号水下无人航行器(Underwater Unmanned Vehicle,UUV)为例,构建UUV数字样机1.0功能模型。针对…

【unity小技巧】分享vscode如何开启unity断点调试模式,并进行unity断点调试(2024年最新的方法,实测有效)

文章目录 前言一、前置条件1、已安装Visual Studio Code,并且unity首选项>外部工具>外部脚本编辑器选择为Visual Studio Code [版本号],2、在Visual Studio Code扩展中搜索Unity,并安装3、同时注意这个插件下面的描述,需要根…

P4645 [COCI2006-2007#3] BICIKLI(Tarjan+topsort求到某点的方案数)

P4645 [COCI2006-2007#3] BICIKLI - 洛谷 | 计算机科学教育新生态 思路: 我们考虑输出inf的情况,可以发现当从1出发到2经过的任意一个点处于一个环内时,路径条数是无穷多的。 有向图上从s到t的经过点,就是从s出发所能经过的所有…

基于eFramework车控车设中间件介绍

车设的发展,起源于汽车工业萌芽之初,经历了机械式操作的原始粗犷,到电子式调控技术的巨大飞跃,到如今智能化座舱普及,远程车控已然成为汽车标配,车设功能选项也呈现出爆发式增长,渐趋多元繁杂。…

【AI系统】模型压缩基本介绍

基本介绍 随着神经网络模型的复杂性和规模不断增加,模型对存储空间和计算资源的需求越来越多,使得部署和运行成本显著上升。模型压缩的目标是通过减少模型的存储空间、减少计算量或提高模型的计算效率,从而在保持模型性能的同时,…

解决Unity编辑器Inspector视图中文注释乱码

1.问题介绍 新创建一个脚本,用VS打开编辑,增加一行中文注释保存,在Unity中找到该脚本并选中,Inspector视图中预览的显示内容,该中文注释显示为乱码,如下图所示: 2.图示解决步骤 按上述步骤操作…

Java项目实战II基于微信小程序的旅游社交平台(开发文档+数据库+源码)

目录 一、前言 二、技术介绍 三、系统实现 四、核心代码 五、源码获取 全栈码农以及毕业设计实战开发,CSDN平台Java领域新星创作者,专注于大学生项目实战开发、讲解和毕业答疑辅导。 一、前言 随着移动互联网的迅猛发展,旅游已经成为人…

【错误记录】Android Studio 开发环境内存占用过多 ( 记录内存使用情况 )

文章目录 一、报错信息二、AS 内存记录分析 一、报错信息 使用 Android Studio 一段时间后 , 内存爆了 , 占用了 10G 的内存 ; 二、AS 内存记录分析 AS 刚启动时 , 只占 2014M 内存 ; 编译运行程序后 , 内存变为 2800M 左右 ; 设置显示的运行程序对应的日志 , 占用内存 就会稳定…

开发类似的同款小程序系统制作流程

很多老板想要开发一款和别人家类似的同款小程序系统,但是不知道该怎么开发制作,本文就为大家详细介绍一下开发类似的同款小程序的流程为大家做参考。 一、前期准备找到对标小程序:首先,需要找到你想要模仿的同款小程序&#xff0…

三轴云台之光学变焦功能篇

三轴云台的光学变焦功能是其重要的性能特点之一,该功能允许用户在不改变相机与拍摄对象之间物理距离的情况下,通过调整镜头的焦距来改变拍摄对象的放大倍数或视野范围。 一、光学变焦的原理 光学变焦是通过改变镜头内部的透镜组合来改变焦距的。当镜头中…

android WebRtc 无法推流以及拉流有视频无声音问题

最近在开发使用WebRtc进行视频通话和语音通话,我使用的设备是MTK的手机,期间后台的技术人员几乎没法提供任何帮助,只有接口和测试的web端,有遇到不能推流。推流成功网页端有画面有声音,但是安卓端有画面,没…