FPGA结构与片上资源

文章目录

  • 0.总览
  • 1.可配置逻辑块CLB
    • 1.1 6输入查找表(LUT6)
    • 1.2 选择器(MUX)
    • 1.3 进位链(Carry Chain)
    • 1.4 触发器(Flip-Flop)
  • 2.可编程I/O单元
    • 2.1 I/O物理级
    • 2.2 I/O逻辑级
  • 3.布线资源
  • 4.其他资源介绍
  • 5.Vivado中资源查看步骤
    • 资源总览
    • 结构名称查看
      • CLB
      • SLICE
      • I/O
      • GTX
      • BRAM
      • DSP48
    • 布线资源查看
    • 真值表查看
    • 时钟区域查看
  • 参考资料

0.总览

可编程逻辑单元CLB(Configurable Logic Block)、可编程I/O单元和布线资源构成了FPGA内部三大主要资源。

本文以Xilinx 7系列FPGA为例进行FPGA结构和片上资源讲解,其采用28nm工艺节点。

1.可配置逻辑块CLB

可配置的逻辑块(CLB)是主要的逻辑资源,用于实现时序和组合逻辑电路

可配置逻辑单元(CLB)在 FPGA 中最为丰富,由两个 SLICE 组成。由于 SLICE 有 SLICEL(L:Logic)和 SLICEM(M:Memory)之分,因此 CLB 可分为 CLBLL 和 CLBLM 两类。

一个CLB包含两个SLICE:2个SLICEL或者1个SLICEL+一个SLICEM。

SLICEL和SLICEM内部都包含4个6输入查找表(Look-Up-Table,LUT6)、3个数据选择器(MUX)、1个进位链(Carry Chain)和8个触发器(Flip-Flop)。
在这里插入图片描述

1.1 6输入查找表(LUT6)

查找表Look-up Table,本质上就是1个6输入,64深度的ROM (SLICEM中的则是RAM,因为可读)。通过将所有结果保存在其内部,使用时通过由输入构建的地址线对其进行查找,从而实现6输入的函数逻辑。需要注意的是SLICEM中的查找表,除了读功能外还具备写功能,这就使得其内部的LUT由一个ROM变成了一个RAM,这也是其实现移位寄存器功能和分布式DRAM功能的原因。

虽然SLICEL和SLICEM的结构组成一样,但两者更细化的结构上略有不同,区别在于LUT6上(如下图所示),从而导致LUT6的功能有所不同(如下表格所示)。
在这里插入图片描述

LUT功能SLICELSLICEM
逻辑函数发生器
ROM
分布式RAM
移位寄存器

逻辑函数发生器:用作逻辑函数发生器时,查找表就扮演着真值表的角色,真值表的内容可在Vivado中查看。

ROM:不论是 SLICEL 还是 SLICEM,他们的 LUT6 都可以作为 ROM 使用,配置为 64x1(占用 1 个 LUT6,64 代表深度,1 代表宽度)、128x1(占用 2 个 LUT6)和 256(占用 4 个 LUT6)的 ROM。

分布式RAM: SLICEM中的查找表可配置为RAM ( Random Access Memory),称为分布式RAM。其中 RAM 的写操作为同步,而读操作是异步的,即与时钟信号无关。如果要实现同步读操作,则要额外占用一个触发器,从而增加了意识时钟的延迟(Latency),但提升了系统的性能。这就解释了为什么我们实现RAM同步读写的时候,读出输出要延迟一个 clk。对于布式存储单元(RAM和ROM),Vivado 提供了相应的IP: Distributed Memory Generator

移位寄存器:SLICEM 中的 LUT 还可以配置为移位寄存器,每个 LUT6 可实现深度为 32 的移位寄存器,(注意:只能左移)。这样,每个LUT可以将串行数据延迟1到32个时钟周期。移位输入D(LUT DI1脚)和移位输出Q31 (LUT MC31脚)可以进行级联,以形成更大的移位寄存器。一个SLICEM的4个LUT6级且同一个 SLICEM 中的 LUT6(4个)可级联实现 128 深度的移位寄存器。移位寄存器的典型应用是延迟补偿和同步FIFO。需要注意的是,这里的移位寄存器均没有复位端,这是因为LUT6本身不支持复位。一旦代码描述中使用了复位,无论是同步复位还是异步复位,都会导致移位寄存器采用触发器级联的方式实现。

1.2 选择器(MUX)

SLICE 中的三个 MUX(Multiplexer)两个F7MUX:F7AMUX,F7BMUX +一个 F8MUX。可以和 LUT6 联合共同实现更大的MUX。

