简单双端口 RAM 系统
页面进行中。 |
简单的双端口 RAM,支持同时读写操作。
类型: SimpleDualPortRAMSystem
图书馆中的路径:
|
说明
简单双端口 RAM 系统 块模拟了一个简单的双端口随机存取存储器(RAM),支持同时读写操作。要配置该程序块,请打开它并设置 指定 RAM 类型 的值:
-
单端口
- 模拟 RAM,根据 wr_en 端口的信号执行读或写操作:"1 "值表示写,"0 "值表示读。写入时,根据参数 指定写入操作的输出数据 的值,有两种模式可供选择:-
旧数据
- 将先前的数据输出到输出端口,然后写入新数据; -
新数据
- 向输出端口重复输入数据。
-
-
简单的双端口
- 模拟 RAM,支持同步读写操作。读操作是连续进行的,而写操作只有在 wr_en 端口发出使能信号时才会进行。当读写发生在同一地址时,读操作会在写操作之前进行。输出端始终接收读操作的结果。 -
双端口
- RAM:模拟 RAM,支持同步读写操作。与前一种模式的主要区别在于有两个输出端口。一个始终接收读操作的结果,另一个始终接收写操作的结果。根据参数 指定写入操作的输出数据 (新数据`或 `旧数据
),操作结果要么是写入地址的新数据,要么是写入操作前存储在地址中的数据。只有当 wr_en 端口的使能信号存在时,才会写入新数据。如果对同一地址执行读写操作,则读操作先于写操作。
端口
输出
#
rd_dout
—
从读取地址输出的数据
scalar
| vector
Details
从读取地址 rd_addr 输出数据。
依赖关系
要使用该端口,请将 指定 RAM 类型 设置为 简单的双端口`或 `双端口
.
数据类型 |
|
复数支持 |
无 |
#
输出
—
从读取地址输出
scalar
| vector
Details
从读取地址 addr 输出数据。
依赖关系
要使用该端口,请将 指定 RAM 类型 参数设置为 单端口
.
数据类型 |
Float64`、Float32`、Float16`、Int8`、UInt8`、Int16`、UInt16`、Int32`、UInt32`、UInt32`、Int64`、UInt64`、Int128`、UInt128`、Bool`、Fixed`。 |
复数支持 |
无 |
#
wr_dout
—
从写入地址输出的数据
scalar
| vector
Details
从要写入的地址 wr_addr 输出数据。
依赖关系
要使用该端口,请将 指定 RAM 类型 参数设置为 简单的双端口`或 `双端口
.
数据类型 |
|
复数支持 |
无 |
输入
#
嘈杂声
—
记录数据
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。
依赖关系
要使用该端口,请将 指定 RAM 类型 设置为 简单的双端口`或 `双端口
.
数据类型 |
UInt8"、"UInt16"、"Fixed"。 |
复数支持 |
无 |
#
wr_en
—
录音权限
scalar
| vector
Details
以标量或矢量形式指定写入分辨率。当 wr_en 端口上的信号为 "1 "时,程序块会将数据写入指定的内存位置。在模式。 `单端口`模式下,当 wr_en 端口上的信号为 "0 "时,程序块将从 addr 端口指定的内存位置读取数据。在其他模式下,无论 wr_en 端口的信号如何,都会进行读操作。
要使用列写方法,数据类型必须是整数或定点。 |
数据类型 |
|
复数支持 |
无 |
#
rd_addr
—
读取地址
标量
Details
以标量或向量形式指定的读取地址。使用该地址从 RAM 中读取数据。该值可以是定点或整数数据类型,必须是无符号的,长度必须在 2
和 31
位之间。
依赖关系
要使用该端口,请将 指定 RAM 类型 设置为 简单的双端口`或 `双端口
.
数据类型 |
UInt8"、"UInt16"、"Fixed"。 |
复数支持 |
无 |
#
地址
—
读取或写入地址
scalar
| vector
Details
读取或写入地址,取决于 wr_en 端口上的信号:1
表示写入,0
表示读取。
依赖关系
要使用该端口,请将 指定 RAM 类型 设置为 单端口
.
数据类型 |
UInt8"、"UInt16"、"Fixed"。 |
复数支持 |
无 |
参数
Main
#
指定 RAM 类型 —
内存类型
单端口
| 简单的双端口
| 双端口
Details
RAM 类型:
-
单端口
- 单端口 RAM,可执行读取或写入操作,具体取决于 wr_en 端口上的信号:"1 "值表示写入,"0 "值表示读取。输出为读取地址 addr 的数据。 -
简单的双端口
- 简单的双端口 RAM,输入为写数据、写地址、写使能和读地址,输出为来自读地址的数据。 -
双端口
- 真正的双端口 RAM,以写数据a
和b
、写地址a
和b
、读地址a
和b
、写使能a
和b
作为输入,写地址a
和b
的数据作为输出。
值 |
|
默认值 |
|
程序使用名称 |
|
可调谐 |
无 |
可计算 |
无 |
#
指定写入操作的输出数据 —
写操作的输出数据
新数据
| 旧数据
Details
指定写入操作的输出数据:
-
旧数据
- 在前一个数据的输出端口上进行输出,新数据将被写入; -
新数据
- 在输出端口重复输入数据。
依赖关系
要使用该参数,请将 指定 RAM 类型 设置为 单端口`或 `双端口
.
值 |
|
默认值 |
|
程序使用名称 |
|
可调谐 |
无 |
可计算 |
无 |
# 指定 RAM 初始值 — RAM 模拟的初始输出数据
Details
指定 RAM 仿真的初始输出数据:
-
标量值。
-
一个向量,其元素对应初始值和 RAM 字。
-
矩阵 by ,其元素对应 RAM 库中的初始值和 RAM 字,其中 代表 RAM 库的数量, 代表 RAM 块中地址位置的数量,反之亦然。
默认值 |
|
程序使用名称 |
|
可调谐 |
无 |
可计算 |
是 |
更多信息
使用列输入法进行选择性列输入
Details
您可以使用列写入方法将 RAM 视为一组大小相同的列。在一个写入周期内,可以对每一列进行单独写入。写使能输入的数据类型和值以及写数据输入的数据类型决定了每一列的大小以及块写入可寻址内存位置的列。
在这种情况下
-
- din 写入数据输入数据类型。
-
- 输入数据宽度,等于值字长 din。
-
- 写使能信号 wr_en 的数据类型。该信号决定程序块向可寻址内存位置写入哪些列。程序块根据 wr_en 值二进制表示中的 "1 "位置写入列。
-
- RAM 空间可用于写入数据的列数,等于 wr_en 值的字长。
-
- 每列的宽度,等于 。
下表显示了记录输入数据类型、记录解析输入数据类型、列数和每列宽度之间的关系。
位数 | ||||
---|---|---|---|---|
|
|
|
|
|
`UInt32 |
|
`Ufix4 |
|
|
`UInt64 |
|
`Ufix4 |
|
|
`UInt32 |
|
`UInt8 |
|
|
`UInt64 |
|
`UInt8 |
|
|
`Int32 |
|
`UInt16 |
|
|
例如,如果 是 UInt16
, 是 Ufix4
,那么 是 16 位, 是 4 位, 是 4 位。如果向 din 输入 980
,其二进制表示为 0000001111010100
。din 的列表示法是 c4 = 0000
,c3 = 0011
,c2 = 1101
,c1 = 0100
,其中 c1 是第一列。
下表显示了对不同输入数据组合使用列写法的结果。
值 wr_en | 二进制表示 wr_en | 选择写入 RAM 的列 | 存储单元中的数据:写入操作前 | 存储单元中的数据:写入操作后 | dout |
---|---|---|---|---|---|
|
|
c2, c1 |
c4= |
c4= |
|
|
|
c3 |
c4= |
c4= |
|
|
|
c3, c2 |
c4= |
c4= |
|
|
|
c4, c1 |
c4= |
c4= |
|
|
|
c4, c1 |
c4= |
c4= |
|
*``限制。
-
写使能输入端口不支持带符号数据类型和非零分数长度的输入。
-
写入输入数据字的长度必须是写入启用字长度的倍数。