BRAM底层原理详细解释(1)

目录

一、原语

二、端口简述

2.1 端口简介

2.2 SDP端口映射

三、端口信号含义补充说明

3.1 字节写使能(Byte-Write Enable)- WEA and WEBWE:

3.2 地址总线—ADDRARDADDR and ADDRBWRADDR

3.3 数据总线—DIADI, DIPADIP, DIBDI, and DIPBDIP & DOADO, DOPADOP, DOBDO, and DOPBDOP

3.4 级联—CASCADEINA, CASCADEINB, CASCADEOUTA, and CASCADEOUTB


        在阅读本文之前,建议对BRAM有一个基本的了解,可以先阅读:

FPGA原理与结构(8)——块RAM(Block RAM,BRAM)icon-default.png?t=N7T8https://ztzhang.blog.csdn.net/article/details/132253916

一、原语

        在xilinx 7 系列的FPGA中,有2个BRAM的原语:RAMB18E1,RAMB36E1。这两个就是所有BRAM配置的基本块,其他的BRAM原语和宏模块都是基于这两个原语的。

        我们以RAMB36E1为例,下图展示了这个原语对应模块的具体结构:

二、端口简述

2.1 端口简介

        RAMB36E1的输入输出端口含义如下:

端口名称描述在SDP模式下的映射
DIADI[31:0]端口A的输入数据总线详见下文SDP端口映射
DIPADIP[3:0]
端口A的输入校验总线详见下文SDP端口映射
DIBDI[31:0]端口B的输入数据总线详见下文SDP端口映射
DIPBDIP[3:0]
端口B的输入校验总线详见下文SDP端口映射
ADDRARDADDR [15:0]
端口A的地址总线读地址总线
ADDRBWRADDR[15:0]
端口B的地址总线写地址总线
WEA[3:0]
端口A的字节位写使能不使用
WEBWE[7:0]
端口B的字节位写使能字节位写使能
ENARDEN
端口A使能信号写使能
ENBWREN
端口B使能信号读使能
RSTREGARSTREG
同步输出寄存器A置位/复位同步输出寄存器置位/复位
RSTREGB
同步输出寄存器B置位/复位
RSTRAMARSTRAM
同步输出锁存器A置位/复位同步输出锁存器置位/复位
RSTRAMB
同步输出锁存器B置位/复位
CLKARDCLK
端口A时钟输入读时钟
CLKBWRCLK
端口B时钟输入写时钟
REGCEAREGCE
端口A输出寄存器时钟使能输出寄存器时钟使能
REGCEB
端口B输出寄存器时钟使能
CASCADEINA
端口A级联输入不使用
CASCADEINB
端口B级联输入不使用
CASCADEOUTA
端口A级联输出不使用
CASCADEOUTB
端口B级联输出不使用
DOADO[31:0]
端口A输出数据总线详见下文SDP端口映射
DOPADOP[3:0]
端口A输出校验总线详见下文SDP端口映射
DOBDO[31:0]
端口B输出数据总线详见下文SDP端口映射
DOPBDOP[3:0]
端口B输出校验总线详见下文SDP端口映射

2.2 SDP端口映射

三、端口信号含义补充说明

3.1 字节写使能(Byte-Write Enable)- WEA and WEBWE:

        字节写使能信号,表示了写操作时的哪个(或多个)字节是有效的,这个信号的极性不可配置(高有效)。

        同时,写使能信号(WE)经常和使能信号(EN)配合使用。使能信号(EN)有效的情况下,写使能(WE)有效,进行写操作;写使能(WE)无效,进行读操作。这是针对单个端口而言的,对于单个端口,不可能同时发生读写,但是对一个BRAM的两个端口,就可能会发生读写冲突,因此需要考虑工作模式。

        工作模式:根据工作模式(WRITE_FIRST, READ_FIRST, NO_CHANGE),输出锁存器(output latches)将被加载或不加载。这决定了在写操作中数据是如何被处理的:

  • WRITE_FIRST:写操作首先发生,之后可能跟着一个读取操作。
  • READ_FIRST:首先读取当前存储器内容,然后写入新的数据。
  • NO_CHANGE:如果没有写入操作,则输出保持不变。

3.2 地址总线—ADDRARDADDR and ADDRBWRADDR

        对于RAMB18E1来说,地址总线的设置如下:

        对于RAMB36E1来说,地址总线的设置如下:

        值得注意的是,我们以RAMB18E1为例,它的地址总线的位宽为14bit,当端口的宽度被设置为1,地址总线位宽为14。这时,地址深度可以达到2^{14} = 16384 = 16Kb(K代表1024)。这就解释了为什么一个18Kb的BRAM根据深度和位宽的不同,可以配置成如下形式(深度×位宽):16K x 1, 8K x2 , 4K x 4, 2K x 9, 1K x 18 or 512 x 36。这里的16K × 1 ≠ 18K。同理,可以解释其他一系列的情况。