一个 LUT6 可实现 4 选 1 的 MUX。

SLICE 中的 F7MUX(F7AMUX 和 F7BMUX)的输入数据来自于相邻的两个 LUT6 的 O6 端口。每个SLICE中都有2个MUXF7,其输入只能为LUT6的输出,而输出只能接到MUXF8;每个SLICE中都有1个MUXF8,其输入只能为MUXF7的输出。

一个 F7MUX 和相邻的两个 LUT6 可实现一个 8 选 1 的 MUX。因此,一个 SLICE 可实现 2 个 8 选 1 的 MUX。

4 个 LUT6、F7AMUX、F7BMUX 和 F8MUX 可实现一个 16 选 1 的 MUX。因此,一个 SLICE 可实现一个 16 选 1 的 MUX。

1.3 进位链(Carry Chain)

进位链用于实现加法和减法运行。它内部实际还包含 4 个 MUX 和 4 个 2 输入异或门(XOR)。每个CLB Slice都有一个专用的加法器CARRY4, 可以实现两个4bit数的加减法运算。CARRY4是一种超前进位的加法器(或者说减法器),是FPGA内部用来实现加减法运算的基本运算单元,但同时也可以实现一些其他的函数功能。

1.4 触发器(Flip-Flop)

每个 SLICE 中有 8 个触发器

Slice中的存储单元便是我们前面提到的寄存器FF,FF是实现时序逻辑最基本的单元。需要注意的是,这 8 个触发器可分为两大类:4 个只能配置为边沿敏感的 D 触发器(Flip-Flop)和 4 个即可配置为边沿敏感的 D 触发器又可配置为电平敏感的锁存器(Flop & Latch)。但后四个一旦被配置为锁存器后,则前4个触发器也不能使用了,会造成一定的资源浪费。

当后者被用作锁存器的时候,前者将无法使用。

当这8个触发器都用作D触发器时,他们的控制端口包括使能端CE、置位/复位端口S/R和时钟端口CLK是对应共享的,也就是就是说共用的。{CE,S/R,CLK}称为触发器的控制集。显然,在具体的设计中,控制集种类越少越好,这样可以提高触发器的利用率。那么怎样减少控制集种类呢?我的理解是:

  • 减少时钟种类,即频率越少越好;
  • 统一规范的设计逻辑,如复位。

S/R端口可配置为同步/异步置位或同步/异步复位,且高有效,因此可形成4种D触发器,如下表所示。

原语(Primitive)功能描述原语(Primitive)功能描述
FDCE同步使能,异步复位FDRE同步使能,同步复位
FDPE同步使能,异步置位FDSE同步使能,同步置位

在我们的常规设计中,FDCE和FDPE占了绝大多数。

说到高有效,让我想起了一个大家习以为常,但很少深究的问题:为什么一开始接触FPGA的时候,都告诉我们低电平复位?后来查了一些资料,有说从功耗、噪声可靠性方面考虑等等,但是偶然看到Xilinx和Altera两家芯片的触发器不一样!如下图所示,Xilinx的触发器是高电平复位,而Altera的触发器时低电平复位。所以这也是需要考虑的一点吗?
在这里插入图片描述

2.可编程I/O单元

7系列FPGA的输人输出(I/O)进行了优化,用来在物理级和逻辑级上满足不同的要求,这些要求包括:高速存储器、网络、视频平板和传感器接口,高速的ADC/DAC连接,以及传统接口。7系列FPGA使用了Xilinx统一的I/O结构。
物理I/O能力和结构提供了一个I/O标准范围、端接和节省能量模式。每个I/O组的I/O数量、它们相对应的时钟、新的I/O资源的放置,以及I/O在FPGA晶圆上的排列都是同等重要的。此外,详细的I/O绑定逻辑功能,比如输人/输出延迟和串行化/解串行化功能,对于所支持的I/O应用是非常关键的。所添加的最新功能结构,比如移相器,PLL和I/O FIFO完整接口特性,支持最高性能的DDR3.及其他存储器接口。下图给出了基本的I/O结构和与新I/O相关的模块。
在这里插入图片描述

2.1 I/O物理级

在物理级上,I/O要求支持一个范围的驱动电压(或电平)和驱动强度,以及接收功能接口的不同I/O标准。I/O也支持不同的输人/输出端接特性,它可以动态地确认和移除。
7系列的结构有两种类型的I/O:

(1)高性能(High Performance)I/O,在组中称为HP I/O组;
(2)宽范围(High Range,HR)I/O(支持宽范围的I/O标准),在组中称为HR I/O组。

