Xinlinx FPGA如何降低Block RAM的功耗

news2024/10/8 22:58:23

FPGA中降低Block RAM的功耗有两种方式,分别是选择合适的写操作模式以及Block RAM的实现算法及综合设置。我们知道对于采用IP核生成对应的RAM时,会有最小面积算法、低功耗算法以及固定原语,但是采用最小功耗算法有时由于级联长度导致无法实现,我们可以通过综合选项得到一个折中的效果,下面将具体介绍。

一、写操作模式

之前我们介绍过BRAM的各种设计细节,可以参考如下文章:

Xinlinx FPGA内的存储器BRAM全解-CSDN博客

我们知道BRAM的写模式一共有三种:写优先、读优先、Nochange

NO_CHANGE模式下,在写操作期间输出锁存保持不变。如图所示,输出的数据仍然是之前的读数据,不受同一端口上的Write操作的影响。

在这里插入图片描述

这样就可以减少端口数据的翻转,从而达到降低功耗的目的。

二、实现算法及综合设置

在上面给出的文章中我们介绍了Block RAM一共有三种实现算法,分别是最小面积算法、低功耗算法以及固定原语算法。在这里我们简单介绍一下:

1.实现算法

  • 最小面积

最小面积算法使所用的BRAM原语数量最少,同时减少了输出多路复用

在这里插入图片描述

在3k×16RAM的实现中,我们用到了三个18Kb的RAM。为了能够形成对比,我们将3个1K×18的BRAM放在一列构成一个3k×16,如下图。

在这里插入图片描述

我们可以发现,在水平和垂直方向上两种方法构成的Memory长度一致,那最小面积是怎么体现出来的呢?这是因为在各个BRAM构成的RAM输出时,需要进行选择。比如对于最小面积算法,在输出时需要对上面2k×19的输出和1k×18的输出进行选择,因此只需要一个2选1多路复用器。那上面两个相邻的2K×19需要进行选择吗,其实是不用的,两个9bit宽的RAM共同构成了要输出的16bit,任何时候都是拼在一起的不需要选择。

  • 低功耗

低功耗算法可以最大限度地减少在读或写操作期间启用的原语数量。该算法没有针对面积进行优化,可能比最小面积算法使用更多的BRAM和多路复用器。

在这里插入图片描述

比如在上述3k×16的Memory中,3个1k×18的垂直方向排列,3个输出通过多路复用器输出到RAM外。当地址处于0-1k时只有上面一个RAM被启用,其余两个RAM不用使能,因此可以降低功耗。

  • 固定原语

固定原语算法允许选择单个BRAM原语类型。内核通过在宽度和深度上连接这个单一的原语类型来构建内存。固定原语算法提供了16kx1、8kx2、4kx4、2kx9、1kx18和512x36原语的选择。

在这里插入图片描述

在这里插入图片描述

2.级联高度cascade_height综合属性

从上面的介绍我们可以发现,低功耗算法实际上是将多个RAM进行级联得到的,下面我们以32K×32bit的RAM为例,通过设置综合属性cascade_height来控制BRAM的级联高度,我们分别设置级联高度为1、32和8,所得结果如图所示:

在这里插入图片描述

图中1和2的方式看似很像,那我们换个图来看看二者的差别:

在这里插入图片描述

对于cascade_height=1的情况,在每一次读写地址时,每一个BRAM均被选通使能;而对于cascade_height=32的情况,在任何一次读写操作中,均只有一个RAM被宣统其他块不被使用,因此可以降低功耗。

那这样的话是不是cascade_height级联高度越大越好?当然不是,因为级联数越大,级联长度就越长,尽管有专用的级联走线,但毕竟要跨过时钟域,有可能无法实现;并且由于布线带来的延迟也可能会对时序造成很大影响。于是就有了图三的情况,在每一时刻激活4个RAM,既减小了功耗,又能够使走线带来的影响较小。

3.ram_decomp综合属性

这一节我们介绍一下ram_decomp综合属性,以8K×36bit为例:

在这里插入图片描述

①和③的效果是一样的,我们来分析②和④,我们可以发现两者的级联数都是2,但是二者对RAM36B36E1的配置方式不同,一种将其配置为9bit位宽,一种将其配置为36bit位宽,那为什么采用ram_decomp="power"后的功耗更低呢?

