基于URAM原语创建容量更大的RAM

时间:2025-06-17  作者:Diven  阅读:0

引言:

基于URAM原语创建容量更大的RAM

UltraRAM 原语(也称为 URAM)可在 Xilinx UltraScale +™ 架构中使用,而且可用来高效地实现大容量深存储器

由于大小和性能方面的要求,通常这类存储器不适合使用其存储器资源来实现。

URAM 原语具有实现高速内存访问所需的可配置流水线属性和专用级联连接。 流水线阶段和级联连接是使用原语上的属性来配置的。

本篇博文描述的是通过将 URAM 矩阵配置为使用流水线寄存器来实现最佳时序性能的方法。

注意:本文由 PraDIP K Kar、Satyaprakash Pareek 和 Chaithanya Dudha 共同撰写。

流水线需求:

通过在矩阵结构中连接多个 URAM,从可用的 URAM 原语实现大容量深存储器。

矩阵由 URAM 的行和列组成。一列中的 URAM 使用内置级联电路级联,且多列 URAM 通过外部级联电路互连,这被称为水平级联电路。

作为示例,图 1 示出了针对 64K 深 x 72 位宽存储器的 4x4 URAM 矩阵的矩阵分解。

图 1:4 行 4 列的 URAM 矩阵(可实现 64K 深 72 位宽的存储器)

在没有流水线设计的情况下,深度联结构会导致内存访问出现大的时钟输出延迟。 例如,在默认情况下,上述 URAM 矩阵可以达到约 350 MHz。要以更快的速度访问内存,应插入流水线。如果在网表中指定了一定数量的输出时延,Vivado Synthesis 即会自动实现此功能。

指定 RTL 设计中的流水线:

有两种方法可以用来指定 RTL 设计中的流水线的用途,可以通过使用 XPM 流程,也可以通过行为 RTL 来推断内存。

如果 RTL 设计通过 XPM 流程来创建 URAM 内存,则用户可以将对流水线的要求指定为 XPM 实例的参数。参数“READ_LATENCY_A/B”用于捕获内存的时延要求。

可用的流水线阶段数是 LATENCY 值减去 2。 例如,如果 Latency 设置为 10,则允许 8 个寄存器阶段用于流水线操作。另外两个寄存器可用来创建 URAM 本身。

图 2:使用 XPM 设置流水线设计

如果用户使用 Vivado 用户指南中提供的模板来编写 RTL,并通过此方法来创建 URAM,那么,可以在 URAM 的输出时创建尽可能多的寄存器阶段。唯一的要求是,与数据一起,流水线寄存器的启用也需要流水线化。

图 3 显示数据和流水线的启用。

图 3:URAM 块输出时的数据及流水线启用规范

图 4 示出了 RTL 级 RAM 流水线设计示例。

图 4:用来指定数据和流水线启用的 verilog 模板

分析日志文件:

Vivado Synthesis 根据上下文环境和场景发布与 URAM 流水线相关的不同消息。下表说明要在 vivado.log 文件中查找的一些消息和要采取的相应操作。

请注意,推荐的流水线阶段基于可实现最高性能 (800 MHz+) 的完全流水线化的矩阵。此建议不受实际时序约束的限制。

情况消息操作
无流水线设计的 URAMWARNING: [Synth 8-6057] Memory: "uram00/ram1/mem_reg" defined in Module: "top_sp_no_pipe" implemented as Ultra-Ram has no pipeline registers. It is recommended to use pipeline registers to achieve high performance增加时延或插入一些流水线阶段。
URAM 严重受流水线限制CRITICAL WARNING: [Synth 8-6013] UltraRAM uram00/ram1/mem_reg is under-pipelined and may not meet performance target : Pipeline stages found = 1; Recommended pipeline stages =8增加时延或插入一些流水线阶段。
带有合理流水线设计的 URAMINFO: [Synth 8-5813] UltraRAM uram00/ram1/mem_reg: Pipeline stages found = 4; Recommended pipeline stages =8检查是否满足时间要求。如果不满足性能,则增加时延。
流水线多于需要的 URAMINFO: [Synth 8-5813] UltraRAM uram00/ram1/mem_reg: Pipeline stages found = 10; Recommended pipeline stages =8减少时延,否则 FF 利用率将显着增加。
流水线设计结果INFO: [Synth 8-5814] Pipeline result for URAM (uram00/ram1/mem_reg): Matrix size= (4 cols x 4 rows) | Pipeline stages => ( available = 10, ABSorbed = 8 ) 