所有的I/O类型都是基于Virtex-6的结构,但是扩展了功能和所支持的电压范围。这两种I/O类型被绑定到一个有50个I/O的整个I/O组。Artix-7 FPGA只有3.3V的HR I/O组,Virtex-7和Kintex FPGA既有HP I/O组,也有HR I/O组。下面详细介绍HP I/O和HP I/O组。下图给出了Kintex-7XC7K160T的I/O组和CMT的布局结构图。
在这里插入图片描述
用于存储器接口的I/O电源主要有3个元件:
(1)DCI:用于匹配PCB布线的阻抗。
(2)参考输人接收器:用于调整I/O电压到核电压。
(3)IDELAY:用于同步信号到时钟。

2.2 I/O逻辑级

所有的I/O都能被配置成组合或者寄存方式。所有的输入/输出支持双数据率(double data rate, DDR)模式。任何一个输人和一些输出可以通过编程IDEALY和ODELAY进行延迟。
每个I/O 块包含一个可编程的绝对延迟原语IDELAY2。IDELAY可以连接到ILOGICE2/ISERDESE2或者ILOGICE3/ISERDESE2模块。
每个HP I/O组包含一个可编程绝对延迟原语称为ODELAY2(HR I/O组不可用)。

很多应用连接了高速、位串行的I/O,以及FPGA内低速并行操作的逻辑。这就要求在I/O结构内有一个串行化器和解串行化器。每个I/O引脚包含8位IOSERDES,能执行串行-并行或并行-串行转换。
7系列内用于精确实现ISERDES的原语是ISERDESE2,精确实现OSERDES的原语是OSERDESE2。

3.布线资源

互联是FPGA内用于连接功能元件,比如IOB、CLB、DSP和BRAM,输人和输出信号通路的可编程网络。互联也称为布线,被分段用于最优的连接。
7系列FPGA CLB在FPGA内以规则的阵列排列。如图所示,每个到开关矩阵的连接用来访问通用的布线资源。
在这里插入图片描述

FPGA内部定义了不同类型的布线,这些布线通过长度来定义。较长的路径元素对于较长的距离来说速度更快。互联类型有快速连接、单连接、双连接和四连接。

  1. 快速连接:快速连接将模块的输出布线回模块的输入。与较大的CLB一起,快速连接为较简单的功能提供了高性能布线。
  2. 单连接:单连接用于在垂直和水平方向上,布线到相邻的单元。
  3. 双连接:双连接在所有4个方向上,水平和垂直连接到所有其他的单元和对角线相邻的单元。
  4. 四连接:四连接在水平和垂直方向,每隔4个CLB连接一个或者对角线连接到两行和两列的距离的单元。与前几代的单通道长线相比,四连接线具有更好的灵活性。
    在这里插入图片描述

4.其他资源介绍

《Xilinx FPGA设计权威指南》2.2 FPGA原理及结构
在这里插入图片描述
《FPGA深度解析》第2章 FPGA结构与片上资源
在这里插入图片描述

5.Vivado中资源查看步骤

资源总览

上方选择Window-Device,打开Device布局图可以看到FPGA的内部结构资源。
在这里插入图片描述

结构名称查看

放大后点击具体结构可在左侧Site Properties中看到具体的结构名称等信息。

CLB

在这里插入图片描述

SLICE

在这里插入图片描述

I/O

在这里插入图片描述

GTX

在这里插入图片描述

BRAM

在这里插入图片描述

DSP48

在这里插入图片描述
等等。

布线资源查看

布线BEL则不实现逻辑功能,而只用来实现布线功能。要看到布线EBL,首先需要把模式改成Routing Resource这个选项勾上:
在这里插入图片描述

放大界面看可以看到布线BEL(Basic Element of Logic):可以看到在原来的SLICE块基础上多了互联线和一些布线选择块
在这里插入图片描述

接下来随便选择一个布线BEL, 把鼠标悬停在它上面就会出现一些基本信息,如果点击选中它则会在左下角出现更详细的信息,比如它的输入/输出管脚分别连接到哪里,它属于哪个时钟区域,它是什么类型的BEL等等。
在这里插入图片描述

Switch Box可以理解成一个“中转站“ ,附近的各种资源的输出都到这里完成转接,所以这个布线BEL的输出可能是来自相邻的FF,也可能是来自相邻的LUT,具体都根据实际的RTL代码来决定。
布线BEL用来实现各种输入的选取,从而实现底层资源间的灵活互联!正是有了这些布线资源和布线BEL, FPGA才可以做到这么灵活。
在这里插入图片描述

真值表查看

