Engee 文档

Simple Dual Port RAM System

页面进行中。

简单的双端口 RAM,支持同时读写操作。

类型: SimpleDualPortRAMSystem

图书馆中的路径:

/Basic/Additional/Discrete/Simple Dual Port RAM System

说明

Simple Dual Port RAM System 块模拟了一个简单的双端口随机存取存储器(RAM),支持同时读写操作。要配置该程序块,请打开它并设置 Specify the type of RAM 的值:

  • Single port- 模拟 RAM,根据 wr_en 端口的信号执行读或写操作:"1 "值表示写,"0 "值表示读。写入时,根据参数 Specify the output data for a write operation 的值,有两种模式可供选择:

    • Old data- 将先前的数据输出到输出端口,然后写入新数据;

    • New data- 向输出端口重复输入数据。

  • Simple dual port- 模拟 RAM,支持同步读写操作。读操作是连续进行的,而写操作只有在 wr_en 端口发出使能信号时才会进行。当读写发生在同一地址时,读操作会在写操作之前进行。输出端始终接收读操作的结果。

  • Dual port- RAM:模拟 RAM,支持同步读写操作。与前一种模式的主要区别在于有两个输出端口。一个始终接收读操作的结果,另一个始终接收写操作的结果。根据参数 Specify the output data for a write operation (New data`或 `Old data),操作结果要么是写入地址的新数据,要么是写入操作前存储在地址中的数据。只有当 wr_en 端口的使能信号存在时,才会写入新数据。如果对同一地址执行读写操作,则读操作先于写操作。

限制

  • RAM 地址可以是定点或整数数据类型,必须是无符号的,长度必须在 231 位之间。

端口

输出

# rd_dout — 从读取地址输出的数据
scalar | vector

Details

从读取地址 rd_addr 输出数据。

依赖关系

要使用该端口,请将 Specify the type of RAM 设置为 Simple dual port`或 `Dual port.

数据类型

Float64, Float32, Float16, Int8, UInt8, Int16, UInt16, Int32, UInt32, Int64, UInt64, Int128, UInt128, Bool, Fixed.

复数支持

# 输出 — 从读取地址输出
scalar | vector

Details

从读取地址 addr 输出数据。

依赖关系

要使用该端口,请将 Specify the type of RAM 参数设置为 Single port.

数据类型

Float64`、Float32`、Float16`、Int8`、UInt8`、Int16`、UInt16`、Int32`、UInt32`、UInt32`、Int64`、UInt64`、Int128`、UInt128`、Bool`、Fixed`。

复数支持

# wr_dout — 从写入地址输出的数据
scalar | vector

Details

从要写入的地址 wr_addr 输出数据。

依赖关系

要使用该端口,请将 Specify the type of RAM 参数设置为 Simple dual port`或 `Dual port.

数据类型

Float64, Float32, Float16, Int8, UInt8, Int16, UInt16, Int32, UInt32, Int64, UInt64, Int128, UInt128, Bool, Fixed.

复数支持

输入

# 嘈杂声 — 记录数据
scalar | vector

Details

写入标量或矢量数据。如果 wr_en 端口上的写使能信号设置为 "1",则可以将数据写入 RAM 位置。

数据类型

Float64、Float32、Float16、Int8、UInt8、Int16、UInt16、Int32、UInt32、Int64、UInt64、Int128、UInt128、Bool、Fixed。

复数支持

# wr_addr — 写入地址
标量

Details

以标量或向量形式指定的写入地址。当 wr_en 端口上的信号为 "1 "时,使用该地址写入 RAM。

依赖关系

要使用该端口,请将 Specify the type of RAM 设置为 Simple dual port`或 `Dual port.

数据类型

UInt8"、"UInt16"、"Fixed"。

复数支持

# wr_en — 录音权限
scalar | vector

Details

以标量或矢量形式指定写入分辨率。当 wr_en 端口上的信号为 "1 "时,程序块会将数据写入指定的内存位置。在模式。 `Single port`模式下,当 wr_en 端口上的信号为 "0 "时,程序块将从 addr 端口指定的内存位置读取数据。在其他模式下,无论 wr_en 端口的信号如何,都会进行读操作。

要使用列写方法,数据类型必须是整数或定点。
数据类型

Int8, UInt8, Int16, UInt16, Int32, UInt32, Int64, UInt64, Int128, UInt128, Bool, Fixed.

复数支持

# rd_addr — 读取地址
标量

Details

以标量或向量形式指定的读取地址。使用该地址从 RAM 中读取数据。该值可以是定点或整数数据类型,必须是无符号的,长度必须在 231 位之间。

依赖关系

要使用该端口,请将 Specify the type of RAM 设置为 Simple dual port`或 `Dual port.