时间性能估计:

下表说明流水线寄存器的数量与可实现的最大估计频率之间的关系。

请注意,实际的时间数仍将取决于最终地点和路线结果。

下列数字基于 speedgrade-2 Virtex® UltraScale+™ 部件以及我们使用 4x4 矩阵实现的 64K x 72 URAM 示例工程。

流水线阶段URAM 中吸收的流水线所用流水线资源关键路径上的数据路径延迟 (ns)估计的最大频率
00不适用2.7370 MHz
11/1OREG2.15465 MHz
22/2OREG,FDRE1.632612 MHz
44/4OREG,REGCAS,FDRE,IREG_PRE1.376726 MHz
66/6OREG,REGCAS,FDRE,IREG_PRE1.376726 MHz
88/8OREG,REGCAS,FDRE,IREG_PRE1.1909 MHz
10+8/10+OREG,REGCAS,FDRE,IREG_PRE1.1909 MHz

数据路径延迟具有以下一个或多个组件。

Tco = 1.38 ns, Clk To CascadeOut on URAM

Tco = 0.82 ns, Clk To CascadeOut on URAM with OREG=true

Tco = 0.726 ns, Clk to Dataout on URAM with OREG=true, CASCADE_ORDER = LAST

URAM -> URAM 级联延迟 = 0.2 ns

URAM -> LUT 信号网络延迟 = 0.3 ns

LUT 传输延迟 = 0.125 ns

LUT -> LUT 信号网络延迟 = 0.2 ns

LUT5 -> FF 延迟 = 0.05

URAM 原语是创建容量非常大的 RAM 结构的有效方法。 被设置为易于级联以便在您的设计中创建容量更大的 RAM。

但是,太多这类结构级联在一起可能会通过 RAM 产生很大的延迟。从长远来看,花时间让您的 RAM 完全流水线化会带来很多好处。

URAM 原语是创建容量非常大的 RAM 结构的有效方法。 被设置为易于级联以便在您的设计中创建容量更大的 RAM。

但是,太多这类结构级联在一起可能会通过 RAM 产生很大的延迟。从长远来看,花时间让您的 RAM 完全流水线化会带来很多好处。

猜您喜欢

贴片电阻,作为电子电路中不可或缺的元件,其规格通常由四个部分组成:阻值、封装尺寸、精度和功率。阻值表示电阻的大小,单位为欧姆(Ω)。常见的阻值范围从几欧姆到几兆...
2024-11-26 11:30:10

电路保护元件的重要性日益凸显。自恢复保险丝作为智能保护装置,因其能够在过载或短路后自动恢复而广受欢迎。本文将围绕“ZOYI LIGHTING自恢复保险丝大小规格...
2022-11-02 17:57:30

传感器模块是现代科技中不可少的组成部分,能够感知和收集环境中的各种信息。根据功能和应用的不同,传感器模块可以分为多个类别。按感知对象分类,传感器模块可分为温度传...
2010-06-23 00:00:00

电机和减速机是现代工业中不可少的重要组成部分。电机作为动力源,能够将电能转化为机械能,驱动各种设备运转。无论是在制造业、交通运输还是家用电器中,电机都有着着非常...
2014-05-29 00:00:00

1 为什么使用 FPGA?众所周知,通用处理器(CPU)的摩尔定律已入暮年,而机器学习和 Web 服务的规模却在指数级增长。人们使用定制硬件来加速常见的计算...
2024-04-08 10:07:00


瓷片电阻是常见的电子元件,应用于各种电器和电子设备中。的主要功能是限制电流,保护电路中的其元件,确保设备的正常运行。电子技术的不断发展,瓷片电阻的应用领域也在不...
2025-04-14 19:00:06

负压电荷泵是一种能够产生低于输入电压的负电压的电子电路。利用电容储存电荷,并通过开关的控制,将电荷转移到输出端,从而实现电压转换。负压电荷泵的工作原理可以简单概...
2024-04-03 00:00:00


LED照明凭借其节能环保、寿命长等优势,已成为主流照明方式。而驱动电源作为LED灯的心脏,其性能直接影响着LED灯的效率、寿命和稳定性。近年来,LED照明驱动电...
2024-09-20 00:00:00