Simple Dual Port RAM System
支持同时读写操作的简单双端口RAM。
类型: SimpleDualPortRAMSystem
图书馆中的路径:
|
资料描述
座 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 data
或Old data
操作的结果要么是写入地址的新数据,要么是写入操作之前存储在地址上的数据。 新数据仅由*wr_en*端口上的使能信号记录。 如果读和写操作是在同一地址执行的,那么读操作在写操作之前进行。
港口
输出
#
rd_dout
—
从读取地址输出的数据
scalar
| vector
Details
从读取地址 rd_addr 输出数据。
依赖关系
要使用该端口,请将 Specify the type of RAM 设置为 Simple dual port`或 `Dual port
.
数据类型 |
|
复数支持 |
无 |
#
输出
—
从读取地址输出
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
.
数据类型 |
|
复数支持 |
无 |
输入
#
嘈杂声
—
记录数据
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 端口的信号如何,都会进行读操作。
要使用列写方法,数据类型必须是整数或定点。 |
数据类型 |
|
复数支持 |
无 |
#
rd_addr
—
读取地址
标量
Details
以标量或向量形式指定的读取地址。使用该地址从 RAM 中读取数据。该值可以是定点或整数数据类型,必须是无符号的,长度必须在 2
和 31
位之间。
依赖关系
要使用该端口,请将 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,以写数据a
和b
、写地址a
和b
、读地址a
和b
、写使能a
和b
作为输入,写地址a
和b
的数据作为输出。
值 |
|
默认值 |
|
程序使用名称 |
|
可调谐 |
无 |
可计算 |
无 |
#
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
.
值 |
|
默认值 |
|
程序使用名称 |
|
可调谐 |
无 |
可计算 |
无 |
# Specify the RAM initial value — RAM 模拟的初始输出数据
Details
指定 RAM 仿真的初始输出数据:
-
标量值。
-
一个向量,其元素对应初始值和 RAM 字。
-
矩阵 by ,其元素对应 RAM 库中的初始值和 RAM 字,其中 代表 RAM 库的数量, 代表 RAM 块中地址位置的数量,反之亦然。
默认值 |
|
程序使用名称 |
|
可调谐 |
无 |
可计算 |
是 |
更详细
使用列输入方法选择性地写入列
Details
您可以使用列写入方法将RAM视为一组相同大小的列。 在记录周期期间,可以单独写入这些列中的每一个。 写入权限输入的数据类型和值,以及写入数据输入的数据类型,确定每列的大小以及块将可寻址存储器位置写入其中的列。
在这方面:
-
-记录数据输入的数据类型为*din*。
-
-输入数据的宽度,其等于字值*din*的长度。
-
-写入许可信号的数据类型为*wr_en*。 该信号确定块向可寻址存储器位置写入哪些列。 该块根据*wr_en*值的二进制表示中的"1"的位置写入列。
-
-可将用于写入数据的RAM空间划分到其中的列数,等于字值*wr_en*的长度。
-
-每列的宽度,等于 .
该表显示了记录数据条目的数据类型、记录权限条目的数据类型、列数和每列宽度之间的关系。
以比特为单位 | ||||
---|---|---|---|---|
'UInt16` |
|
`Ufix4' |
|
|
'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='0000` c3='0000` c2='0000` c1='0000` |
c4='0000` c3='0000` c2='1101` c1='0100` |
|
|
|
c3 |
c4='0000` c3='0000` c2='0000` c1='0000` |
c4='0000` c3='0011` c2='0000` c1='0000` |
|
|
|
c3,c2 |
c4='0000` c3='0000` c2='0000` c1='0000` |
c4='0000` c3='0011` c2='1101` c1='0000` |
|
|
|
c4,c1 |
c4='0000` c3='0000` c2='0000` c1='0000` |
c4='0000` c3='0000` c2='0000` c1='0100` |
|
|
|
c4,c1 |
c4='1111` c3='1111` c2='1111` c1='1111` |
c4='0000` c3='1111` c2='1111` c1='0000` |
|
限制
-
写解析输入端口不支持带符号数据类型和非零分数长度的输入。
-
用于记录的输入数据字的长度必须是记录分辨率字的长度的倍数。