URAM和BRAM有什么区别

article/2025/10/9 10:49:31

无论是7系列FPGA、UltraScale还是UltraScale Plus系列FPGA,都包含Block RAM(BRAM),但只有UltraScale Plus芯片有UltraRAM也就是我们所说的URAM。BRAM和URAM都是重要的片上存储资源,但两者还是有些显著的区别。

容量

BRAM的容量为36Kb,且可当作两个独立的18Kb BRAM使用。对于一个36Kb的BRAM,其最能达到的最大位宽为72bit。

URAM容量为288Kb,一个URAM深度为4K(4×1024),宽度为72bit。

时钟

BRAM 有两个时钟,在 RAMB36E2 的 Primitive 声明中就可以看到这两个时钟 CLKARDCLK 和 CLKBWRCLK 。

URAM 只有一个时钟,在 URAM288 的 Primitive 声明中可以看到该时钟 CLK 。尽管在使用 XPM_MEMORY 实例化 URAM 时可以看到 clka 和 clkb ,但这两个端口最终都连接到 URAM 的物理端口 CLK 上。

初始值

BRAM 的初始值是可以设定的,无论 BRAM 是单端口、简单双端口还是真双端口都可以通过 COE 文件设定其初始值。而 URAM 的初始值只能为0,且无法更改,换言之,其初始值是不可设定的。这也就意味着 BRAM 可以配置成 ROM 而 URAM 不可以。

工作模式

BRAM 可配置为单端口、简单双端口和真双端口,但对于 URAM,不能简单地将这三种模式映射过来,其工作行为如下图所示。可以看到,A/B端口不是独立的,例如,A端口读而B端口写同一地址,读出的是该地址原有数据;A端口写而B端口读同一地址,读出的是新写入的数据。

图片来源:Table 2-6, ug573

实例化方式

对于 BRAM,可采用原语、XPM_MEMORY、RTL代码或者IP Core的方式进行实例化,

但 URAM 目前只支持原语、XPM_MEMORY 和 RTL 代码的方式。相比而言,XPM_MEMORY 的方式更为快捷,也是Xilinx建议的方式。

级联方式

BRAM和URAM都可级联,只是级联方式不同。在使用BRAM时,我们只需要设定宽度和深度,并根据时钟频率合理选择Latency,也就是选择是否需要使用BRAM自带的输出寄存器或Slice中的寄存器。而URAM提供了专门的级联寄存器,同样需要根据时钟频率合理选择Latency,此时会影响到级联寄存器的使用。如下图所示,是4个URAM的级联情形。

 

 


http://chatgpt.dhexx.cn/article/Z9yy3V8i.shtml

相关文章

【FPGA】AXI4-Lite总线读写BRAM

博主参考和学习的博客 AXI协议基础知识 。这篇博客比较详细地介绍了AXI总线,并且罗列了所有的通道和端口,写代码的时候可以方便地进行查表。AXI总线,AXI_BRAM读写仿真测试 。 这篇文章为代码的书写提供大致的思路,比如状态机和时…

如何对bram/ram进行初始化赋值呢?

1、首先对于常规的情况,即加载.coe文件的方式实现初始化(与rom相同) 点击load initial file, 在右侧可以直接添加.coe文件,或者选择edit进行手动编辑(数据量不大的情况下可选,但是不推荐)&#…

vivado中bram的种类与使用

vivado中bram的种类与使用 vivado中bram的分类单端口ram初始化工作时序仿真验证 简化的双端口RAM初始化端口定义仿真结果 双端口RAM初始化端口定义功能仿真单端口读数双端口读数双端口一读一写双端口写数据 vivado中bram的分类 在vivado中打开IP catalog,在其中搜索…

BRAM的使用

使用Block Memory Generator IP核,PL读取BRAM数据 软件环境:Vivado 2018.3 IP核:Block Memory Generator 8.4(Rev.2) 1、点击IP Catalog 2、搜索”Block Memory Generator“双击选择RAMs & ROMs & BRAM下的IP核 3、配置IP核为Si…

FPGA — BRAM学习笔记—读写操作

使用软件: Vivado 开发板: EGO1采用Xilinx Artix-7系列XC7A35T-1CSG324C FPGA BRAM笔记 BRAM介绍同步双端口BRAMBRAM读写操作(1)读操作(2)写操作(3)写模式写优先模式读优先模式不变模式 双端口块内存接口BRAM IP的使用及仿真验证IP核使用coe文件将IP核添…

FPGA从入门到精通(8)-BRAM

所使用EDA软件:VIVADO2018.3 FPGA型号:xc7a35tcsg325-2 很久没写了,随便写一篇BRAM的吧。说到BRAM ,很多人都喜欢拿它来DRAM比较 ,两者都有啥优缺点,其实我也拿不准。不过一般来说,存储较大的数…

