FPGA原理与结构(8)——块RAM(Block RAM,BRAM)

系列文章目录:FPGA原理与结构(0)——目录与传送门

一、BRAM简介

        大家对于RAM应该并不陌生,RAM就是一张可读可写的存储表,它经常被拿来与ROM进行对比,相比之下,ROM只可读。而在FPGA中,RAM一般可以分成两种,一种是使用LUT资源组成的分布式RAM(DRAM),另一种就是块RAM(BRAM),这里我们讨论的是BRAM,关于DRAM的内容,可以阅读:FPGA原理与结构——分布式RAM(Distributed RAM,DRAM)。

        BRAM就是嵌入在FPGA中的整块的RAM资源,是FPGA中重要的存储资源。在早期的FPGA架构中,基本上只使用基于查找表和触发器的逻辑块实现用户电路,可用作存储要素的就只有逻辑块中的触发器。因此很难在芯片上保存大量数据,而有这样需求的应用需要在FPGA上连接外部存储器。但是在很多情况下,FPGA和外部存储器的带宽会成为系统的瓶颈,从而限制整体性能。因此商用的FPGA架构在发展中开始集成高效的片上存储器。这就是我们BRAM的由来。

二、BRAM的特性和分布

        在xilinx 7系类的FPGA里,一个BRAM的大小是36Kb(这里的K代表的是1024,而不是1000),它也可以被拆分成2个独立的18Kb BRAM来使用,这就是xilinx 7系类里RAM的最小实现形式了。也就是说使用的BRAM在使用的时候必须是整块进行使用的,一块BRAM最小就是18Kb。举个例子,我们需要存储40Kb的资源,就需要使用:一块36Kb的RAM+一块18Kb的RAM,这样就造成了14Kb的资源浪费。

        两个相邻的RAM还可以组合来构成更大的RAM。

        每块36Kb的RAM根据深度和位宽的不同,可以配置成如下形式(深度×位宽):32K x 1, 16K x 2, 8K x 4, 4K x 9, 2K x 18, 1K x 36, or 512 x 72。

        每块18Kb的RAM根据深度和位宽的不同,可以配置成如下形式(深度×位宽):16K x 1, 8K x2 , 4K x 4, 2K x 9, 1K x 18 or 512 x 36。

        根据FPGA型号的不同,每块FPGA中蕴含的BRAM资源数量也是不一样的,用户可以根据自己的需求和成本选择最适合自己的型号,我们以下图为例,这只是xilinx的一部分型号对应的BRAM资源,可以看到不同的device对应的BRAM数量和分布情况有所不同。

         在如今xilinx的FPGA中普遍使用的是ASMBL架构,所以BRAM在FPGA也是按列分布的。

三、BRAM的使用 

        BRAM的作用是非常巨大的,也是具有一定复杂性的,BRAM可以被配置成RAM,ROM或者FIFO,我们一个一个来讨论。

1、RAM

        首先就是最直观的RAM的情况,但是就算是用作RAM,也有着许多不同的工作模式:

(1)Single Port :单口 RAM

        读写共用一个地址总线,在同一个端口,但是不能同时进行

 (2)Simple dual port:简单双口 RAM

         一个写通道,一个读通道,通过A端口写入数据的同时可以通过B端口读出数据

 (3)True Dual Port:真双口 RAM

         两个通道都支持读写,互相独立。A端口和B端口可同时读写数据

 2、ROM

         ROM其实也非常好理解,甚至是BRAM应用中最简单的部分,因为ROM可以理解成只具备读功能,不具备写功能的RAM。

(1)Single Port :单口 ROM

        不能写入,只有一个端口用于数据读

(2)Dual port:双端口 ROM

        不可写,但是有2个端口用于读,两个端口读取数据的位宽可以不同,但是必须是整数倍关系

3、FIFO

        FIFO是英文First In First Out 的缩写,是一种先进先出的数据缓存器,与普通存储器的区别是没有外部读写地址线,使用简单,缺点就是只能顺序读、写入数据,其数据地址由内部读写指针自动加1完成,不能像普通存储器那样可以由地址线决定读取或写入某个指定的地址。

        FIFO的作用:

                (1)不同时钟域之间的数据传输;

                (2)对不同宽度的数据位宽转换;

                (3)数据缓存

        根据FIFO工作的时钟域,可以将FIFO分为:

        (1)同步FIFO:读时钟和写时钟为同一个时钟,在时钟沿来临时同时发生读写操作。

               作用:位宽转换或数据缓存。

        (2)异步FIFO:读写时钟不一致,读写操作是互相独立的。

               作用:多比特数据跨时钟域。

 四、7系类BRAM的一些额外特性

1、可选输出寄存器

        BRAM的输出还内嵌了个寄存器,我们打拍输出的时候可以使用它,这样就能省下SLICE上的寄存器资源,而且就算我们使用SLICE的FF资源,会引入一个较大的时延,这样做还能降低时延问题。