这是因为在同一时刻,对于4K×9的实现方式来说,每一时刻会激活并排的4个RAM,而1K×36的实现方式每一时刻只用激活1个RAM即可。但是对于④这种方式来说需要更多的多路复用器,一方面它需要在一列的两个RAM中选择出一个RAM数据进行输出,另一方面他还需要从并排的同一列四个RAM中(因为可能需要输出的数据并不在第一个BANK的两个RAM中)选择一个RAM数据进行输出,会消耗更多的资源,面积相比之下会大于②这种实现方式。

下面给出上述四种方式的功耗和资源使用情况:

实现方式功耗BRAMsLUT
default0.597824
cascade_height=20.78886
ram_decomp=“power”0.597824
cascade_height=2 ram_decomp=“power”0.610890

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

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

相关文章

Listview控件的5种视图

在C#中,ListView控件是用于显示和编辑列表数据的常用控件。它可以显示数据项的列表,并允许用户对列表中的数据进行操作。 ListView控件有五种视图模式,分别是: LargeIcon视图:在此视图中,每个数据项都显示…

详解xml-java语言

1.XML在线学习手册 XML 教程 2.XML可以做什么 1.给两个程序之间进行数据通信。现在用的最多的是JSON。 2.给服务器做配置文件。 3.存储复杂的数据关系。 4.还可以充当小型的数据库。 3.书写格式 <?xml version"1.0" encoding"UTF-8" ?> <…

ctfshow web入门 sql注入 web224--web233

web224 扫描后台&#xff0c;发现robots.txt&#xff0c;访问发现/pwdreset.php &#xff0c;再访问可以重置密码 &#xff0c;登录之后发现上传文件 检查发现没有限制诶 上传txt,png,zip发现文件错误了 后面知道群里有个文件能上传 <? _$GET[1]_?>就是0x3c3f3d60245…

#9松桑前端后花园周刊-React19beta、TS5.5beta、Node22.1.0、const滥用、jsDelivr、douyin-vue

行业动态 Mozilla 提供 Firefox 的 ARM64 Linux二进制文件 此前一直由发行版开发者或其他第三方提供&#xff0c;目前Mozilla提供了nightly版本&#xff0c;正式版仍需要全面测试后再推出。 发布 React 19 Beta 此测试版用于为 React 19 做准备的库。React团队概述React 19…

仅为娱乐,Python中如何重定义True为False?

在Python中&#xff0c;True 和 False 是内建的布尔常量&#xff0c;分别代表逻辑上的真和假。它们是不可变的&#xff0c;且在Python语言规范中具有特殊地位&#xff0c;不能被用户直接重定义。尝试给 True 或 False 赋予新的值是违反Python语言规则的&#xff0c;这样的操作会…

ESG视角下的多期DID构建(2009-2022年)4.5万+数据

随着ESG信息越来越受到重视&#xff0c;一些第三方评级机构开始推出ESG评级产品&#xff0c;目前在第三方数据库能够查到华证、富时罗素、商道融绿、社会价值投资联盟以及Wind自有的ESG评级数据等。其中&#xff0c;商道融绿是中国最早发布ESG评级数据的机构&#xff0c;也是国…

六淳科技IPO终止背后:十分着急上市,大额分红,实控人买豪宅

华西证券被暂停保荐业务资格6个月的影响力逐渐显现。 近日&#xff0c;深圳证券交易所披露的信息显示&#xff0c;东莞六淳智能科技股份有限公司&#xff08;下称“六淳科技”&#xff09;及其保荐人撤回上市申请材料。因此&#xff0c;深圳证券交易所决定终止对其首次公开发行…

esp32+mqtt协议+paltformio+vscode+微信小程序+温湿度检测

花费两天时间完成了这个项目&#xff08;不完全是&#xff0c;属于是在resnet模型训练和温湿度检测两头跑......模型跑不出来&#xff0c;又是第一次从头到尾独立玩硬件&#xff0c;属于是焦头烂额了......&#xff0c;完成这个项目后&#xff0c;我的第一反应是写个csdn&#…

【云原生】Pod 的生命周期(二)

【云原生】Pod 的生命周期&#xff08;一&#xff09;【云原生】Pod 的生命周期&#xff08;二&#xff09; Pod 的生命周期&#xff08;二&#xff09; 6.容器探针6.1 检查机制6.2 探测结果6.3 探测类型 7.Pod 的终止7.1 强制终止 Pod7.2 Pod 的垃圾收集 6.容器探针 probe 是…

