Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >UltraRAM的实例化方式

UltraRAM的实例化方式

作者头像
Lauren的FPGA
发布于 2019-10-30 16:33:21
发布于 2019-10-30 16:33:21
3.4K0
举报
文章被收录于专栏:Lauren的FPGALauren的FPGA

有三种实例化UltraRAM的方法:采用URAM288原语,采用手工编写RTL代码结合RAM_STYLE综合属性,采用XPM_MEMORY。相比下来,采用XPM_MEMORY最为快捷高效,因此这里只介绍这种方法。

XPM_MEMORY的位置在Vivado -> FlowNavigator -> Project Manager -> Language Templates,如下图所示。

以Simple Dual Port RAM为例,选中之后可看到相应的代码,如下图所示(这里只显示了部分代码)。

XPM_MEMORY的主要参数如下图所示(图中以_A结尾的参数换成_B即为B端口对应的参数)。这些参数中MEMORY_SIZE为Memory深度与宽度的乘积。WRITE_MODE_A有三个可选值,分别为read_first,write_first和no_change。需要注意的是当把UltraRAM配置为Simple Dual Port RAM时,WRITE_MODE_A只能是read_first或write_first,且当为write_first时,READ_LATENCY_A必须大于等于3。另一个重要的参数是READ_LATENCY_A/B,它不仅决定了输出的Latency,还影响了级联寄存器是否使用,从而影响Memory的时序性能。

OREG对Fmax的影响如下图所示(VirtexUltraScale Plus)。以-2芯片为例,使用OREG时,Fmax可达600MHz,未使用时Fmax降低至400MHz。

(图片来源:ds923,table 28)

综上所述,在使用UltraRAM时,要预先评估系统对Fmax和Latency的需求,以设置合适的READ_LATENCY_A/B,以满足系统需求。

结论:

-XPM_MEMORY是实例化UltraRAM的快捷高效方法

-使用XPM_MEMORY时,要预先评估系统对Fmax和Latency的需求

上期内容:

UltraRAM基本结构

