Xilinx UltraScale架构之可配置逻辑块CLB
目录
一、概览
二、UltraScale架构
2.1 UltraScale/UltraScale+特点
2.2 与7系列CLB差异
三、 CLB结构
3.1 LUT
3.2 FF
3.3 多路选择器Multiplexers
3.4 进位链Carry Chain
四、应用
4.1 分布式RAM
4.2 移位寄存器
4.3 进位链Carry Chain
五、参考资料
一、概览

二、UltraScale架构
2.1 UltraScale/UltraScale+特点
UltraScale架构是赛灵思器件中一种变革性的架构,可以处理大规模的I/O和存储带宽,并且因为有许多复用的内部块单元,从而具有更强的扩展性,在降低功耗方面也优于7系列器件。UltraScale架构包含了Kintex,Virtex两个系列。
UltraScale+是在UltraScale架构的基础上进行了优化,相比Ultrascale,降低了BOM成本,在高性能与经济性间取得更好的平衡,同时拥有大量的功耗方面的配置。UltraScale+架构有Kintex,Virtex,Zynq 三个系列
2.2 与7系列CLB差异
与7系列类似,Ultrascale架构的CLB包含了6输入的查找表LUT,两个LUT5,分布式存储器和移位寄存器,高速进位逻辑,更宽的多路复用器,FF/Latch。
a) Slice:与7系列的一个CLB包含两个Slice不同的是Ultrascale中一个CLB只有一个Slice,
b)控制信号:每个CLB包含4个时钟使能信号,在置位/复位信号前有可取反的设置
c)分布式RAM:写使能信号WE和FF的时钟使能信号分开,在一个slice中,写使能信号可以直接和三个直接输入组成8个独立的写使能信号
d)LUT:LUT可直接输出,或和选择器组合输出,也可通过FF输出
e)FF:所有的FF都可配置成边沿触发的触发器或锁存器
f)Carry:单个CLB的进位逻辑扩展到了8bit,可实现更快的运算,每个CLB一条进位链
Ultrascale的CLB是单列结构,先比之前的双列结构
a) 可消除之前的I/O数量和逻辑布局大小的相互影响,
b) 解决了电源和接地模块布局位置的限制,电源和接地模块可放置到器件的任意位置
c) 可以将不同的IP块相互独立分布在资源的四周
Ultrascale的时钟域CR(Clock Region)和7系列存在差异,CR是以tiles模块排列的。一个CR包含了60个CLB,24个DSP,12个块状RAM,在中间位置存在一个水平时钟脊HCS。HCS由水平布线资源和水平分布资源,叶子时钟缓冲器,时钟网络连接单元,和时钟根组成,关于详细的介绍可参考文章/Xilinx之Ultrascale系列时钟资源与驱动关系 - 哔哩哔哩
三、 CLB结构
3.1 LUT
一个Slice包含8个6输入的LUT和16个FF,Slice按列分布,也可级联实现更多的功能,单个LUT6可配置成6输入单输出的LUT6,也可配置成2个五输入单输出的LUT5。

对于LUT的数据,可直接从O端口作为Slice的输出,或者经过选择器从MUX输出,也可输入到FF中再从Q1,Q2输出,Q1对应LUT的O6,Q2对应LUT的O5。

UltraScale架构包含两种类型的Slice, SliceL和SliceM。SliceM中LUT可配置为64bit的分布式RAM,多了写地址WA和写使能WE信号,时钟信号,其中,Slice中的X和I作为数据输入端口。
将单个SliceM内8个LUT组合使用可生成512bit的分布式RAM,将多个SliceM组合可生成大于512bit的分布式RAM。如果需要更大的RAM,可使用块状RAM
SliceM中的LUT也可配置为32bit的移位寄存器,将8个LUT组合使用可配置成256bit的移位寄存器。
3.2 FF
UltraScale架构的器件每个Slice包含16个FF,都可以被配置为D触发器或锁存器Latch。当被配置为锁存器时,必须以一半为单位进行配置。假设从下往上8个FF编号为A到H,如果其中一个为锁存器,其余7个也会被配置为锁存器,并且当时钟信号为高电平时,锁存器时透传的。

时钟信号:每个CLB有2个时钟输入clk1,clk2, 2个复位输入SR1,SR2用于控制FF,单个控制信号同时连接到8个FF,分为上下两部分。
使能信号:时钟使能信号有4个,CE1,CE2,CE3,CE4,每个使能信号控制4个FF,相互之间独立。