数据类型

UInt8"、"UInt16"、"Fixed"。

复数支持

# 地址 — 读取或写入地址
scalar | vector

Details

读取或写入地址,取决于 wr_en 端口上的信号:1 表示写入,0 表示读取。

依赖关系

要使用该端口,请将 Specify the type of RAM 设置为 Single port.

数据类型

UInt8"、"UInt16"、"Fixed"。

复数支持

参数

Main

# Specify the type of RAM — 内存类型
Single port | Simple dual port | Dual port

Details

RAM 类型:

  • Single port- 单端口 RAM,可执行读取或写入操作,具体取决于 wr_en 端口上的信号:"1 "值表示写入,"0 "值表示读取。输出为读取地址 addr 的数据。

  • Simple dual port- 简单的双端口 RAM,输入为写数据、写地址、写使能和读地址,输出为来自读地址的数据。

  • Dual port- 真正的双端口 RAM,以写数据 ab、写地址 ab、读地址 ab、写使能 ab 作为输入,写地址 ab 的数据作为输出。

Single port | Simple dual port | Dual port

默认值

Simple dual port

程序使用名称

RAMType

可调谐

可计算

# Specify the output data for a write operation — 写操作的输出数据
New data | Old data

Details

指定写入操作的输出数据:

  • Old data- 在前一个数据的输出端口上进行输出,新数据将被写入;

  • New data- 在输出端口重复输入数据。

依赖关系

要使用该参数,请将 Specify the type of RAM 设置为 Single port`或 `Dual port.

New data | Old data

默认值

New data

程序使用名称

WriteOutputValue

可调谐

可计算

# Specify the RAM initial value — RAM 模拟的初始输出数据

Details

指定 RAM 仿真的初始输出数据:

  • 标量值。

  • 一个向量,其元素对应初始值和 RAM 字。

  • 矩阵 by ,其元素对应 RAM 库中的初始值和 RAM 字,其中 代表 RAM 库的数量, 代表 RAM 块中地址位置的数量,反之亦然。

默认值

0

程序使用名称

RAMInitialValue

可调谐

可计算

更多信息

使用列输入法进行选择性列输入

Details

您可以使用列写入方法将 RAM 视为一组大小相同的列。在一个写入周期内,可以对每一列进行单独写入。写使能输入的数据类型和值以及写数据输入的数据类型决定了每一列的大小以及块写入可寻址内存位置的列。

在这种情况下

  • - din 写入数据输入数据类型。

  • - 输入数据宽度,等于值字长 din

  • - 写使能信号 wr_en 的数据类型。该信号决定程序块向可寻址内存位置写入哪些列。程序块根据 wr_en 值二进制表示中的 "1 "位置写入列。

  • - RAM 空间可用于写入数据的列数,等于 wr_en 值的字长。

  • - 每列的宽度,等于

下表显示了记录输入数据类型、记录解析输入数据类型、列数和每列宽度之间的关系。

位数

UInt16.

16

Ufix4.

4

4

`UInt32

32

`Ufix4

4

8

`UInt64

64

`Ufix4

4

16

`UInt32

32

`UInt8

8

4

`UInt64

64

`UInt8

8

8

`Int32

32

`UInt16

16

2

例如,如果 UInt16 Ufix4,那么 是 16 位, 是 4 位, 是 4 位。如果向 din 输入 980 ,其二进制表示为 0000001111010100din 的列表示法是 c4 = 0000,c3 = 0011,c2 = 1101,c1 = 0100,其中 c1 是第一列。

下表显示了对不同输入数据组合使用列写法的结果。

wr_en 二进制表示 wr_en 选择写入 RAM 的列 存储单元中的数据:写入操作前 存储单元中的数据:写入操作后 dout

3

0011

c2, c1

c4=0000 c3=0000 c2=0000 c1=0000

c4=0000 c3=0000 c2=1101 c1=0100

212

4

0100

c3

c4=0000 c3=0000 c2=0000 c1=0000

c4=0000 c3=0011 c2=0000 c1=0000

768

6

0110

c3, c2

c4=0000 c3=0000 c2=0000 c1=0000

c4=0000 c3=0011 c2=1101 c1=0000

976

9

1001

c4, c1

c4=0000 c3=0000 c2=0000 c1=0000

c4=0000 c3=0000 c2=0000 c1=0100

4

9

1001

c4, c1

c4=1111 c3=1111 c2=1111 c1=1111

c4=0000 c3=1111 c2=1111 c1=0000

4084

*``限制。

  • 写使能输入端口不支持带符号数据类型和非零分数长度的输入。

  • 写入输入数据字的长度必须是写入启用字长度的倍数。