无论是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的级联情形。
芯和半导体参加三星Foundry SAFE论坛线上活动
碱性电池和碳性电池哪个污染严重?
AI对于事物的判断都是来源于自身对于大量数据的模型训练?
缓存的基本原理 缓存的分类
一文知道UFS3.0与UFS3.1的区别
URAM和BRAM有哪些区别
无线网络的改进将推动物联网设备
以一个Embedded Studio例程来介绍如何将RTT支持包添加到项目中
基于JPEG2000标准的感兴趣区域编码
腾讯医典通过API的方式将内容接入智能手机场景中?
时恒电子高精度NTC热敏电阻蓝膜芯片技术新突破
Lantiq与SoftAtHome合作开发可提供先进媒体服务的宽带家用网关
渊亭科技参与编制首个AI模型开发管理标准
大象机械臂mechArm pi人脸识别项目
【虹科新品】HK-MR660多轴光纤加速度传感器:检测发电机与变压器的振动故障
AMD发布全新架构计算机卡Instinct MI100
KaiOS发力超越ios,计划在2018年底为全球100多个国家提供服务
流控制传输协议(SCTP),SCTP的结构和内容是什么?
蓄电池放电试验怎么做?
锂电池高低温试验箱有什么不同