综合后LUT真值表的查看。
在这里插入图片描述

时钟区域查看

时钟区域是Xilinx FPGA对时钟的一种划分结构,它把整个芯片根据不同的IO BANK内的所有资源和连线都划定到不同的各个时钟区域下,这样对在同一时钟区域下的时钟信号就方便管理,同时也方便各种时钟资源走线和互联。
在这里插入图片描述

综合后打开Clock Regions可以看到时钟区域和Bank划分。IO BANK和时钟区域不是一一对应的。
在这里插入图片描述

参考资料

CLB部分参考:

《Vivado从此开始》第1章FPGA技术分析

从底层结构开始学习FPGA(0)----FPGA的硬件架构层次(BEL Site Tile FSR SLR Device)

从底层结构开始学习FPGA(1)----可配置逻辑块CLB(Configurable Logic Block)

FPGA基础学习(7) – 内部结构之CLB

LUT部分补充:

从底层结构开始学习FPGA(2)----LUT查找表

其他部分参考:

《FPGA深度解析》第2章 FPGA结构与片上资源

《Xilinx FPGA设计权威指南》2.2 FPGA原理及结构

官方文档:

7 Series FPGAs Configurable Logic Block User Guide (UG474)

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

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

相关文章

【STM32CubeMX(3)】GPIO上拉输入——读取按键状态