3.3 数据总线—DIADI, DIPADIP, DIBDI, and DIPBDIP & DOADO, DOPADOP, DOBDO, and DOPBDOP

        我们当就一个端口来看,例如A端口,和数据有关的总线总共有4条,分别是DIADI,DIPADIP,DOPDO,DOPADOP。这又可以分成:

  • 输入:DIADI,DIPADIP
  • 输出:DOPDO,DOPADOP

        单独就输入进行分析,DIADI[31:0]代表的是常规数据输入总线,DIPADIP[3:0]代表的是奇偶校验数据输入总线。但是其实,DIPADIP[3:0]是可以灵活配置实现的,它可以存储奇偶校验/纠错位或作为额外的数据位。这也就是为什么在使用RAMB36E1时,输入位宽可以被配置为36bit,而不是DIADI的32bit。

        这样做有很多的好处:

  • 数据和校验位的分离:通过为数据位和奇偶校验位(或错误校正位)提供独立的总线,设计可以更灵活地处理数据和校验信息。这对于某些需要高数据完整性和错误检测能力的应用尤其重要。
  • 合并数据总线和校验总线:在一些设计中,常规数据总线与校验位总线可以合并,这样做可以简化设计并可能减少所需的硬件资源。无论是独立的还是合并的配置,读/写和存储操作对所有位来说都是相同的,包括奇偶校验位。
  • 灵活性和可靠性:提供不同的数据宽度和校验配置增加了设计的灵活性,使设计师能够根据具体的应用需求和性能目标来优化存储器的结构。同时,包含奇偶校验或错误校正位的设计能够提高数据传输和存储过程中的可靠性。

3.4 级联—CASCADEINA, CASCADEINB, CASCADEOUTA, and CASCADEOUTB

        使用 CASCADEIN/CASCADEOUT 引脚将两个块 RAM (Block RAM,BRAM)连接起来,形成 64K x 1 模式,是一种扩展存储容量和功能的方法。这种配置允许两个BRAM单元串联工作,通过将一个BRAM的CASCADEOUT引脚连接到另一个BRAM的CASCADEIN引脚上实现。在这种模式下,上面的BRAM单元接收来自下面BRAM单元的数据输出,使得两个BRAM单元可以作为一个更大的存储器单元来使用。

        当不使用级联模式时,CASCADEIN/CASCADEOUT引脚不需要连接。这种配置提供了灵活性,允许设计师根据需要启用或禁用级联功能。值得注意的是,级联功能仅在双端口(TDP)模式下可用,这意味着每个BRAM单元可以独立地支持读写操作,使得级联配置在处理复杂数据结构或增加存储容量时非常有用。

        级联BRAM提供了一种有效的方法来增加FPGA设计中的存储密度和灵活性,特别是在需要大量存储空间但又希望保持高速数据访问的应用中。通过使用级联技术,设计师可以创建更大、更复杂的存储解决方案,以满足特定的系统需求。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

(一)、Doris安装使用(基于Doris 2.0.6)

第 1 章Doris简介 1.1、 Doris 概述 ​ Apache Doris由百度大数据部研发(之前叫百度 Palo,2018年贡献到 Apache 社区后,更名为 Doris),在百度内部,有超过200个产品线在使用,部署机器超过1000台…

RHEL9部署Docker环境

华子目录 Docker引擎架构docker引擎架构示意图执行过程示例 RHEL9上安装Docker1.系统要求2.安装yum-utils工具包3.yum安装docker-ce4.配置docker镜像加速docker拉取镜像的过程配置阿里云镜像仓库重新加载守护进程重启Docker服务 5.拉取并运行hello-world镜像6.测试是否安装成功…

四、HarmonyOS应用开发-ArkTS开发语言介绍

目录 1、TypeScript快速入门 1.1、编程语言介绍 1.2、基础类型 1.3、条件语句 1.4、函数 1.5、类 1.6、模块 1.7、迭代器 2、ArkTs 基础(浅析ArkTS的起源和演进) 2.1、引言 2.2、JS 2.3、TS 2.4、ArkTS 2.5、下一步演进 3、ArkTs 开发实践…

HTTP(2)

