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
    +关注

    关注

    1602

    文章

    21320

    浏览量

    593192
  • 存储器
    +关注

    关注

    38

    文章

    7148

    浏览量

    161985
  • RAM
    RAM
    +关注

    关注

    7

    文章

    1321

    浏览量

    113705
  • 内存
    +关注

    关注

    8

    文章

    2767

    浏览量

    72764
  • 触发器
    +关注

    关注

    14

    文章

    1677

    浏览量

    60402
收藏 人收藏

    评论

    相关推荐

    FPGA经典试题】FPGA内部资源模块——打响FPGA学习第一炮

    在一起,VCCO 电压相同是接口标准的基本条件。2. 可配置逻辑(CLB)CLB 是FPGA 内的基本逻辑单元。CLB 的实际数量和特性会依器件的不同而不同,但是每个CLB 都包含一个可配置开关矩阵,此矩阵由4
    发表于 03-08 11:03

    基于FPGA的HDTV视频图像灰度直方图统计算法设计

    系列以18Kbits 为一,在规模最小的型号XC3S100E 上集成了4 这样的内存,如图2 所示:图2 Spartan-3E 系列FPGA 集成的Block
    发表于 05-14 12:37

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

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

    FPGARAM有与其他产品有什么不同?

    实现了不同的逻辑功能。查找表(Look-Up-Table) 简称为LUT,LUT 本质上就是一个RAM。目前FPGA 多使用4 输入的LUT,所以每一个LUT 可以看成一个有4 位地址线的 的
    发表于 08-23 09:14

    如何在ram中加载RGB的所有值?

    套件的rams,另一个ram用于存储另一个与R G B阵列相同的可变温度。Xilinx已经提到XC5LX110T具有5328Kb的内部RAM
    发表于 01-30 08:36

    分布RAM怎么异步读取

    我打算在Virtex7器件中使用分布RAM作为单端口RAM,用于我的滤波器设计。 RAM将初始配置,然后只有读取将从RAM开始。我的读地址
    发表于 04-16 09:52

    介绍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

    3系列FPGA中使用LUT构建分布RAM(1)

    在赛灵思Spartan-3、3E等系列的FPGA中,其逻辑单元CLB中一般含有不同数量的单端口RAM(SRAM)或者双端口RAM(DRAM),这里的“单”或者“双”是由我们开发人员定义的。
    发表于 02-11 13:56 6382次阅读
    3系列<b class='flag-5'>FPGA</b>中使用LUT构建<b class='flag-5'>分布</b>式<b class='flag-5'>RAM</b>(1)

    3系列FPGA中使用LUT构建分布RAM(3)

    前面简要介绍了Spartan-3系列FPGA分布RAM的基本特性。为什么不从更高级的Virtex系列入手呢?我仔细看了一下各个系列的介绍、对比,Spartan系列基本就是Virte
    发表于 02-11 13:57 1188次阅读
    3系列<b class='flag-5'>FPGA</b>中使用LUT构建<b class='flag-5'>分布</b>式<b class='flag-5'>RAM</b>(3)

    _FPGA内部的RAM M9K

    FPGA内部的RAM M9K
    发表于 04-07 11:40 4次下载

    FPGARAM存储资源详细资料说明

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

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

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

    fpga双口ram的使用

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