Xilinx系列学习(一) BRAM的使用,并用PL读取BRAM数据

Xilinx系列学习(一) BRAM的使用,并用PL读取BRAM数据 一,Xilinx BRAM介绍二,BRAM对应的IP核调用和使用1,BRAM对应的IP核介绍2,BMG例化IP核的调用一,Xilinx BRAM介绍 BRAM 就是Block Memory,是Zynq的PL端的存储RAM单元。可以利用BRAM,在PS和PL之间进行数据的交换。Zyn…

FPGA设计中BRAM(Block RAMs)资源的使用(综合为BRAM)

FPGA设计中BRAM(Block RAMs)资源的使用 RAM分为BRAM(Block RAMs)和DRAM(Distributed RAM),即块RAM与分布式RAM,这两个差别在于BRAM是FPGA上固有的一些存储资源(针对不同型…

web测试与app测试的区别

目录 前言 首先从系统架构来看 专项测试 安装、卸载、更新: 界面操作: 前言 仅仅从功能测试的层面上来讲的话,在流程和功能测试上是没有区别的。那么区别在哪里呢? 我个人觉得就是由于载体不一样,所以系统测试和…

APP测试与WEB测试

APP测试与WEB测试的区别(异同) 相同点: 功能测试层面而言:APP测试和web测试都是使用相同的测试用例测试方法(都用到等价类划分、边界值分析、正常和异常情况去考虑测试点) UI界面测试:都需要按照原型图和设计图检查UI…

web测试,App测试,小程序测试区别

最近项目真的太忙了,不过,今天无论如何我都要更文章了,谢谢大家的支持,不断努力进步 这篇文章,我就是要梳理一下,web测试,app测试,和小程序的区别 话不多说,上主题 web…

WEB端与移动端测试区别和总结

WEB端与移动端测试区别总结如下: 1、系统架构 WEB端 B/S结构,WEB端的前端一般不做端的区分 WEB端的上线不管是预发布还是N环上线,server上线后,前端同步更新,一般是不存在多个版本的问题; 移动端 C/S结构,移…

Apifox简单了解——WEB端测试的集大成者

文章目录 0 引入1、Postman2、Swagger (丝袜哥)3、Mock4、JMeter5、Apifox6、引用 0 引入 Apifox Postman Swagger Mock JMeter 1、Postman 1 作用 Postman是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件,简单易用的接口测试…

web测试的基本流程

1、web测试流程: (1)web测试 1)参与一个web新项目的测试前,先搜集测试相关的资料,包括原型图、各种需求文档、业务相关等需求相关材料 2)结合第一步搜集到的需求相关资料,自行熟悉系统,同时列出不明白的点,…

Web端测试常用方法

介绍下工作中,Web端测试所涉及到的方法: 前言:Web测试常用的方法,兼容性测试、安全性测试、可用性测试 & 逻辑功能测试 1 > 兼容性测试 先说下兼容性测试,工作中在测试时,一般涉及操作系统测试、浏…

web端测试经验(项目实战经验)

软件测试相信大家已经有一定的了解了,无非就是找bug 找缺陷 找问题 找这个程序(前端、后端)的不足点 以及不人性化的地方 ,由我们监测并提出有效的建议给项目进行缺陷修复以及优化点。软件测试大体分为Web、App两个,当…

这可能是最全的Web测试各个测试点,有这一篇就够了

前言 什么是Web测试? Web测试测试Web或Web应用程序的潜在错误。它是在上线前对基于网络的应用程序进行完整的测试。 Web测试检查 功能测试 易用性测试 接口测试 性能测试 安全测试 兼容性测试 1、功能测试 测试网页中的所有链接、数据库连接、网页中用于提交或从…

【转载】 web项目测试

前言 之前说了APP项目的测试,今天来总结一下web项目的测试,其实大多数过程是差不多类似的。对比平常移动端手机的高频率使用来说,对于部分人使用pc端浏览器的概率就不会这么高,讲APP项目测试的时候没怎么涉及到网络协议部分的介绍…

Web端测试方法

web端通用测试点请移步 1. Web 测试的总体策略 2. Web 测试的范围 √ 功能 √ 性能 √ 界面 √ 兼容性 √ 安全性 √ DB √ 文档 2.1 功能测试 ☆ 功能测试主要从链接、表单、Cookies、设计语言、数据库、文件上传等方面进行。 2.1.1 链接 ☆ 链接也称超链接,…

Redis集群 关闭和重启

1、创建好的redis集群,一下是正常运行的3主3从服务器 2、正常关闭集群服务器 [rootca01 redis-cluster]# cat stopall.sh cd 7001 ./redis-cli -p 7001 shutdown cd .. cd 7002 ./redis-cli -p 7002 shutdown cd .. cd 7003 ./redis-cli -p 7003 shutdown cd .. c…