HTTP 通信过程包括从客户端发往服务器端的请求及从服务器端返回客户端的响应。 那么请求和响应是怎样运作的呢 HTTP 报文 用于 HTTP 协议交互的信息被称为 HTTP 报文。 请求端(客户端)的HTTP 报文叫做请求报文,响应端(服务器…

Vscode按键占用问题解决

Vscode按键占用 在使用vscode的过程中,官方按键 Ctrl . 按键可以提示修复代码中的问题,但是发现按了没有反应。 解决问题 首先确认vscode中是否设置了这个按键,默认设置了的系统输入法中是否有按键冲突了,打开输入法设置检查 …

【保姆级讲解Redis基础命令】

🌈🌈🌈个人主页:程序员不想敲代码啊🌈🌈🌈 💫CSDN优质创作者,CSDN实力新星 👍点赞⭐评论⭐收藏 🤝希望本文对您有所裨益,如有不足之处&#xff0c…

【PostGresql】------ pg多表数据多个条件汇总 使用 union 方法示例代码

1. 示例代码如下: SELECT"ID","DT_DATE","CNAME","RMAN_NAME","DEP_NAME","DEP_ID","INVEST_MAN_NAME","TYPE_NAME","INVEST_LEVEL_NAME","POSITION_NAME",…

【Springboot3+Mybatis】文件上传阿里云OSS 基础管理系统CRUD

文章目录 一、需求&开发流程二、环境搭建&数据库准备三、部门管理四、员工管理4.1 分页(条件)查询4.2 批量删除员工 五、文件上传5.1 介绍5.2 本地存储5.3 阿里云OSS1. 开通OSS2. 创建存储空间Bucket 5.4 OSS快速入门5.5 OSS上传显示文件 六、配置文件6.1 yml配置6.2 C…

RocketMq 顺序消费、分区消息、延迟发送消息、Topic、tag分类 实战 (消费者) (三)

消费端配置 如下所示:是消费者的配置类,有以下几点需要注意的地方 1、是TargetMessageListener这个监听类(下文会把这个监听类的具体代码贴出来),需要把这个监听类订阅。 2、rocketMqDcProperties.getTargetProperties…

0基础 三个月掌握C语言(13)-下

数据在内存中的存储 浮点数在内存中的存储 常见的浮点数:3.141592、1E10等 浮点数家族包括:float、double、long double类型 浮点数表示的范围:在float.h中定义 练习 关于(float*)&n: &n:这是一…

字符串哈希(c++)

1、定义 字符串哈希把不同的字符串映射成不同的整数 1.1、规则 1、把字符串映射成一个P进制数字 对于一个长度为n的字符串s 这样定义Hash函数: 例如:字符串abc,其哈希函数值为ap^2 bp^1 c; 即97 * 131^2 98 * 131^1 99; 2、两个字符串不一…

【计算机网络篇】数据链路层(3)差错检测

文章目录 🥚误码🍔两种常见的检错技术⭐奇偶校验⭐循环冗余校验🎈例子 🥚误码 误码首先介绍误码的相关概念 🍔两种常见的检错技术 ⭐奇偶校验 奇校验是在待发送的数据后面添加1个校验位,使得添加该校验…

C++|类封装、类的分文件编写练习:设计立方体类、点和圆的关系

文章目录 练习案例1:设计立方体类CPP代码 练习案例2:点和圆的关系CPP代码 代码总结类的分文件编写 练习案例1:设计立方体类 设计立方体类(Cube) 求出立方体的面积和体积 分别用全局函数和成员函数判断两个立方体是否相等。 CPP代码 class Cube { pub…

GPT4.0

GPT4.0 支持官网所有功能以及所有第三方GPTS,完全同步官网。无需魔法,填写授权码直达官网。全天超18小时维护,无需担心不稳定。没有永久卡,3.5免费提供,4.0可以按需下单即可,不存在跑路。 需要的联系

详细安装步骤:vue.js 三种方式安装(vue-cli)

Vue.js(读音 /vjuː/, 类似于 view)是一个构建数据驱动的 web 界面的渐进式框架。Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。它不仅易于上手,还便于与第三方库或既有项目整合。 三种 Vue.js 的安装方法&…

unity 多屏幕操作

想了解基础操作请移步:(重点是大佬写的好,这里就不再赘述) Unity 基础 之 使用 Display 简单的实现 多屏幕显示的效果_unity display-CSDN博客 在panel上也可以通过获取 Canvas,来达到切换多屏幕的操作, …

Flutter-仿携程首页类型切换

效果 唠叨 闲来无事,不小心下载了携程app,还幻想可以去旅游一番,奈何自己运气不好,自从高考时第一次吹空调导致自己拉肚子考试,物理,数学考了一半就交卷,英语2B铅笔除了问题,导致原…

行政工作常用表格

企业管制制度大全https://www.chuandao100.com/279.html

JVM垃圾收集器你会选择吗?

目录 一、Serial收集器 二、ParNew收集器 三、Paralle Scavenge 四、Serial Old 五、Parallel Old 六、CMS收集器 6.1 CMS对处理器资源非常敏感 6.2 CMS容易出现浮动垃圾 6.3 产生内存碎片 七、G1 收集器 八、如何选择合适的垃圾收集器 JVM 垃圾收集器是Java虚…

生成模型概述

文章目录 生成模型概述一、生成模型类型二、生成对抗网络(GANs)三、自回归模型(Autoregressive Models)四、扩散模型(Diffusion Models)五、流模型(Flow-based Models)参考 生成模型…