从OutputStream类看Java中的IO流操作

哈喽&#xff0c;各位小伙伴们&#xff0c;你们好呀&#xff0c;我是喵手。运营社区&#xff1a;C站/掘金/腾讯云&#xff1b;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点&#xff0c;并以文字的形式跟大家一起交流&#xff0c;互相学习&#xff0c;一…

VueComponent构造函数

//创建school组件——注册给谁 在谁的结构上写const school Vue.extend({name: school,//开发者工具的显示template: <div><h2>学校名称&#xff1a;{{schoolName}}</h2><h2>学校地址&#xff1a;{{adress}}</h2> </div>,//结构data() {…

学习笔记:【QC】Android Q - data 模块

一、data init 流程图 主要分为3部分&#xff1a; 1.加载TelephonyProvider&#xff0c;解析apns-config.xml文件&#xff0c;调用loadApns将 xml中定义的数据&#xff0c;插入到TelephonyProvider底层的数据库中 2.初始化phone、DcTracker、TelephonyNetworkFactory、Conne…

Docker网络基础

简介 Docker 本身的技术依赖于近年来 Linux 内核虚拟化技术的发展,Docker 对 Linux 内核的特性有很强的依赖。Docker 使用到的与 Linux 网络有关的主要技术有:网络命名空间、veth 设备对、网桥、ipatables 、路由。 网络命名空间 为了支持网络协议栈的多个实例,Linux在网络栈…

Unity类银河恶魔城学习记录 17-1,2 p166 Aliments fx p167 Blackhole additional vfx

Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释&#xff0c;可供学习Alex教程的人参考 此代码仅为较上一P有所改变的代码 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili Entity.cs using System.Collections; using System.Collections.Generic; …

大型语言模型安全风险的基准评估套件

CYBERSECEVAL 2 扩展了以前的工作&#xff0c;增加了两个新的测试套件&#xff1a;解释器滥用和提示注入。 原文标题&#xff1a;CYBERSECEVAL 2: A Wide-Ranging Cybersecurity Evaluation Suite for Large Language Models 原文作者&#xff1a;Manish Bhatt, Sahana Chennab…

奶爸预备 |《伯克毕生发展心理学.从0岁到青少年》 / (美) 劳拉·E. 伯克著——读书笔记

目录 引出第一篇 人的发展理论与研究第1章 历史、理论和研究方法 第二篇 发展的基础第2章 生物基础与环境基础第3章 孕期发育、分娩及新生儿 第三篇 婴儿期和学步期&#xff1a;0~2岁第4章 婴儿期和学步期的身体发育第5章 婴儿期和学步期的认知发展第6章 婴儿期和学步期的情绪与…

【Git】【MacOS】Github从创建与生成SSH公钥

创建账号 这一步不过多赘述&#xff0c;根据自己的邮箱新创建一个账号 配置SSH公钥 本人是macOS系统&#xff0c;首先从终端输入 cd ~/.ssh进入.ssh目录,然后通过 ls查看有没有一个叫做id_rsa.pub的文件 本人之前生成过SSH公钥,如果没有的话&#xff0c;通过 ssh-keygen -t…

双重检验锁方式实现单例模式

单例模式&#xff08;Singleton Pattern&#xff09;&#xff1a;是指在内存中只会创建且仅创建一次对象的设计模式。在程序中多次使用同一个对象且作用相同时&#xff0c;为了防止频繁地创建对象使得内存飙升&#xff0c;单例模式可以让程序仅在内存中创建一个对象&#xff0c…

Ansible自动化运维工具单模块介绍

前言 自动化运维是指利用自动化工具和技术来简化、自动化和优化IT基础设施的管理和运维过程&#xff0c;从而提高效率、降低成本&#xff0c;并减少人为错误。在当今复杂的IT环境中&#xff0c;自动化运维已经成为许多组织和企业提高生产力和保证系统稳定性的重要手段。Ansibl…

xyctf(write up)

ezhttp 因为是一道http的题&#xff0c;前端代码没有什么有效信息&#xff0c;但提示说密码在某个地方&#xff0c;我们用robots建立一个robots.txt文件来看有哪个文件可以访问 补充知识&#xff1a;http请求中via字段表示从哪个网址的服务器代理而来&#xff0c;user-agent表…