2、BRAM的级联 

        在xilinx的FPGA里,2块相邻的BRAM可以在不消耗CLB资源的情况下就级联形成更大的RAM。任意两个相邻的BRAM都可以进行级联

五、为什么是最小是18kb

        在Xilinx FPGA中,块RAM(BRAM)的大小选择,如18KB,是基于多方面考虑的结果,包括技术限制、市场需求、设计灵活性以及与现有架构的兼容性等因素。尽管Xilinx没有公开详细解释为什么特定选择了18KB作为BRAM的大小,但我们可以推测这一选择背后的几个可能原因:

5.1 技术和制造的限制

  • 制造效率:在半导体制造过程中,对硅片空间的利用是一个重要考虑因素。18KB的大小可能代表了一种在提供充足的存储容量和保持良好的芯片制造效率之间的平衡。

  • 性能与功耗:BRAM的大小影响其访问速度和功耗。18KB可能是在满足大多数应用需求的存储容量和保持较低功耗之间的优化结果。

5.2 设计灵活性

  • 应用适应性:18KB的BRAM大小提供了足够的灵活性,能够适应各种不同的应用场景,从简单的缓存到复杂的数据结构存储等。它允许设计师根据需要将多个BRAM组合使用,以满足更大的存储需求。

  • 细粒度资源管理:通过提供18KB的BRAM单元,Xilinx FPGA允许开发者更细致地管理和优化他们设计中的内存资源。这有助于提高整个系统的效率和性能。

5.3 向后兼容性与标准化

  • 保持兼容性:在新的FPGA系列中采用18KB作为BRAM单元的标准大小,有助于保持与旧设计的兼容性,使得设计迁移和升级更加容易。

  • 行业标准:随着时间的发展,某些内存大小可能会成为设计中的非正式标准。虽然18KB可能起初是基于技术限制和性能优化的考虑,但它也可能适应了市场上常见的应用需求,从而成为了一种常见的配置选项。

        总而言之,18KB BRAM的选择反映了在满足广泛应用需求、优化性能和功耗、以及提供设计灵活性方面的综合考量。这样的设计决策使Xilinx FPGA能够适应各种不同的使用场景,同时保持高效的资源利用和良好的制造经济性。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

图灵奖2023:Avi Wigderson的开创性贡献揭示计算中的随机性和伪随机性

文章目录 每日一句正能量前言背景什么是理论计算机科学?为什么随机性很重要?三篇影响深远的论文Avi Wigderson在计算复杂性理论方面的贡献及其对现代计算的影响Avi Wigderson对随机性和伪随机性在计算中作用的理解及其实际应用Avi Wigderson的学术生涯和…

用于密集视觉冲击的紧凑三维高斯散射Compact 3D Gaussian Splatting For Dense Visual SLAM

Compact 3D Gaussian Splatting For Dense Visual SLAM 用于密集视觉冲击的紧凑三维高斯散射 Tianchen Deng 邓天辰11Yaohui Chen 陈耀辉11Leyan Zhang 张乐妍11Jianfei Yang 杨健飞22Shenghai Yuan 圣海元22Danwei Wang 王丹伟22Weidong Chen 陈卫东11 Abstract 摘要 …

008、Python+fastapi,第一个后台管理项目走向第8步:ubutun 20.04下安装vscode+python环境配置

一、说明 白飘了3个月无影云电脑,开始选了个windows server 非常不好用,后台改为ubuntu想升级到22,没成功,那就20.04吧。 今天先安装下开发环境,后续2个月就想把他当做开发服务器,不知道行不行,…

行式存储VS列式存储对比

行式存储: 一行代表一个记录的所有字段。 可以快速读取和写入单条记录。 如果要检索一条数据,数据库会读取or写入整条记录,包含所有相关字段。 列式存储: 表中每一列的数据连续存放。这种方式在需要对某一列进行大量运算或分析时…

PSAvatar:一种基于点的可变形形状模型,用于3D高斯溅射的实时头部化身创建

PSAvatar: A Point-based Morphable Shape Model for Real-Time Head Avatar Creation with 3D Gaussian Splatting PSAvatar:一种基于点的可变形形状模型,用于3D高斯溅射的实时头部化身创建 Zhongyuan Zhao1,2, Zhenyu Bao1,2, Qing Li1, Guoping Qiu3,…

计算机虚拟机服务器中了mallox勒索病毒怎么办Mallox勒索病毒解密流程工具

在当今社会,人们的工作生活离不开网络,尤其企业离不开网络办公,网络为企业提供了极大便利,大大提升了企业的生产效率与办公水平,但网络是一把双刃剑,在为企业提供便利的同时也为企业的数据带来严重威胁。近…

【攻防世界】warmup

[HCTF 2018]WarmUp全网最详细解释_[hctf 2018]warmup的解-CSDN博客 php://filter 读取源码(文件) php://input 执行php代码,需要post请求提交数据 Content-Type为image/jpeg text. 绕过后缀的有文件格式有php,php3,php4,php5,pht…

探索企业级应用开发解决方案