置位/复位信号 :每个CLB中的2个SR输入可被配置为与时钟信号同步或异步,可以被配置为置位set或复位reset信号,但不能同时为置位或复位信号。如果一个FF有SR信号,同一组的其余FF也是复用该信号,配置对应的原语如下。
a)不进行set/reset设置
b)同步置位原语FDSE
d)同步复位原语FDER
e)异步置位原语 FDPE
f)异步复位原语 FDCE
INIT:FF的初始化值通过INIT可设置为0或1,默认情况下,SR为set时INIT=1,为reset时INIT=0。
3.3 多路选择器Multiplexers
针对单个Slice中的LUT,可实现情况如下
a) 一个LUT配置为4:1选择器,一个CLB配置为8个4:1的选择器
b) 两个LUT配置为8:1选择器,一个CLB配置为4个8:1的选择器
c) 四个LUT配置为16:1选择器,一个CLB配置为2个16:1的选择器
d) 8个LUT配置为32:1选择器,一个CLB配置为1个32:1的选择器
通过内部的F7MUX_AB,F7MUX_CD,F7_MUX_GH可将相邻的LUT进行扩展,两个F8MUX_BOT和F8MUX_TOP可以扩展两个F7_MUX的输出,F9MUX可扩展两个F8MUX的输出。
16:1多路选择器实现使用了4个LUT,每个LUT的6个输入中4个为数据输入DATA,2个输入为选择位SEL

32:1的多路选择器使用了Slice中所有的mux,将F7MUX,F8MUX,F9MUX的输入作为了选择位,加上LUT的中两个输入位,共5位作为选择位。

3.4 进位链Carry Chain
进位链的初始化值CYINIT用于选择进位链的第一个bit,为1表示加法,为0表示减法,AX用于动态的第一个进位输入。

四、应用
4.1 分布式RAM
分布式RAM在大容量的存储和小容量的存储间提供了一个择中的选择,通常大容量的存储使用块状RAM,小容量存储使用分布式RAM,分布式RAM可以通过例化或IP来使用。相比于块状RAM,分布式RAM从资源,性能和功耗方面更佳。
通常,对于存储的数据小于64bit时,除非没有多余的SliceM,否则都是使用分布式RAM。对于数据大于64bit小于等于128bit时,在选择分布式RAM和块状RAM的原则有以下几条
a)有块状RAM资源时优先使用块状RAM
b) 如果有异步读取时,需使用分布式RAM
c) 数据宽度大于16bit时,使用块状RAM
d)有一定的性能要求时,相比于块状RAM,寄存器的分布式RAM在时钟信号传输中时延更小,更少的布局限制。
4.2 移位寄存器
移位寄存器的原语不会使用同一个slice中的FF,如果要实现同步读写,需将输出Q连接到FF中,并且移位寄存器和FF的时钟来源是不同的。通过这种方式,将获取更好的时序,简化设计。

