前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >URAM和BRAM有什么区别

URAM和BRAM有什么区别

作者头像
Lauren的FPGA
发布2019-10-30 22:05:09
6.6K0
发布2019-10-30 22:05:09
举报
文章被收录于专栏:Lauren的FPGALauren的FPGA

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

容量

BRAM的容量为36Kb,且可当作两个独立的18KbBRAM使用。对于一个36Kb的BRAM,其最能达到的最大位宽为72bit。URAM容量为288Kb,一个URAM深度为4K(4×1024),宽度为72b。

时钟

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的级联情形。

文 | Lauren 图 | Lauren

Copyright @ Lauren的FPGA

本文参与?腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-03-05,如有侵权请联系?cloudcommunity@tencent.com 删除

本文分享自 Lauren的FPGA 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com