FPGA设计之控制集优化详解

news2024/11/23 19:32:21

目录

一、前言

二、Control Set控制集

三、Control Set控制集优化

四、优劣


一、前言

        在工程设计优化中,综合阶段优化中有一项常见的优化,控制集(control set)优化,在vivado的Synthesis中有对该配置项的解释,如下图

 

大意为该配置项为触发器的同步控制集门限设置,默认值为auto,也可设置为0-16之间的其他数字,数字设置的越大,优化的控制集将更多,最终存在的控制集将更少,设置为0表示不进行优化。

 

二、Control Set控制集

        控制集即为触发器控制信号的集合,触发器的控制信号包括时钟信号,使能信号,置位/复位信号。以器件xc7vx485tffg1157-1为例,Slice的结构如下图,右侧8个为寄存器。因为一个Slice只有一路的CK信号,一路CE信号,一路SR信号输入,因此,在一个Slice中的FF是共用CK,CE,SR信号,也只有FF使用相同的CK,CE,SR信号才能放置到同一个Slice中。

 

三、Control Set控制集优化

        对控制集的优化也即是根据设置的Control_set_opt_threshold值调整的控制集的数量,通过第二章可知,如果控制集的信号完全相同的寄存器,可放入同一个slice中。设置了控制集优化后,对于一些同步复位,同步置位和同步使能信号,当数量小于设置的Control_set_opt_threshold值时,也可以放置到同一个slice中。

        下图中,左侧中是两个处于两个Slice中的寄存器,一个是同步复位,一个是同步使能,二者的时钟信号都是clk0,。通常情况因为两个寄存器的复位和使能信号不同,因此放置在两个slice中。设置优化后,复位和使能信号都是通过前面添加一个LUT来实现同步复位和同步使能的作用,对应寄存器的RST和使能端口不用。

 

        为何前面增加使用一个LUT可以实现同步复制或同步使能的效果?以同步复位为例。

 

        假设原先直接使用寄存器的RST信号输入时,寄存器数据输入D和RST信号的逻辑真值表如下,使能信号高电平时有效,复位信号RST高电平复位,即只有在使能信号高电平,复位信号为低电平时,输入才有效,表中0/1表示为0或1。

 

        优化增加了LUT后,通过LUT的INIT值来控制同步复位,寄存器的输入D1和复位信号RST1是连接到了LUT的I0和I1输入口,LUT的输出为Q0,即只要保证Q0与D1和RST1的逻辑真值表如下表。即只要RST为1时,LUT的输出Q0为1,RST为0时,输出等于输入D1,即保证了复位信号RST的有效性。下述逻辑最终是在LUT的INIT值上体现。

 

四、优劣

        通过第三节的分析可知,优化后的寄存器放置到了同一个Slice中,在时序上可能会有一定的提高作用,缺点也是显而易见的,需要消耗更多的LUT资源。

    ​    ​根据xilinx的经验,当工程的控制集小于整个芯片控制集数目的7.5%时,可以无需优化,当大于整个芯片控制集数目的15%时,需要降低控制集数目。

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

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

相关文章

Android Jetpack组件化之ORM 数据库访问框架详解

一、对象关系映射 - ORM / Object Relational Mapping Android 系统中使用的数据库是 SQLite 关系型数据库 , 使用 Android 提供的 api 访问 SQLite 数据库非常繁琐 , 由此出现了很多 ORM 框架 ; ORM 英文全称 Object Relational Mapping , 对象关系映射 ; 对象关系映射 ORM …

“智能指针:C++中优雅的内存管理解决方案“

前言 欢迎来到💖小K💖的💞C专栏💞,内存泄漏指由于疏忽或错误造成程序未能释放已经不再使用的内存的情况,这是C和C程序员的噩梦之一。本节将为大家带来解决办法—>智能指针 文章目录 前言1、简介2、为什么…

【移动端网页布局】flex 弹性布局 ⑤ ( 设置侧轴单行子元素排列方式 | align-items 样式说明 | 代码示例 )

文章目录 一、设置子元素是否换行 : align-items 样式说明1、 align-items 样式引入2、 align-items 样式属性值 二、代码示例1、 代码示例 - 默认样式2、 代码示例 - 设置主轴水平居中3、 代码示例 - 设置侧轴垂直居中4、 代码示例 - 设置侧轴从下到上排列5、 代码示例 - 设置…

C++之类和对象(二)

目录 前言 类的6个默认成员函数 1.构造函数 1.1 概念 1.2 特性 2. 析构函数 2.1 概念 2.2 特性 3. 拷贝构造函数 3.1 概念 3.2 特征 4.赋值运算符重载 4.1 运算符重载 4.2.赋值运算符重载 4.3 前置和后置重载 5. .const成员 6.取地址及const取地址操作符重载 前…

【二叉搜索树】

1 二叉搜索树概念 二叉搜索树又称二叉排序树,它或者是一棵空树 ,或者是具有以下性质的二叉树 : 若它的左子树不为空,则左子树上所有节点的值都小于根节点的值 若它的右子树不为空,则右子树上所有节点的值都大于根节点的值 它的左…

Android“真正的”模块化

