找回密码
 注册
关于网站域名变更的通知
查看: 689|回复: 2
打印 上一主题 下一主题

URAM和BRAM的区别是什么

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2021-2-24 13:39 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
无论是7系列FPGA、UltraScale还是UltraScale Plus系列FPGA,都包含Block RAM(BRAM),但只有UltraScale Plus芯片有UltraRAM也就是我们所说的URAM。BRAM和URAM都是重要的片上存储资源,但两者还是有些显著的区别。: A' i2 t8 k% j. K# s  y
  容量7 z1 J4 |, \; k, X6 F; |
  BRAM的容量为36Kb,且可当作两个独立的18Kb BRAM使用。对于一个36Kb的BRAM,其最能达到的最大位宽为72bit。$ a8 ?% f- S* a3 e! |
  URAM容量为288Kb,一个URAM深度为4K(4×1024),宽度为72bit。
$ s# ]* Y' o- y/ x9 J  时钟' x5 {* z' ^' M9 o$ w3 H; D
  BRAM 有两个时钟,在 RAMB36E2 的 Primitive 声明中就可以看到这两个时钟 CLKARDCLK 和 CLKBWRCLK 。
5 O, z# w+ o/ R! D' X4 q  URAM 只有一个时钟,在 URAM288 的 Primitive 声明中可以看到该时钟 CLK 。尽管在使用 XPM_MEMORY 实例化 URAM 时可以看到 clka 和 clkb ,但这两个端口最终都连接到 URAM 的物理端口 CLK 上。, w0 X- S3 b% P4 R/ X' _1 s
  初始值  u/ s+ F9 E! U
  BRAM 的初始值是可以设定的,无论 BRAM 是单端口、简单双端口还是真双端口都可以通过 COE 文件设定其初始值。而 URAM 的初始值只能为0,且无法更改,换言之,其初始值是不可设定的。这也就意味着 BRAM 可以配置成 ROM 而 URAM 不可以。9 q" D2 E% J/ {  B: l
  工作模式
. ~1 q, ^& C& i8 _- t  BRAM 可配置为单端口、简单双端口和真双端口,但对于 URAM,不能简单地将这三种模式映射过来,其工作行为如下图所示。可以看到,A/B端口不是独立的,例如,A端口读而B端口写同一地址,读出的是该地址原有数据;A端口写而B端口读同一地址,读出的是新写入的数据。) |. p0 k- D) j8 w3 U
  

' W8 B1 h4 N% A5 d2 |  实例化方式
% @  K- N% b2 B5 ~  对于 BRAM,可采用原语、XPM_MEMORY、RTL代码或者IP Core的方式进行实例化,
: K# V  B4 A- J/ g4 w  但 URAM 目前只支持原语、XPM_MEMORY 和 RTL 代码的方式。相比而言,XPM_MEMORY 的方式更为快捷,也是Xilinx建议的方式。+ I+ B+ H6 y% T
  级联方式, J2 c. S. l: `- l% J2 d
  BRAM和URAM都可级联,只是级联方式不同。在使用BRAM时,我们只需要设定宽度和深度,并根据时钟频率合理选择Latency,也就是选择是否需要使用BRAM自带的输出寄存器或Slice中的寄存器。而URAM提供了专门的级联寄存器,同样需要根据时钟频率合理选择Latency,此时会影响到级联寄存器的使用。如下图所示,是4个URAM的级联情形。
6 S. V0 F5 g8 z; e  
! X  m1 T0 v% f

该用户从未签到

2#
发表于 2021-2-24 14:06 | 只看该作者
不错收藏了                        

该用户从未签到

3#
发表于 2021-2-26 15:14 | 只看该作者
谢谢分享,学习了!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-8-13 00:11 , Processed in 0.109375 second(s), 26 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表