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

这篇具有很好参考价值的文章主要介绍了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,它也可以被拆分成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数量和分布情况有所不同。

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

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

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

三、BRAM的使用 

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

1、RAM

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

(1)Single Port :单口 RAM

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

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

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

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

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

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

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

 (3)True Dual Port:真双口 RAM

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

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

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

 2、ROM

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

(1)Single Port :单口 ROM

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

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

(2)Dual port:双端口 ROM

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

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

3、FIFO

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

        FIFO的作用:

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

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

                (3)数据缓存

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

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

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

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

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

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

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

1、可选输出寄存器

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

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

2、BRAM的级联 

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

FPGA原理与结构(8)——块RAM(Block RAM,BRAM),FPGA原理与结构,fpga开发文章来源地址https://www.toymoban.com/news/detail-714120.html

到了这里,关于FPGA原理与结构(8)——块RAM(Block RAM,BRAM)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • FPGA原理与结构(6)——分布式RAM(Distributed RAM,DRAM)

    系列文章目录:FPGA原理与结构(0)——目录与传送门 目录 一、RAM概述 1、RAM基本概念 2、FPGA中RAM的分类 二、DRAM详解 1、FPGA资源         2、DRAM的配置形式 2.1 Single-Port(单端口) 2.2 Dual-Port(双端口) 2.3 Quad-Port(四端口) 2.4 Simple Dual-Port(简单双端口) 2.5 更大深度  

    2024年02月08日
    浏览(25)
  • FPGA原理与结构——RAM IP核的使用与测试

    系列文章目录:FPGA原理与结构(0)——目录与传送门 目录 一、前言 二、RAM IP核定制 1、RAM IP核 step1 打开vivado工程,点击左侧栏中的IP Catalog step2 在搜索栏搜索RAM,找到Block Memory Generator IP核: 2、IP核定制 step3 Baisc界面定制 step4 端口定制 step5 Other Options step6 Summary 3、IP核例化

    2024年02月11日
    浏览(27)
  • FPGA原理与结构——可配置逻辑块CLB(Configurable Logic Block)

    系列文章目录:FPGA原理与结构(0)——目录与传送门         可配置逻辑块CLB(Configurable Logic Block)是xilinx系类FPGA的基本逻辑单元(在各系列中CLB可能有所不同,以下我们主要讨论Xilinx 7系类),是实现时序逻辑电路和组合逻辑电路的主要逻辑资源。         一般来说

    2024年02月12日
    浏览(29)
  • FPGA原理与结构(1)——可配置逻辑块CLB(Configurable Logic Block)

    系列文章目录:FPGA原理与结构(0)——目录与传送门         可配置逻辑块CLB(Configurable Logic Block)是xilinx系类FPGA的基本逻辑单元(在各系列中CLB可能有所不同,以下我们主要讨论Xilinx 7系类),是实现时序逻辑电路和组合逻辑电路的主要逻辑资源。         一般来说

    2024年02月08日
    浏览(30)
  • FPGA中RAM的结构理解

    看代码的过程中对RAM的结构不是很理解,搞脑子一片浆糊,反复推算,好不容易理清了思路,记录下来,防止忘记。开辟的RAM总容量为128bytes,数据的位宽为32位(即一个单元有32bit数据) RAM结构示意图:

    2024年02月16日
    浏览(29)
  • 从底层结构开始学习FPGA(6)----分布式RAM(DRAM,Distributed RAM)

    文章目录 系列目录与传送门 一、什么是RAM?什么是ROM? 二、块RAM和分布式RAM 2.1、BRAM

    2024年02月02日
    浏览(27)
  • FPGA原理介绍 (CLB, LUT, 进位链, 存储元素, RAM)

    本文首先对 ASIC 和 FPGA 进行了一个对比,然后介绍了 FPGA 的基本结构,最后解释了 FPGA 实现可编程的基本原理。 这里先给出 ASIC 和 FPGA 的优缺点 ASIC FPGA 优点 性能优越 可靠性高 大批量下单位成本低 开发初期无投入资金壁垒 设计工具使用方便,设计简单快速 产品原型机开发

    2024年02月20日
    浏览(32)
  • FPGA图像处理之Shift-RAM Core 生成卷积模板(官方手册原理分析)

    一、引言         当我们进行图像处理算法时,进行均值滤波、中值滤波等相关的计算操作时, 其中的核心部分应该就是矩阵运算了, 需要生成图像像素矩阵,在 C 语言中,我们可以直接用数组表示,但是在使用 FPGA 进行图像处理时, verilog 却无法实现这样的操作。 那

    2023年04月10日
    浏览(27)
  • 从底层结构开始学习FPGA(1)----可配置逻辑块CLB(Configurable Logic Block)

    文章目录         系列目录与传送门         一、CLB概述         二、SLICEM与SLICEL         三、查找表LUT         3.1、移位寄存器SRL         3.2、分布式DRAM          四、多路选择器MUX         五、存储单元Storage Elements(FF)         六、进

    2024年02月02日
    浏览(36)
  • [FPGA IP系列] 2分钟了解FPGA中的BRAM

    FPGA设计中,BRAM是一项非常关键的内置存储资源,FPGA开发需要熟练使用BRAM,今天再复习一下BRAM的知识,包括BRAM的定义、组成、应用等等。 RAM是Random Access Memory,也就是随机访问数据存储器,RAM的内部是一个一个小内存单元(可以看成是一个小格子)组成。 每个内存单元都对应

    2024年02月12日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包