0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

FPGA中块RAM的分布和特性

CHANBAEK 来源:硬件王国 作者: 小山哥 2023-11-21 15:03 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

导读:

在选择FPGA时,关注LUT(Look-Up Table)和BRAM(Block RAM)是非常重要的,因为它们是FPGA架构中的两个核心资源,对于设计的性能和资源利用至关重要。

BRAM(Block Random Access Memory,随机存取内存块),块RAM是嵌在FPGA内部、固定大小(容量)的硬IP。

为什么要嵌入丰富的块RAM?对于需要大量存储器的应用,比如需要大规模的数据存储,如图像、视频、音频等,块RAM是一个理想的选择。块RAM提供了高密度的存储,能够有效地存储和检索大量数据;对于需要频繁访问的数据,块RAM可以用作数据缓存;一些算法可能需要大量的中间数据存储,使用块RAM可以提供快速且容量大的存储,用来支持这些算法的运行;异步时钟域之间的数据传输通常需要使用FIFO(First-In-First-Out)缓冲区。

在FPGA开发中,使用块RAM的多少取决于设计的性质和对性能的需求。在设计过程中,通过合理的资源规划和优化,可以有效地利用块RAM以满足应用的需求。

注:以xilinx7系列690T为例

块RAM的分布

图片

图1:产品选型指南

一些应用可能更加侧重于逻辑资源,而另一些应用可能更加侧重于存储资源,如上图1所示,以690t为例,Block RAM总数目为1470,总容量为52920kb。上图中的Distributed RAM 是 FPGA中的一种内置存储器资源。与块RAM不同,分布式RAM分散在FPGA的逻辑区域中,而不是集中在特定的块中。分布式RAM主要由可编程逻辑元件(LUTs)和触发器(Flip-Flops)组成。每个LUT都有一些存储单元,用于存储少量的数据。这些存储单元可以被组合起来,形成一个分布式的存储器。简单的说Distributed RAM就是FPGA用内部的逻辑单元拼凑而来的。一般较少使用,本文不重点讨论。

图片

图2:7系列 块RAM资源

如图2可知,690T一共包含1470个块RAM,一个有15“列” 36Kb的BRAM,每“列”有100个36Kb的BRAM。结合下文图3、图4用Vivado打开实际device(690T)的视图说明,看过我前面文章的读者可知,690T一共20个时钟区域,图4是将图3最上方4个时钟区域放大后的截图,先看图4,其中每一个小红箭头代表1“列”36kb的BRAM,一共15个小红箭头(每以列共100个36kb的BRAM)。细心的读者可能发现,图2的表格一共有15列,每列100个,总数应该是1500个,为什么图2的表格总数只有1470?答案就在图3里面,因为有一些BRAM已经分配给一些高速硬核使用了,比如690T的PCIe 硬IP。

图片

图3:Device视图

图片

图4:Device视图(图3最上方4个时钟区域放大截图)

图片

图5:工程“综合实现”后的资源消耗指示图

图5是笔者基于690T开发的一个实际工程综合实现后的资源消耗,BRAM一共使用273个,评估你所选择的FPGA是否合适,最主要就是看逻辑资源和BRAM使用情况,当然特殊要求除外(如DSP、其他硬IP等)

块RAM的特性和按“列”分布原因