1、什么是企业级应用 企业级应用是指为商业组织、大型企业创建并部署的应用。 企业级应用的结构复杂、涉及的外部资源众多、事务密集、数据量大、用户数多,需要较强的安全性。其特点有: (1)海量数据持久保存。 (2&a…

不出天府锋巢直播产业基地,即可激活电商直播产业、产教融合及人才培训服务

天府锋巢直播产业基地打造直播产业产教融合及人才培训服务新模式,携手政府、企业、高校,促进直播产业与创新人才双向奔赴,推进教学与实战深度融合,推动实习与就业无缝衔接。 各方资讯一应俱全 直播产业产教融合及人才培训服务全套…

LabVIEW光学探测器板级检测系统

LabVIEW光学探测器板级检测系统 特种车辆乘员舱的灭火抑爆系统广泛采用光学探测技术来探测火情。光学探测器作为系统的关键部件,其探测灵敏度、响应速度和准确性直接关系到整个系统的运行效率和安全性。然而,光学探测器在长期使用过程中可能会因为灰尘污…

京东商品详情API接口(商品属性丨sku价格丨详情图丨标题等数据)

京东商品详情API接口是京东开放平台提供的一种API接口,通过调用该接口,开发者可以获取京东商品的标题、价格、库存、月销量、总销量、详情描述、图片等详细信息。下面针对您提到的商品属性、SKU价格、详情图以及标题等数据,做具体介绍&#x…

NL2SQL进阶系列(4):ConvAI、DIN-SQL、C3-浙大、DAIL-SQL-阿里等16个业界开源应用实践详解[Text2SQL]

NL2SQL进阶系列(4):ConvAI、DIN-SQL等16个业界开源应用实践详解[Text2SQL] NL2SQL基础系列(1):业界顶尖排行榜、权威测评数据集及LLM大模型(Spider vs BIRD)全面对比优劣分析[Text2SQL、Text2DSL] NL2SQL基础系列(2)&#xff1a…

用Cmake编译程序时,链接到FFmpeg库

用Cmake编译程序时,链接到FFmpeg库 一、前言 可喜可贺,折腾了一晚上终于把这个勾八链接成功了,已经要吐了。看到下面控制台的输出,吾心甚慰呀😭 [100%] Linking CXX executable rknn_yolov5_demo [100%] Built targe…

如何解决selenium无头浏览器访问页面失败问题!!

无头浏览器简介 无头浏览器(Headless browser)是一种没有图形用户界面(GUI)的网络浏览器。它可以在后台运行,并通过编程接口进行控制和操作,而不需要显示界面。通常,传统的浏览器如 Chrome、Fi…

STL体系结构与各容器基本介绍

STL体系结构与各容器基本介绍 STL体系结构基本容器序列式关联式&#xff08;查找更快&#xff09;其他&#xff08;不常用&#xff09;使用分配器 STL体系结构 六大模块 容器算法迭代器适配器仿函数分配器 基本容器 序列式 array c11新标准array<类型&#xff0c;大小&…

C++:Hash应用【位图与布隆过滤器】

什么是位图&#xff1f; 我们先来看一个问题&#xff1a; 给40亿个不重复的无符号整数&#xff0c;没排过序。给一个无符号整数&#xff0c;如何快速判断一个数是否在 这40亿个数中。【腾讯】 如果我们使用unordered_set容器来解决&#xff0c;40亿个数据&#xff0c;每个数据…

FastGPT+ChatGLM3本地部署

FastGPTChatGLM本地部署 本地部署硬性要求&#xff1a;显存13g以上 关于环境的安装就不多赘述&#xff0c;conda pip 可以解决大部分问题 ChatGLM本地运行 m3e-basechatglm3-6b 在huggingface上可以下载上述模型&#xff0c;如果没有梯子可以使用huggingface镜像 从git…

OpenHarmony轻量系统开发【8】其它驱动开发示例

8.1代码示例 OpenHarmony代码中&#xff0c;Hi3861提供了绝大部分的驱动示例代码&#xff0c;文件路径&#xff1a; device\soc\hisilicon\hi3861v100\sdk_liteos\app\demo\src 开发者可以参考&#xff0c;文件如下&#xff1a; 8.2如何使用 &#xff08;1&#xff09;创建文…

springMVC理解

springMVC是一种思想&#xff0c;将软件划分为&#xff0c;模型Model&#xff0c;视图View&#xff0c;控制器Controller。 MVC的工作原理&#xff1a;用户通过前端视图页面&#xff0c;发送请求到服务器&#xff0c;在服务器中请求被Controller接收&#xff0c;Controller调用…

科技助力上亿用户隐私安全保护,合合信息两款产品再获CCIA PIA星级标识

随着互联网技术的飞速发展&#xff0c;个人信息的收集、存储、使用和传输变得日益频繁&#xff0c;其泄露和滥用的风险也随之增加&#xff0c;个人信息保护已成为社会共同关注的热点议题。近期&#xff0c;“中国网络安全产业联盟&#xff08;CCIA&#xff09;数据安全工作委员…