FPGA 底层资源介绍

Xilinx FPGA底层资源介绍

本文转载自:瓜大三哥微信公众号

XILINX FPGA 芯片整体架构如下所示,整个芯片是以BANK进行划分的,不同的工艺、器件速度和对应的时钟具有不同的BANK数量(下面截图是以K7325tffg676为例):左边的BANK都是HR BANK,右侧的最下面三个是HP BANK,最上面的四个BANK是transceiver。
在这里插入图片描述

K7325tffg676-Device视图

芯片的主要资源分为以下几个方面:
Slice逻辑资源
Slice Logic Distribution
register寄存器
Memory存储器
DSP资源
IO和GT
Clocking时钟
Primitives原语
Black Boxes黑盒子
Instantiated NetLists实例化网络
FPGA 内部详细架构又细分为如下六大模块:

1.可编程输入输出单元(IOB)(Input Output Block)

为了便于管理和适应多种电器标准,FPGA 的 IOB 被划分为若干个组(Bank),每个 Bank 的接口标准由其接口电压 VCCO 决定,一个 Bank 只能有一种 VCCO,但不同 Bank 的 VCCO 可以不同。只有相同电气标准和物理特性的端口才能连接在一起,VCCO 电压相同是接口标准的基本条件。
在这里插入图片描述
IOB

2.可配置逻辑块(CLB)(Configurable Logic Block)

FPGA 的基本可编程逻辑单元是 CLB,而一个 CLB 是由查找表、数据选择器、进位链、寄存器组成的。查找表和多路选择器完成组合逻辑功能,寄存器(可配置成触发器或锁存器),完成时序逻辑功能。在赛灵思公司公司的 FPGA 器件中,一个 CLB 由多个(一般为 4 个或 2 个)相同的 Slice 和附加逻辑构成。

Slice 又分为 SLICEL(Logic)和 SLICEM(Memory)。SLICEL 和 SLICEM 内部都各自包含了 4 个 6 输入查找表(LUT6)、3 个数据选择器(Mux)、1 个进位链(Carry Chain)和 8 个触发器(Flip-Flop):

查找表:6 输入查找表类似于一个容量为 64 bits 的 ROM(26 = 64)(工艺上是珍贵的 SRAM 资源),6 表示地址输入位宽为 6 bits,存储的内容作为输入对应的输出结果的逻辑运算,并在 FPGA 配置时载入。

对于查找表:目前主流 FPGA 都采用了基于 SRAM 工艺的查找表(LUT)(Look Up Table)结构。LUT 本质上就是一个 RAM。当用户通过原理图或 HDL 语言描述了一个逻辑电路以后,FPGA 开发软件会自动计算逻辑电路的所有可能结果,列成一个真值表的形式,并把真值表(即输入对应的输出逻辑)事先写入 RAM,这样,每输入一个信号进行逻辑运算就等于输入一个地址进行查表,找出地址对应的内容,然后输出即可。目前FPGA中多使用4输入的LUT,所以每一个LUT可以看成一个有4位地址线的RAM。
在这里插入图片描述
CLB

数据选择器:数据选择器一般在 FPGA 配置后固定下来。
进位链:超前进位加法器,方便加法器的实现,加快复杂加法的运算。
寄存器:可以配置成多种工作方式,比如 FF 或 Latch,同步复位或异步复位、复位高有效或低有效等等。

SLICEM 的结构与 SLICEL 的结构类似,最大的区别是使用了一个新的单元代替 SLICE 中的查找表。这个新的单元可以配置为 LUT、RAM、ROM 或移位寄存器(SRL16 或 SRL32),从而可以实现 LUT 的逻辑功能,也能做存储单元(多个单元组合起来可以提供更大的容量)和移位寄存器(提供延迟等功能)。

其中 SLICEM 中 LUT 的输入端地址和写地址为 8 位,高两位可能是将 4 个 LUT 并联一起作为一个大的 RAM 或 ROM 时用,同时 SLICEL 和 SLICEM 的 LUT 均可设为 5 位或 6 位查找表。

Device中Slice位置

Slice作为逻辑的资源图

Slice-L资源利用率

Slice 作为分布式逻辑

Slice-M资源利用率