FPGA块RAM的特性很多,读者不在这里细述每一个特性,读者自行参考厂商原文档,因为是硬IP。可能每个厂商支持的特性各不相同,使用时需要注意几点的是:

  • 每个块RAM均可存储最多36 Kbits的数据(每个厂商的内嵌的块大小可能不一样);
  • 支持将一个单独的36Kb块RAM分成两个独立的18Kb块使用(具体看厂商规格书);
  • 两个相邻的块RAM可以组合成一个更深的64K x 1内存(具体看厂商规格书);
  • 支持端口模式(简单双端口(SDP)、真双端口(TDP)。(具体看厂商规格书)。

FPGA中的块RAM按列分布的设计选择通常是出于性能和资源利用的考虑。这种设计决策涉及到FPGA内部架构和数据流的优化。

  1. 性能优化: FPGA内部的块RAM通常是在每个列中集中分布。这样设计有助于减小数据路径的长度,从而减小延迟,提高访问速度。如果块RAM散布在整个FPGA芯片上,可能需要更长的路径来连接块RAM和其他逻辑单元,导致性能下降。
  2. 资源共享: FPGA中的资源是有限的,通过将块RAM集中在每个列中,可以更好地进行资源共享。这有助于防止资源争用和碎片化,使得在某一列中的块RAM更容易分配给邻近的逻辑单元,减少资源冲突。
  3. 时序和布线简化: FPGA中的时序分析和布线操作通常是按列进行的。将块RAM集中在每一列中可以简化时序分析,减小时序问题的复杂性,使得设计更容易达到目标时钟频率。

总结

按列分布块RAM是一种有效的设计选择,有助于提高性能、优化资源利用,并简化时序和布线操作。不过,具体的FPGA架构和设计工具可能会有一些差异,因此在具体的FPGA系列和工具链中可能会有一些微妙的差异。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1656

    文章

    22288

    浏览量

    630378
  • 存储器
    +关注

    关注

    39

    文章

    7715

    浏览量

    170868
  • RAM
    RAM
    +关注

    关注

    8

    文章

    1398

    浏览量

    119832
  • 内存
    +关注

    关注

    9

    文章

    3173

    浏览量

    76119
  • 触发器
    +关注

    关注

    14

    文章

    2051

    浏览量

    63048
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    FPGA芯片内部结构解析(2)

    FPGA内嵌的存储器单元包括RAM(BRAM)和分布RAM
    发表于 08-15 16:11 1774次阅读
    <b class='flag-5'>FPGA</b>芯片内部结构解析(2)

    Quartus II 定制的RAM分布式的还是

    Quartus II 定制的RAM分布式的还是
    发表于 03-10 17:51

    介绍FPGA开发板内部ram操作

    用途)。较小的RAM位于较小的Blockram(Altera这样做),或者位于“分布RAM
    发表于 09-10 11:11

    Vivado的多种RAM编写方式

    Vivado综合可以理解多种多样的RAM编写方式,将其映射到分布RAMRAM。两种实现方
    发表于 09-29 09:40

    FPGA设计如何用LUT组建分布式的RAM

    一、查找表LUT就是查找表,对于4输入的LUT而言,实际上就是4位地址位,一位数据位的存储器,能够存储16位数据,所以我们在FPGA设计可以用LUT组建分布式的RAM。这样也可以解释
    发表于 07-28 08:42

    FPGA内嵌的RAM在FFT算法的应用

    在现代逻辑设计FPGA占有重要的地位,不仅因为具有强大的逻辑功能和高速的处理速度,同时因为其内部嵌有大量的可配置的RAM,使其得到了广泛地应用,例如FFT算法的实现等。
    发表于 09-27 17:07 54次下载
    <b class='flag-5'>FPGA</b>内嵌的<b class='flag-5'>块</b><b class='flag-5'>RAM</b>在FFT算法<b class='flag-5'>中</b>的应用

    采用FPGA与IP来实现DDR RAM控制和验证的方法

    随着高速处理器的不断发展,嵌入式系统应用的领域越来越广泛,数字信号处理的规模也越来越大,系统RAM规模不断增加。现场可编程门阵列(FPGA)已广泛应用于嵌入式系统。现在很多
    发表于 11-24 16:00 4625次阅读
    采用<b class='flag-5'>FPGA</b>与IP来实现DDR <b class='flag-5'>RAM</b>控制和验证的方法

    技术控:FPGARAM使用技巧探索

    FPGARAM的使用探索。以4bitX4为例,数据位宽为4,深度为4。
    的头像 发表于 03-28 17:07 1.1w次阅读
    技术控:<b class='flag-5'>FPGA</b><b class='flag-5'>中</b><b class='flag-5'>RAM</b>使用技巧探索

    Spartan-6 FPGARAM的技术参考资料免费下载

    本指南是描述所有Spartan-6 FPGA可用的Spartan®6 FPGARAM的技术参考。
    发表于 02-15 16:38 14次下载
    Spartan-6 <b class='flag-5'>FPGA</b><b class='flag-5'>块</b><b class='flag-5'>RAM</b>的技术参考资料免费下载

    详细介绍关于FPGA开发板内部ram是如何操作的

    设计来增设全新的芯片功能,据此实现了芯片整体构造的简化与性能提升。下面英尚微电子介绍FPGA开发板内部ram是如何操作的。 除逻辑外,所有新的FPGA都有专用的静态ram
    发表于 07-20 14:26 2602次阅读
    详细介绍关于<b class='flag-5'>FPGA</b>开发板内部<b class='flag-5'>ram</b>是如何操作的

    FPGARAM存储资源详细资料说明

    本文档的主要内容详细介绍的是FPGARAM存储资源详细资料说明包括了:1、 FPGA存储资源简介,2、 不同厂家的 Block RAM 布局,3、
    发表于 12-09 15:31 11次下载
    <b class='flag-5'>FPGA</b>的<b class='flag-5'>RAM</b>存储资源详细资料说明

    FPGAblock ram的特殊用法列举

    FPGAblock ram是很常见的硬核资源,合理的利用这些硬件资源一定程度上可以优化整个设计,节约资源利用率,充分开发FPGA芯片中的潜在价值,本文结合安路科技
    的头像 发表于 12-24 14:28 1818次阅读

    使用FPGA调用RAM资源的详细说明

    FPGA可以调用分布RAMRAM两种RAM,当我们编写verilog代码的时候如果合理的编
    发表于 12-30 16:27 9次下载

    FPGA在一个时钟周期可以读取多个RAM数据吗?

    设计都涉及到对RAM的读写操作。在FPGA芯片中,RAM也叫做存储(Block RAM),可以存储大量的数据。
    的头像 发表于 10-18 15:28 1949次阅读

    fpga双口ram的使用

    FPGA双口RAM的使用主要涉及配置和使用双端口RAM模块。双端口RAM的特点是有两组独立的端口,可以对同一存储进行读写操作,从而实现并行
    的头像 发表于 03-15 13:58 1978次阅读