作者:bytebeats 模块化背后的原则概述 “如果说SOLID原则告诉我们如何将砖块排列成墙和房间, 那么组件原则则告诉我们如何将房间排列成建筑.” ~ Robert C. Martin, Clean Architecture 你应该分层打包还是分特性打包?还有其他方法吗? 如何提高项目的编译时间? 你…

将Python环境迁移到另一台设备上

本方法可以将一台电脑上的python环境迁移到另一台电脑上,可以省去一个一个包pip的麻烦。本文以pytorch的迁移为例。 一、从源环境备份安装包 在原来的电脑的Conda控制台中使用语句 pip freeze > c:\myrequirement.txt 后面跟的参数是文件的路径和文件名&#x…

Spring MVC自定义拦截器--Spring MVC异常处理

目录 自定义拦截器 什么是拦截器 ● 说明 自定义拦截器执行流程分析图 ● 自定义拦截器执行流程说明 自定义拦截器应用实例 ● 应用实例需求 创建MyInterceptor01 创建FurnHandler类 在 springDispatcherServlet-servlet.xml 配置拦截器 第一种配置方式 第二种配置方…

linux 互斥量pthread_mutex

专栏内容:linux下并发编程个人主页:我的主页座右铭:天行健,君子以自强不息;地势坤,君子以厚德载物. 目录 前言 概述 原理 初始化 进程和线程使用的不同点 死锁 接口 基本API 属性设置 …

探索机器翻译:从统计机器翻译到神经机器翻译

❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️ 👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博…

Osek网络管理及ETAS实现

OSEK/VDX(Offene Systeme und deren Schnittstellen fr die Elektronik in Kraftfahrzeugen / Vehicle Distributed eXecutive)是一种用于嵌入式系统(尤其是汽车电子控制单元)的开放标准。它旨在提供一种统一、可互操作的软件架构…

关于 《python 从入门到实践》的 matplotlib 随机漫步小项目

使用 python 生成随机漫步数据,再使用 matplotlib 将数据呈现。 所谓随机漫步: 每次行走的路径都是完全随机的,就像蚂蚁在晕头转向的情况下,每次都沿随机方向前行路径。 在自然界,物理学,生物学&#xff0…

【Linux】Job for network.service failed(网卡启动报错)

上图是Linux网卡启动报错的情况 这是由于cat/etc/sysconfig/network-scripts/ifcfg-xxx 中HWADDR的MAC地址和ifconfig中的MAC地址不一样,或者缺少cat/etc/sysconfig/network-scripts/ifcfg-xxx 中HWADDR的MAC地址 1.查看ifconfig中的MAC地址 图中00:0c…

【新星计划-2023】IP地址是什么?IP地址的主要功能是什么?

IP地址在生活中是很常见的,我们所使用的手机、电脑等等,都有一个IP地址,那么IP地址是什么?通过IP地址又能干什么?下文就来给大家详细的讲解一下。 一、什么是IP地址 通常我们说的IP地址多数是指互联网中联网的IP地址…

Java 基础进阶篇(十一)—— Arrays 与 Collections 工具类

文章目录 一、Arrays工具类1.1 Arrays 类常用方法1.2 对于 Comparator 比较器的支持1.3 Arrays 的综合应用1.3.1 应用一:数组的降序排序1.3.2 应用二:根据学生年龄进行排序 二、Collections工具类2.1 Collections 类常用方法2.2 Collections 排序相关 AP…

神经网络实验---梯度下降法

本次实验主要目的是掌握梯度下降法的基本原理,能够使用梯度下降法求解一元和多元线性回归问题。 文章目录 目录 文章目录 1. 实验目的 2. 实验内容 3. 实验过程 题目一: 题目二: 题目三: 实验小结&讨论题 1. 实验目的 ① 掌握…

〖Python网络爬虫实战㉓〗- Ajax数据爬取之什么是Ajax

订阅:新手可以订阅我的其他专栏。免费阶段订阅量1000 python项目实战 Python编程基础教程系列(零基础小白搬砖逆袭) 说明:本专栏持续更新中,目前专栏免费订阅,在转为付费专栏前订阅本专栏的,可以免费订阅付…

23.5.7总结(学习通项目思路)

项目思路: 注册:输入邮箱(判重),两次输入密码,获得的正确的验证码,获得不重复的用户名。 登录:输入用户名和密码登录。 忘记密码:输入邮箱(和用户名&#…

RK3588平台开发系列讲解(进程篇)可执行文件内部结构

平台内核版本安卓版本RK3588Linux 5.10Android 12文章目录 一、 ELF 文件的两大组成部分二、文件头三、程序头和节区头四、ELF 文件的细节结构沉淀、分享、成长,让自己和他人都能有所收获!😄 📢在 Linux 中,二进制可执行文件的标准格式叫做 ELF(Executable and Linkabl…

ARP协议结构

文章目录 概念ARP协议格式ARP协议的作用ARP协议的工作流程 首先提出一个问题,来理解ARP解决什么问题 已知报文在数据链路层传输的过程中(假设是主机A到主机B),是通过路由器之间的跳转,根据路由表,结合目的…