3.嵌入式块 RAM(BRAM)(Block RAM)

块 RAM 可被配置为 ROM、RAM 以及 FIFO 等常用的存储模块。区别于分布式 RAM(Distributed RAM)(主要由 LUT 组成的,不占用 BRAM 的资源)。分布式 RAM 也可以被配置为 ROM、RAM 以及 FIFO 等常用的存储模块,但是性能不如 BRAM,毕竟 BRAM 才是专用的,一般是 BRAM 资源不够用的情况下才使用分布式 RAM。反之,BRAM 由一定数量固定大小的存储块构成的,使用 BRAM 资源不占用额外的逻辑资源,并且速度快,不过使用的时候消耗的 BRAM 资源只能是其块大小的整数倍,就算你只存了 1 bit 也要占用一个 BRAM。

Device中Block RAM位置
在这里插入图片描述

Block ram资源利用率

一个 BRAM 的大小为 36K Bits,并且分成两个小的 BRAM 各自为 18K Bits,排列成又分为上下两块,上半部分为 RAMB18 下半部分为 RAMBFIFO36。在 FIFO 例化的时候可以将 BRAM 设置为 FIFO 时,不会使用额外的 CLB 资源,并且这部分 RAM 是真双口RAM。
在这里插入图片描述
在这里插入图片描述

FPGA 所采用的逻辑单元阵列 LCA(Logic Cell Array)内部所包括的可配置逻辑模块 CLB(Configurable Logic Block)、 输出输入模块 IOB(Input Output Block)和内部互连线(Interconnect)三个部分。前面两种已经介绍完毕,接下来介绍第三种。

4.互连线资源(Interconnect)

布线资源连通 FPGA 内部的所有单元,而连线的长度和工艺决定着信号在连线上的驱动能力和传输速度。FPGA 芯片内部有着丰富的布线资源,根据工艺、长度、宽度和分布位置的不同而划分为 4 类不同的类别:第一类是全局布线资源,用于芯片内部全局时钟和全局复位/置位的布线;第二类是长线资源,用于完成芯片 Bank 间的高速信号和第二全局时钟信号的布线;第三类是短线资源,用于完成基本逻辑单元之间的逻辑互连和布线;第四类是分布式的布线资源,用于专有时钟、复位等控制信号线。

5.底层内嵌功能单元

内嵌功能模块主要指 DLL(Delay Locked Loop)、PLL(Phase Locked Loop)、DSP(Digital System Processing)(数字信号处理)、DCM(Digital Clock Manager)(提供数字时钟管理和相位环路锁定)、和 CPU(Central Processing Unit)等等软处理核(比如 MicroBlaze 的软核)。现在越来越丰富的内嵌功能单元,使得单片 FPGA 成为了系统级的设计工具,使其具备了软硬件联合设计的能力,逐步向 SoC 平台过渡。

关于 DCM:DCM 是 FPGA 内部处理时钟的重要器件,他的作用主要有三个:消除时钟偏斜(Clock De-Skew)、频率合成(Frequency Synthesis)和相位调整(Phase Shifting)。

DCM 的核心器件是数字锁相环(DLL,Delay Locked Loop)。它是由一串固定时延的延时器组成,每一个延时器的时延为 30ps,也就是说,DCM 所进行的倍频、分频、调相的精度为 30 皮秒。

对于时钟,我们最好不要将两个时钟通过一个与门或者或门(逻辑操作),这样的话就很可能会产生毛刺,影响系统稳定性,如果要对时钟进行操作,例如切换时钟等,请使用 FPGA 内部的专用器件 “BUFG MUX”。
在这里插入图片描述

Device中PLL位置
加粗样式

Device中MMCM位置

6.内嵌专用硬核

内嵌专用硬核是相对底层嵌入的软核而言的,指 FPGA 处理能力强大的硬核(比如 ARM Cortex-A9 的硬核),等效于 ASIC 电路。为了提高 FPGA 性能,芯片生产商在芯片内部集成了一些专用的硬核。例如为了提高 FPGA 的乘法速度,主流的 FPGA 中都集成了专用乘法器,而为了适用通信总线与接口标准,很多高端的 FPGA 内部都集成了串并收发器(Serdes),可以达到数十 Gbps 的收发速度(比如 GTX,PCIE)。