下期内容:DSP48E2基本结构

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-04-26,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
为什么要用XPM_MEMORY
存储单元在FPGA设计中几乎是不可或缺的。无论是单端口(SP)、简单双端口(SDP)或真双端口(TDP),也无论是采用BlockRAM或分布式RAM(Distributed RAM)实现,都可以采用如下几种方式:
Lauren的FPGA
2019/10/30
5.5K0
Vivado 2019.1新特性(2):report_ram_utilization
report_ram_utilization这个命令在Vivado2018.3版本中就已经存在。在2019.1的版本中有了微小的更新,增加了一个新的选项-include_path_info。借此,我们详细介绍一下这个命令。
Lauren的FPGA
2019/10/30
1.7K0
URAM和BRAM有什么区别
无论是7系列FPGA、UltraScale还是UltraScale Plus系列FPGA,都包含Block RAM(BRAM),但只有UltraScale Plus芯片有UltraRAM也就是我们所说的URAM。BRAM和URAM都是重要的片上存储资源,但两者还是有些显著的区别。
Lauren的FPGA
2019/10/30
7.1K0
write_first/read_first/no_change什么区别
无论是用XPM_MEMORY还是IP Core的方式调用各种类型的RAM(单端口、简单双端口或真双端口),都会遇到这样一个参数:Write Mode。该参数有三个可选值,分别为write_first、read_first和no_change。那么这三个值到底有什么区别呢?应用场景又如何?本质上,这个参数是用来解决读写冲突即同时对同一地址进行读写操作时,写入该地址的数据是什么,读出该地址的数据是什么。
Lauren的FPGA
2019/10/30
1.5K0
再看Byte Write Enable
给定列表{RAMB18 RAMB36 LUTRAM RAMB},要求从中找出RAMB18和RAMB36。
Lauren的FPGA
2019/10/30
1.6K0
查找表用作分布式RAM
SLICEM中的查找表可用作分布式RAM。如果把FPGA比作大海,LUT就像一个个小的岛屿分布在这片大海上,或许这就是分布式RAM的名称由来。以UltraScale Plus芯片为例,一个6输入查找表可实现深度为64宽度为1的单端口RAM。同一个SLICEM中的8个LUT可级联构成512深度的RAM。LUT只提供一个时钟端口,一个写使能端口,因此,向RAM中写数据是同步的,但读数据则是异步的,为此,只需添加额外的寄存器即可实现同步读操作。这虽然增加了Latency,但改善了时序,提升了系统性能。
Lauren的FPGA
2019/10/31
1.3K0
如何利用BRAM实现数据延迟
实际上,在Tcl 8.5版本以前,大家常利用foreach命令的副作用将列表中的元素分发给独立的变量。例如,将列表xx中的值分别赋给变量x、y和z。这里break命令作为一个失效安全保障,以处理xx中包含了多余3个元素的情况。
Lauren的FPGA
2019/10/30
1.7K0
Block RAM的基本结构
以UltraScale芯片为例,每个Block RAM为36Kb,由两个独立的18Kb Block RAM构成,如下图所示。
Lauren的FPGA
2019/10/31
3.7K0
UltraRAM基本结构
UltraRAM是UltraScale Plus芯片中独有的一种存储资源,它具有如下特征:
Lauren的FPGA
2019/10/31
2.4K0
FPGA片内RAM读写测试实验
本节讲述一下 FPGA 片内 RAM 的仿真与测试,我们也知道 RAM 是随机存储器,顾名思义是一种存储数据的一种模块,说到随机呢,也就是我们可以任意的访问它里面的一些地址空间里面的数据。
Gnep@97
2023/09/24
1.1K0
FPGA片内RAM读写测试实验
块RAM的Verilog HDL调用
(1)单端口RAM 模式 单端口RAM的模型如图所示,只有一个时钟源CLK,WE为写使能信号,EN为单口RAM使能信号,SSR为清零信号,ADDR为地址信号,DI和DO分别为写入和读出数据信号。 单端口RAM模式支持非同时的读写操作。同时每个块RAM可以被分为两部分,分别实现两个独立的单端口RAM。需要注意的是,当要实现两个独立的单端口RAM模块时,首先要保证每个模块所占用的存储空间小于块RAM存储空间的1/2。在单端口RAM配置中,输出只在read-during-write模式有效,即只有在写操作
瓜大三哥
2018/02/24
3.2K0
块RAM的Verilog HDL调用
FPGA逻辑设计回顾(9)DDR的前世今生以及演变过程中的技术差异
本篇作为有关DDR的相关知识的第一篇,先给出DDR的前生SDRAM以及演变DDR/DDR2/DDR3等的总体概念与区别,后面会细分技术细节。文章参考互联网以及国外各大网站以及文献,水平有限,若有疏漏,还请谅解。注:本文首发易百纳技术社区,FPGA逻辑设计回顾(9)DDR的前世今生以及演变过程中的技术差异[1]
Reborn Lee
2021/03/30
1.5K0
FPGA逻辑设计回顾(9)DDR的前世今生以及演变过程中的技术差异
动手写一个简单版的谷歌TPU
人工神经网络中的大量乘加计算(譬如三维卷积计算)大多都可以归纳成为矩阵计算。而之前有的各类处理器,在其硬件底层完成的是一个(或多个)标量/向量计算,这些处理器并没有充分利用矩阵计算中的数据复用;而Google TPU V1则是专门针对矩阵计算设计的功能强大的处理单元。参考Google公开的论文In-Datacenter Performance Analysis of a Tensor Processing Unit,TPU V1的结构框图如下所示
sea-wind
2019/07/31
1.1K0
动手写一个简单版的谷歌TPU
同步FIFO和异步FIFO
FIFO是英文First In First Out 的缩写,是一种先进先出的数据缓存器,他与普通存储器的区别是没有外部读写地址线,这样使用起来非常简单,但缺点就是只能顺序写入数据,顺序的读出数据, 其数据地址由内部读写指针自动加1完成,不能像普通存储器那样可以由地址线决定读取或写入某个指定的地址。
碎碎思
2020/06/30
2K0
异步fifo的10个测试关注点_异步FIFO
FIFO是英文First In First Out 的缩写,是一种先进先出的数据缓存器,它与普通存储器的区别是没有外部读写地址线,这样使用起来非常简单,但缺点就是只能顺序写入数据。
全栈程序员站长
2022/09/21
1.3K0
异步fifo的10个测试关注点_异步FIFO
MySQL运行时的可观测性
在MySQL里,一条SQL运行时产生多少磁盘I/O,占用多少内存,是否有创建临时表,这些指标如果都能观测到,有助于更快发现SQL瓶颈,扑灭潜在隐患。
老叶茶馆
2023/09/01
3580
MySQL运行时的可观测性
嵌入式选型必看!i.MX6ULL核心板详细规格资料汇总
本文主要基于i.MX6ULL核心板,分享详细软硬件规格资料、其中包括硬件资源、引脚说明、电气特性、机械尺寸、底板设计注意事项等,欢迎嵌入式选型用户点击查看。
创龙科技Tronlong
2022/09/12
2.4K0
嵌入式选型必看!i.MX6ULL核心板详细规格资料汇总
(笔记)CPU & Memory, Part 2: CPU caches
原文:What every programmer should know about memory, Part 2: CPU caches
颇忒脱
2019/04/19
1.9K0
(笔记)CPU & Memory, Part 2: CPU caches
业界第一个真正意义上开源100 Gbps NIC Corundum介绍
来源:内容由「网络交换FPGA」编译自「FCCM2020」,谢谢。FCCM2020在5月4日开始线上举行,对外免费。我们有幸聆听了其中一个有关100G开源NIC的介绍,我们对该文章进行了翻译,并对其中的开源代码进行了分析并恢复出基于VCU118的工程,通过实际测试感受到了第一款真正意义上的100G开源NIC的强大(很多100G的开源都是基于HLS等非HDL语言,尽管可以转化成HDL,但电路架构参考意义已经不大)。开源Verilog代码中每个.v文件都是所有的组合和时序分别用一个always模块描述,代码中高位宽分段处理方式,多级流水的架构等很多地方都是非常值得借鉴和学习的地方。我们认为,github是一个宝库。我觉得现在的研究生培养质量的评价其实就可以看开源项目的参与程度,这完全能反应出一个学生的自学能力和独立研究的能力。而一个科研工作者,尤其是搞工程或应用基础研究的,如果没有做出来一两个星数100以上的开源项目,就不算成功。欢迎感兴趣的同学一起交流讨论。以下先附上本次会议的视频
网络交换FPGA
2020/05/22
6.3K0
业界第一个真正意义上开源100 Gbps NIC Corundum介绍
STM32F103C8T6单片机简介「建议收藏」
STM32F103C8T6是一款由意法半导体公司(ST)推出的基于Cortex-M3内核的32位微控制器,硬件采用LQFP48封装,属于ST公司微控制器中的STM32系列。除了被我们熟知的STM32,ST公司还有SPC5X系列、STM8系列等,具体参数如下:
全栈程序员站长
2022/08/10
13.3K0
STM32F103C8T6单片机简介「建议收藏」
相关推荐
为什么要用XPM_MEMORY
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档