通过本节可以学习到: 如何在CubeMX配置上拉输入什么是上拉输入如何读取一个GPIO的输入状态 软件环境: STM32CubeMX version6.10.0 Keil_v5(MDK-ARM) version 5.32 硬件环境: STM32F103C8T6最小系统板(…

windwos权限维持

1.php 不死马权限维持 <?php ignore_user_abort(); //关掉浏览器&#xff0c;PHP脚本也可以继续执行. set_time_limit(0);//通过set_time_limit(0)可以让程序无限制的执行下去 $interval 5; // 每隔*秒运行 do { $filename test.php; if(file_exists($filename)) { echo…

深入探讨多线程编程:从0-1为您解释多线程(下)

文章目录 6. 死锁6.1 死锁原因 6.2 避免死锁的方法加锁顺序一致性。超时机制。死锁检测和解除机制。 6. 死锁 6.1 死锁 原因 系统资源的竞争&#xff1a;&#xff08;产生环路&#xff09;当系统中供多个进程共享的资源数量不足以满足进程的需要时&#xff0c;会引起进程对2…

今日早报 每日精选15条新闻简报 每天一分钟 知晓天下事 3月29日,星期五

每天一分钟&#xff0c;知晓天下事&#xff01; 2024年3月29日 星期五 农历二月二十 1、 网络表演&#xff08;直播与短视频&#xff09;运营团体标准发布&#xff1a;应建立举报处置机制。 2、 商务部&#xff1a;中国决定终止对澳大利亚进口葡萄酒征收反倾销税和反补贴税。…

编程语言|C语言——数组与指针

一、数组 同一类型的变量——元素&#xff08;element&#xff09;集中在一起&#xff0c;在内存上排列成一条直线&#xff0c;这就是数组&#xff08;array&#xff09;。 1.1 一维数组 一维数组的声明 int arr1[10]; int arr2[2 8];#define N 10 int arr3[N];int count 10;…

深度学习 - PyTorch基本流程 (代码)

直接上代码 import torch import matplotlib.pyplot as plt from torch import nn# 创建data print("**** Create Data ****") weight 0.3 bias 0.9 X torch.arange(0,1,0.01).unsqueeze(dim 1) y weight * X bias print(f"Number of X samples: {len(…

基于资源的约束委派(下)

webclient http self relay Web 分布式创作和版本控制 (WebDAV) 是超文本传输协议 (HTTP) 的扩展&#xff0c;它定义了如何使用 HTTP ( docs.microsoft.com )执行复 制、移动、删除和创建等基本文件功能 需要启用 WebClient 服务才能使基于 WebDAV 的程序和功能正常工作。事实…

全国中学基础信息 API 数据接口

全国中学基础信息 API 数据接口 基础数据&#xff0c;高校高考&#xff0c;提供全国初级高级中学基础数据&#xff0c;定时更新&#xff0c;多维度筛选。 1. 产品功能 2024 年数据已更新&#xff1b;提供最新全国中学学校基本信息&#xff1b;包含全国初级中学与高等中学&…

虚拟现实(VR)项目的开发工具

虚拟现实&#xff08;VR&#xff09;项目的开发涉及到多种工具&#xff0c;这些工具可以帮助开发者从建模、编程到最终内容的发布。以下是一些被广泛认可的VR开发工具&#xff0c;它们覆盖了从3D建模到交互设计等多个方面。北京木奇移动技术有限公司&#xff0c;专业的软件外包…

为什么我的微信小程序 窗口背景色backgroundColor设置参数 无效的问题处理记录!

当我们在微信小程序 json 中设置 backgroundColor 时&#xff0c;实际在电脑的模拟器中根本看不到效果。 这是因为 backgroundColor 指的窗体背景颜色&#xff0c;而不是页面的背景颜色&#xff0c;即窗体下拉刷新或上拉加载时露出的背景。在电脑的模拟器中是看不到这个动作的…

Acwing_795前缀和 【一维前缀和】+【模板】二维前缀和

Acwing_795前缀和 【一维前缀和】 题目&#xff1a; 代码&#xff1a; #include <bits/stdc.h> #define int long long #define INF 0X3f3f3f3f #define endl \n using namespace std; const int N 100010; int arr[N];int n,m; int l,r; signed main(){std::ios::s…

Gitlab 实现仓库完全迁移,包括所有提交记录、分支、标签

1 方案一&#xff1a;命令 cd <项目目录> git fetch --all git fetch --tags git remote rename origin old-origin #可以不保留 git remote add origin http://***(项目的新仓库地址) #git remote set-url origin <项目的新仓库地址> git push origin --all git…

项目管理:项目进度管理的五大关键步骤

作为项目经理&#xff0c;要想做好项目进度管理&#xff0c;可以遵循以下五个关键步骤&#xff1a; 一、确定范围和分解目标 1、明确项目目标&#xff1a;首先&#xff0c;要清晰地定义项目的总体目标和预期成果。 2、范围界定&#xff1a;详细列出项目所需完成的所有任务和…

LDL^H分解求逆矩阵与MATLAB仿真(Right-Looking)

通过分解将对称正定厄米特矩阵分解成下三角矩阵L和对角矩阵D来求其逆矩阵 目录 前言 一、LDL^H基本算法 二、LDL^H Right-Looking算法 三、D矩阵求逆 四、L矩阵求逆 五、A矩阵求逆 六、计算量分析 七、MATLAB仿真 八、参考资料 总结 前言 在线性代数中&#xff0c;LDL…

HarmonyOS入门--配置环境 + IDE汉化

文章目录 下载安装DevEco Studio配置环境先认识DevEco Studio界面工程目录工程级目录模块级目录 app.json5module.json5main_pages.json通知栏预览区 运行模拟器IED汉化 下载安装DevEco Studio 去官网下载DevEco Studio完了安装 配置环境 打开已安装的DevEco Studio快捷方式…

Java中有哪些容器(集合类)?

Java中的集合类主要由Collection和Map这两个接口派生而出&#xff0c;其中Collection接口又派生出三个子接 口&#xff0c;分别是Set、List、Queue。所有的Java集合类&#xff0c;都是Set、List、Queue、Map这四个接口的实现 类&#xff0c;这四个接口将集合分成了四大类&#…

蓝桥杯 - 小明的背包1(01背包)

解题思路&#xff1a; 本题属于01背包问题&#xff0c;使用动态规划 dp[ j ]表示容量为 j 的背包的最大价值 注意&#xff1a; 需要时刻提醒自己dp[ j ]代表的含义&#xff0c;不然容易晕头转向 注意越界问题&#xff0c;且 j 需要倒序遍历 如果正序遍历 dp[1] dp[1 - vo…

Android应用程序的概念性描述

1.概述 Android 应用程序包含了工程文件、代码和各种资源&#xff0c;主要由 Java 语言编写&#xff0c;每一个应用程序将被编译成Android 的一个 Java 应用程序包&#xff08;*.apk&#xff09;。 由于 Android 系统本身是基于 Linux 操作系统运行的&#xff0c;因此 …

SpringBoot Redis 之Lettuce 驱动

一、前言 一直以为SpringBoot中 spring-boot-starter-data-redis使用的是Jredis连接池&#xff0c;直到昨天在部署报价系统生产环境时&#xff0c;因为端口配置错误造成无法连接&#xff0c;发现报错信息如下&#xff1a; 一了解才知道在SpringBoot2.X以后默认是使用Lettuce作…

蓝桥杯 2022 省A 选数异或

一种比较无脑暴力点的方法&#xff0c;时间复杂度是(nm)。 (注意的优先级比^高&#xff0c;记得加括号(a[i]^a[j])x&#xff09; #include <iostream> #include <vector> #include <bits/stdc.h> // 包含一些 C 标准库中未包含的特定实现的函数的头文件 usi…