6.1 GTX高速收发器

在这里插入图片描述

Device中GTX位置

6.2 PCIE核

在这里插入图片描述

Device中PCIE位置

7.DSP计算单元
FPGA中的DSP主要是用于乘法/除法的累加单元,一般的除法需要单独设计,因为FPGA中的除法需要好几个DSP搭起来才能构成一个除法器,非常消耗资源。而且在K7系列中都是DSP48,最大支持乘积的位宽为43bit(乘数因子1为25bit,乘数因子2为18bit),累加单元为48bit。
在这里插入图片描述

Device中DSP位置
在这里插入图片描述

DSP资源利用率

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

外汇天眼:仿冒OANDA安达──诓称分析师带领稳赚不赔,恶意爆仓再三骗入金

最近有考虑做美股、期货、外汇的投资人请注意,近期外汇天眼收到一位台湾投资人爆料,分享自己误用仿冒OANDA安达的假券商而损失新台币50万元,以下让我们一起了解这个诈骗案件的详细经过与手法。 今年7月底,受害者在社交平台IG上被…

解决Github无法上传>100M文件——只需两行代码

文章目录 合作推广,分享一个人工智能学习网站。计划系统性学习的同学可以了解下,点击助力博主脱贫( •̀ ω •́ )✧ 废话不多说,如果在githubpush文件太大时,会报错:this exceeds GitHub’s file size limit of 100.…

SLAM PnP问题以及相关基础知识

目标泛函 目标泛函是在优化问题中使用的一种数学工具,目标泛函是一个函数,它将一个或多个函数映射到一个实数。它常用于描述需要最小化或最大化的函数。在优化问题中,我们通常希望找到使得某个特定函数取得最大值或最小值的变量值。目标泛函…

喜讯|极狐GitLab 通过信通院汽车软件研发效能成熟度模型能力

12 月 27 日,在由中国信息通信研究院(下称信通院)、中国通信标准化协会联合主办的2023系统稳定性与精益软件工程大会-汽车云质效专场峰会上,信通院发布了“2023年下半年汽车云评估结果”,极狐GitLab 一体化 DevOps 平台…

c 语言, 随机数,一个不像随机数的随机数