固定长度移位寄存器
可级联的32bit移位寄存器(使用原语SRLC32E)不需要使用多路选择器即可实现任何固定长度的移位寄存器。以72bit长度为例,级联后仅需将最后一个移位寄存器的输入固定到b00111。也可将移位寄存器的长度限定到71bit(地址截止到5'b00110),最后一个移位寄存器连接一个FF。使用SRLC32E原语时,移位寄存器的长度为地址输入+1。

4.3 进位链Carry Chain
使用进位逻辑可以改善算术运算(加法器,计数器,比较器)的性能,对于一些简单的计数器或加法器,减法器,工具会自动地综合出进位逻辑。对于复杂的计算可使用DSP实现,DSP和进位逻辑都可进行算术运算,但对于一些小计算量时,使用进位逻辑实现将更快,功耗更低。
五、参考资料
赛灵思官网手册《ug574-ultrascale-clb.pdf》
链接:https://pan.baidu.com/s/1hQA1Chjy41gQi6x8YJ8QFA
提取码:91v6
相关文章:
Xilinx UltraScale架构之可配置逻辑块CLB
目录 一、概览 二、UltraScale架构 2.1 UltraScale/UltraScale特点 2.2 与7系列CLB差异 三、 CLB结构 3.1 LUT 3.2 FF 3.3 多路选择器Multiplexers 3.4 进位链Carry Chain 四、应用 4.1 分布式RAM 4.2 移位寄存器 4.3 进位链Carry Chain 五、参考资料 一、概览 二…...
springboot web开发整合Freemarker 模板引擎
目录 Freemarker添加依赖配置文件ymlcontrollerhtml Freemarker 简介: FreeMarker 是一款 模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页,电子邮件,配置文件,源代码等)的通用工具…...
Python 连接 SQL 数据库 -pyodbc
文章目录 使用 pyodbc 模块从 Python 代码连接到 SQL 数据库配置用于 pyodbc Python 开发的开发环境创建用于 pyodbc Python 开发的 SQL 数据库使用 pyodbc 连接到 SQL连接和查询数据 推荐阅读 在 Windows、Linux 或 macOS 上使用 Python 连接到 SQL 数据库,有几个可…...
Vue框架--Vue中的数据代理
下面,我们一起来说以下Vue中的数据代理。 1.Object.defineProperty()方法回顾 * Object.defineProperty()方法基本配置项 * value:指定设置对象内容的属性值 * enumerable:true, //控制属性是否可以枚举(也就是是否可以被遍历),默认值是false * writable:true, //控制属性是…...
每日一题(链表中倒数第k个节点)
每日一题(链表中倒数第k个节点) 链表中倒数第k个结点_牛客网 (nowcoder.com) 思路: 如下图所示:此题仍然定义两个指针,fast指针和slow指针,假设链表的长度是5,k是3,那么倒数第3个节点就是值为…...
python如何求两list的公共区域
如何求两list的公共区域 对于列表(List),要求它们的公共区域,你可以使用列表推导式和集合交集的方法来计算。具体步骤如下: list1 [1, 2, 3, 4, 5] list2 [3, 4, 5, 6, 7]# 使用列表推导式获取列表的交集 common_e…...
SpringMVC中文乱码(request或response)前后端处理
前端处理: JSP : <%page pageEncoding"utf-8" %> HTML : <meta charset"UTF-8">后端处理: GET请求(request)乱码处理: <!-- Tomcat的sever.xml中添加配置:URIEncod…...
Redis面试题大全含答案
1.什么是Redis? 答:Remote Dictionary Server(Redis)是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。 它通常被称为数据结构服务器,因为值(value&…...
stable diffusion实践操作-提示词-整体环境
系列文章目录 stable diffusion实践操作-提示词 文章目录 系列文章目录前言一、提示词汇总1.1 整体环境11.2 整体环境1 二 、总结 前言 本文主要收纳总结了提示词-整体环境。 一、提示词汇总 1.1 整体环境1 画质背景场景画风镜头[最高质量][透明背景][山][轮廓加深][正面视…...
Spring Aop--通知注解
一、环绕注解 环绕注解 环绕注解Aroud 注解描述AroundAround是Spring AOP中的一种通知类型,用于在目标方法执行前后进行环绕操作。它可以在方法调用前后增加额外的逻辑,例如日志记录、性能监控等。Around注解需要配合AspectJ表达式来指定切入点&#…...
说说CDN和负载均衡具体是怎么实现的
分析&回答 什么是 CDN CDN (全称 Content Delivery Network),即内容分发网络。 构建在现有网络基础之上的智能虚拟网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需…...
Leetcode107. 二叉树的层序遍历 II
力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 给你二叉树的根节点 root ,返回其节点值 自底向上的层序遍历 。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历) 输入:root [3,9…...
【广州华锐互动】VR党建多媒体互动展厅:随时随地开展党史教育
随着科技的不断发展,虚拟现实(VR)技术已经逐渐渗透到各个领域,其中党建教育尤为受益。为了更好地传承红色基因,弘扬党的优良传统,广州华锐互动推出了VR党建多媒体互动展厅,让广大党员干部和人民群众通过现代科技手段&a…...
libdrm全解析三十九 —— 源码全解析(36)
接前一篇文章:libdrm全解析三十八 —— 源码全解析(35) 本文参考以下博文: DRM 驱动程序开发(VKMS) 特此致谢! 前一篇文章讲解完了资源的释放流程中的drmModeRmFB(),本回讲解munma…...
【Interaction交互模块】AngularJointDrive角度关节驱动
文章目录 一、预设体位置二、案例:做一个“能开合的门” 1、在已建好的门框下,建门 2、设置参数 3、解决产生的问题 三、其它属性 一、预设体位置 交互模块——可控制物体——物理关节——角度关节驱动 二、案例:做一个“能…...
菜鸟教程《Python 3 教程》笔记 EX 01:命令行参数
菜鸟教程《Python 3 教程》笔记 EX 01:命令行参数 1 命令行参数1.1 基础用法1.2 getopt 模块1.2.1 getopt.getopt 方法1.2.2 getopt.gnu_getopt 方法1.2.3 Exception getopt.GetoptError1.2.4 exception getopt.error 笔记带有个人侧重点,不追求面面俱到…...
NLP(六十六)使用HuggingFace中的Trainer进行BERT模型微调
以往,我们在使用HuggingFace在训练BERT模型时,代码写得比较复杂,涉及到数据处理、token编码、模型编码、模型训练等步骤,从事NLP领域的人都有这种切身感受。事实上,HugggingFace中提供了datasets模块(数据处…...
Rabbitmq消息积压问题如何解决以及如何进行限流
一、增加处理能力 优化系统架构、增加服务器资源、采用负载均衡等手段,以提高系统的处理能力和并发处理能力。通过增加服务器数量或者优化代码,确保系统能够及时处理所有的消息。 二、异步处理 将消息的处理过程设计为异步执行,即接收到消息…...
Lambda方法引用
1、体验方法引用 在使用Lambda表达式的时候,我们实际上传递进去的代码就是一种解决方案:拿参数做操作那么考虑一种情况:如果我们在Lanbda中所指定的操作方案,已经有地方存在相同方案,那是否还有必要再重复逻辑呢&#…...
TCP协议报文
前言 TCP/IP协议簇——打开虚拟世界大门中,已经给大家大致介绍了TCP/IP协议簇的分层。 TCP (Transmission Control Protocol)传输控制协议,在TCP/IP协议簇中,处于传输层。是为了在不可靠的互联网络(IP协议)中&#x…...
C++初阶-list的底层
目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...
使用分级同态加密防御梯度泄漏
抽象 联邦学习 (FL) 支持跨分布式客户端进行协作模型训练,而无需共享原始数据,这使其成为在互联和自动驾驶汽车 (CAV) 等领域保护隐私的机器学习的一种很有前途的方法。然而,最近的研究表明&…...
JVM垃圾回收机制全解析
Java虚拟机(JVM)中的垃圾收集器(Garbage Collector,简称GC)是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象,从而释放内存空间,避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...
第25节 Node.js 断言测试
Node.js的assert模块主要用于编写程序的单元测试时使用,通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试,通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...
如何为服务器生成TLS证书
TLS(Transport Layer Security)证书是确保网络通信安全的重要手段,它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书,可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...
高危文件识别的常用算法:原理、应用与企业场景
高危文件识别的常用算法:原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件,如包含恶意代码、敏感数据或欺诈内容的文档,在企业协同办公环境中(如Teams、Google Workspace)尤为重要。结合大模型技术&…...
【7色560页】职场可视化逻辑图高级数据分析PPT模版
7种色调职场工作汇报PPT,橙蓝、黑红、红蓝、蓝橙灰、浅蓝、浅绿、深蓝七种色调模版 【7色560页】职场可视化逻辑图高级数据分析PPT模版:职场可视化逻辑图分析PPT模版https://pan.quark.cn/s/78aeabbd92d1...
如何更改默认 Crontab 编辑器 ?
在 Linux 领域中,crontab 是您可能经常遇到的一个术语。这个实用程序在类 unix 操作系统上可用,用于调度在预定义时间和间隔自动执行的任务。这对管理员和高级用户非常有益,允许他们自动执行各种系统任务。 编辑 Crontab 文件通常使用文本编…...
C++课设:简易日历程序(支持传统节假日 + 二十四节气 + 个人纪念日管理)
名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 专栏介绍:《编程项目实战》 目录 一、为什么要开发一个日历程序?1. 深入理解时间算法2. 练习面向对象设计3. 学习数据结构应用二、核心算法深度解析…...
CRMEB 中 PHP 短信扩展开发:涵盖一号通、阿里云、腾讯云、创蓝
目前已有一号通短信、阿里云短信、腾讯云短信扩展 扩展入口文件 文件目录 crmeb\services\sms\Sms.php 默认驱动类型为:一号通 namespace crmeb\services\sms;use crmeb\basic\BaseManager; use crmeb\services\AccessTokenServeService; use crmeb\services\sms\…...
