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,支持同时读取和写入操作。 与先前模式的关键区别在于存在两个输出端口。 一个总是接收读操作的结果,而第二个总是接收写操作的结果。 取决于所选参数值 Specify the output data for a write operation (New dataOld data 操作的结果要么是写入地址的新数据,要么是写入操作之前存储在地址上的数据。 新数据仅由*wr_en*端口上的使能信号记录。 如果读和写操作是在同一地址执行的,那么读操作在写操作之前进行。

限制

  • RAM地址可以具有定点数据类型或整数类型,必须是无符号的,并且必须在`2`和`31`位之间。

港口

输出

# 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`,那么它的二进制表示是`0000001111010100'。 *din*列表示: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

限制

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

  • 用于记录的输入数据字的长度必须是记录分辨率字的长度的倍数。