块 RAM 原语 - 2023.2 简体中文

Versal 自适应 SoC 设计指南 (UG1273)

Document ID
UG1273
Release Date
2023-10-25
Version
2023.2 简体中文

以下是 Versal 自适应 SoC 中的块 RAM 原语。

原语 支持的宽高比 支持的模式
RAMB36E5

1Kx36

2Kx18

4Kx9

在简单双端口 (SDP) 模式下运行时为 x72 模式
RAMB18E5

1Kx18

2Kx9

在 SDP 模式下运行时为 x36 模式

在 SDP 模式下,一个地址读取 RAM,另一个地址写入 RAM。可以使用不同的时钟进行读取和写入,但是地址行必须分开。示例如下图所示。

图 1. SDP 模式下 512x72 块 RAM 的 Verilog 编码样式
图 2. SDP 模式下 512x72 块 RAM 的超高速集成电路硬件描述语言 (VHDL) 编码样式

复位

以下为块 RAM 上的复位类型:

  • 块 RAM 输出上的同步复位,使用 RESETRAMA 或 RESETRAMB 管脚
  • 块 RAM 输出上的异步复位,使用 ARST_A 或 ARST_B 管脚
    注释: 如果使用 ARST_A 或 ARST_B 管脚,则忽略 RESETRAMA、RESETRAMB、RSTREGA 和 RSTREGB 管脚。
  • 用于控制块 RAM 的可选输出寄存器的同步复位,使用 RSTREGA 或 RSTREGB 管脚

使用异步复位时:

  • RAM 和可选输出寄存器都必须使用相同的异步复位。
    注释: 如果可选输出寄存器不使用相同的复位,则无法推断到块 RAM 中。
  • 输出使能和 SRVAL 属性将被忽略。
  • 异步复位只能复位为 0 值。

写入模式

Versal 自适应 SoC 块 RAM 支持与 AMD UltraScale™ 器件相同的写入模式,并使用相同的 RTL 编码样式:

  • WRITE_FIRST 将新写入的数据输出到输出总线上。
  • READ_FIRST 将先前存储的数据输出到输出总线上。
  • NO_CHANGE 保留输出总线先前的值。

字节写入使能

字节写入使能的控制端口是 WEA 和 WEB 管脚,根据使用情况而有所不同:

  • RAMB36E5
    • 在非 SDP 模式下,WEA 和 WEB [3:0] 管脚控制大小为 8 或 9 位的 4 字节。
    • 在 SDP 模式下,WEA 和 WEB [7:0] 管脚控制大小为 8 或 9 位的 8 字节。
  • RAMB18E5
    • 在非 SDP 模式下,WEA 和 WEB [1:0] 管脚控制大小为 8 或 9 位的 2 字节。
    • 在 SDP 模式下,WEA 和 WEB [3:0] 管脚控制 8 或 9 位的 4 字节。
注释: 大小为 9 位指包含 8 位字节和 1 个奇偶校验位。

当前,如果所用大小为 8 或 9 位,则 Vivado 综合仅推断字节写入 RAM。此外,如果使能使用独热状态编码,则 Vivado 综合仅推断字节写入使能 RAM。例如,在配置为真双端口(数据宽度为 36)的字节写入使能 RAM 中,有 4 个不同的字节,但每次只能写入 1 字节。要推断块 RAM,请确保 RTL 遵守这些限制。

非对称 RAM

对于 Versal 自适应 SoC 中的非对称块 RAM,请使用与 UltraScale 器件中非对称块 RAM 相同的编码样式和规则。如需了解有关设置非对称块 RAM 的更多信息,请参阅 Vivado Design Suite 用户指南:综合(UG901)

注释: 当前,Vivado 综合不支持在 Versal 自适应 SoC 中的非对称块 RAM 上进行异步复位。

使用 XPM

XPM 同样可用于推断块 RAM。使用这种方法的优点是,对于所需的任何类型的 RAM,XPM 都具有正确的编码样式。如需了解有关 XPM 的更多信息,请参阅 Vivado Design Suite 用户指南:系统级设计输入(UG895)