c 语言, 随机数,一个不像随机数的随机数 使用两种方式获取随机数,总感觉使用比例的那个不太像随机数。 方法一: rand() 获取一个随机数,计算这个随机数跟最大可能值 RAND_MAX(定义在 stdlib.h 中&#xf…

C++初阶(十七)模板进阶

📘北尘_:个人主页 🌎个人专栏:《Linux操作系统》《经典算法试题 》《C》 《数据结构与算法》 ☀️走在路上,不忘来时的初心 文章目录 一、非类型模板参数二、模板的特化1、概念2、函数模板特化3、类模板特化1、全特化2、偏特化 三…

k8s的陈述式资源管理(命令行操作)

(一)k8s的陈述式资源管理 1、命令行:kubectl命令行工具——用于一般的资源管理 (1)优点:90%以上ce场景都可以满足 (2)特点:对资源的增、删、查比较方便,对…

7+衰老+WGCNA+机器学习+实验,非肿瘤领域的衰老相关研究

今天给同学们分享一篇生信文章“Identification of aging-related biomarkers and immune infiltration characteristics in osteoarthritis based on bioinformatics analysis and machine learning”,这篇文章发表在Front Immunol期刊上,影响因子为7.3…

C语言——小细节和小知识7

一、逆序字符串 1、递归1 #include <stdio.h> #include <string.h>void ReverseArray(char *str) {char temp *str;//1int len (int)strlen(str);*str *(str len - 1);//2*(str len - 1) \0;//3if(strlen(str 1) > 2)//只要字符串还大于2&#xff0c;就…

解锁小程序UI设计的奥秘:必须知晓的相关事项

一、什么是小程序 2016年张小龙首次提出小程序概念&#xff0c;全称为“微信小程序”&#xff0c;英文名为“微信小程序”MiniProgram它是一种基于微信生态系统、开发周期短、成本低、无需下载安装、即用即走的应用。 到目前为止&#xff0c;小程序不仅是微信独有的&#xff…

4-链表-合并两个有序链表

这是链表的第4题&#xff0c;来个简单算法玩玩。力扣链接。 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1&#xff1a; 输入&#xff1a;l1 [1,2,4], l2 [1,3,4] 输出&#xff1a;[1,1,2,3,4,4]示例 2&#xff…

Android Studio 如何实现软件英文变中文教程

目录 前言 一、确认版本号 二、下载汉化包 三、汉化包安装 四、如何实现中英文切换 五、更多资源 前言 Android Studio是一款功能强大的集成开发环境&#xff08;IDE&#xff09;&#xff0c;用于开发Android应用程序。默认情况下&#xff0c;Android Studio的界面和…

移动机器人规划、控制算法初识

规划与控制PNC(PlanningandControl) 1 路径规划算法&#xff1a; 移动机器人路径规划算法总结_机器人运动轨迹算法-CSDN博客 2 控制算法&#xff1a; 机器人控制算法综述_机器人控制技术综述-CSDN博客 机器人控制算法简要概述_智能控制算法-CSDN博客 学习资源&#xff1a; …

绝地求生:大逃杀,鼠标灵敏度设置教程及枪法练习技巧 鼠标灵敏度怎么设置

《绝地求生大逃杀》鼠标灵敏度怎么设置&#xff1f;作为一款FPS游戏&#xff0c;如何调整鼠标参数是大家急需掌握的&#xff0c;今天闲游盒带来“院长尼克”分享的《绝地求生大逃杀》鼠标灵敏度设置教程及枪法练习技巧&#xff0c;废话不多说&#xff0c;下面我们一起来看吧。 …

Vue2+element-ui 实现select选择器结合Tree树形控件实现下拉树效果

效果&#xff1a; DOM部分 &#xff1a; // 设置el-option隐藏的下拉选项&#xff0c;选项显示的是汉字label&#xff0c;值是value // 如果不设置一个下拉选项&#xff0c;下面的树形组件将无法正常使用 <el-form-item label"报警区域" prop"monitorId"…

DM达梦数据库表占用空间大小

问题描述&#xff1a; 项目涉及用户量大且数据量大&#xff0c;为提高查询性能采用分表方式处理数据&#xff1b;根据业务要求总共4张业务表&#xff0c;每张业务表扩展成100张表&#xff0c;系统中总共400张表。部署至测试环境发现测试环境占用的磁盘空间是开发环境的8倍。 问…

智慧工地云平台源码 支持二次开发、支持源码交付

智慧工地利用移动互联、物联网、云计算、大数据等新一代信息技术&#xff0c;彻底改变传统施工现场各参建方的交互方式、工作方式和管理模式&#xff0c;为建设集团、施工企业、监理单位、设计单位、政府监管部门等提供一揽子工地现场管理信息化解决方案。 通过人员管理、车辆管…

Goby 漏洞发布| QNAP NAS authLogin.cgi 命令执行漏洞(CVE-2017-6361)

漏洞名称&#xff1a;QNAP NAS authLogin.cgi 命令执行漏洞&#xff08;CVE-2017-6361&#xff09; English Name&#xff1a;QNAP NAS authLogin.cgi command execution vulnerability (CVE-2017-6361) CVSS core: 9.8 影响资产数&#xff1a; 2637547 漏洞描述&#xff1…

Zookeeper之基于Docker搭建集群

简介 搭建ZK分布式模式&#xff0c;由2n1台服务器组成。 搭建集群有两种方式&#xff1a; 单机多服务&#xff1a; 不同服务使用不同的配置文件&#xff0c;配置不同的端口号等。使用同一个配置不同的server.id&#xff0c;即IP相同&#xff0c;但是端口不同。 多机多服务&a…

圆钢在线直线度测量仪的配置都有哪些?

圆钢产线有很多&#xff0c;并且很多都是需要对直线度尺寸进行检测的&#xff0c;这就是在线直线度测量仪的应用所在&#xff0c;在线检测远比人工检测能带给工厂更大的利益与效率。 在线直线度测量仪原理 直线度测量仪设置3台位置测量仪&#xff0c;每台位置测量仪内布置呈十字…