主要内容

hdl.RAM

单身,简单的对偶,或双端口RAM内存读/写访问

描述

hdl.RAM读和写为一个内存位置,简单的对偶,或双端口RAM。输出数据是延迟一步。如果你的输入数据是标量,地址必须标量和允许写入输入,和HDL编码器™推断一个内存块。如果您的数据是一个矢量,高密度脂蛋白编码器推断并行内存数组银行。与矢量数据输入地址和写启用输入可以是标量或矢量。当你指定写启用和标量输入地址端口,系统对象相同的操作适用于每一个RAM银行。

hdl.RAM系统对象™231日字节的内部存储。RAM的大小考虑地址宽度,所使用的字节数储存每个单词,和银行的RAM数量。

读或写在RAM内存位置:

  1. 创建hdl.RAM对象并设置其属性。

  2. 调用对象的参数,就好像它是一个函数。

了解更多关于系统对象是如何工作的,看到的系统对象是什么?

创建

描述

例子

内存= hdl.RAM返回一个单独的端口内存系统对象,您可以从内存位置写入或读取。

例子

内存= hdl.RAM (的名字,价值)返回一个单一的、简单的双重或双端口RAM系统对象与属性设置使用一个或多个名称-值对。在单引号附上每个属性的名字。

属性

全部展开

属性,除非另有注明nontunable后,这意味着你不能改变它们的值调用对象。对象锁当你叫他们,释放函数打开它们。

如果一个属性可调在任何时候,你可以改变它的值。

改变属性值的更多信息,请参阅系统设计在MATLAB使用系统对象

类型的内存,指定为:

  • 单独的端口的——创建一个单独的端口内存写入数据,地址,和允许写入输入和读取数据输出。

  • 简单的双端口的——创建一个简单的双端口RAM写入数据,写地址,允许写入和读取地址作为输入从读地址和数据输出。

  • “双港”——创建一个双端口RAM写入数据,写地址,允许写入和读取地址作为输入从读地址和写地址和数据输出。

行为写输出,指定为:

  • “新数据”——发送新的数据到输出的地址。

  • “旧数据”——发送旧数据到输出的地址。

依赖关系

当你设置指定这个属性RamType单独的端口的“双港”。这个属性不会申请简单的双端口RAM对象。

初步仿真系统的输出对象,指定为:

  • 一个标量值。

  • 一个向量之间的一对一映射的初始值和RAM。

使用

描述

dataOut= ram (wrData,rwAddress,雷恩)读取内存位置的价值rwAddress雷恩是假的。当雷恩是真的,你写的价值wrData的内存位置rwAddressdataOut新的或旧的数据在哪里rwAddress。使用这个语法当您创建一个单独的端口RAM系统对象。

rdDataOut= ram (wrData,wrAddress,雷恩,rdAddress)写价值wrData到内存位置wrAddress雷恩是真的。rdDataOut旧数据的地址位置吗rdAddress。当你使用这个语法创建一个简单的双端口RAM系统对象。

(wrDataOut,rdDataOut)= ram (wrData,wrAddress,雷恩,rdAddress)写价值wrData的内存位置wrAddress雷恩是真的。wrDataOut是新的还是旧的数据在内存位置wrAddressrdDataOut旧数据的地址位置吗rdAddress。当你使用这个语法创建一个双端口RAM系统对象。

输入参数

全部展开

数据写入内存内存位置时雷恩是真的。这个值可以,,一半,整数,或者一个定点(fi)对象,可以真实的或复杂的。的hdl.RAM使用定点数据块类型内部地址计算。这导致的检查定点设计师™产品许可证。

数据类型:||一半|int8|int16|uint8|uint16|fi

你写的地址wrData到当雷恩是真的。系统对象读取内存位置的价值rwAddress雷恩是假的。这个值可以是定点(fi)整数之间,必须无符号,必须231日位长。指定这个地址当你创建一个单独的端口内存对象。

请注意

即使一个内置的输入数据整数数据类型,hdl.RAM使用定点数据块类型内部地址计算使用RAM银行时。这导致的检查定点设计师产品许可证。

数据类型:uint8|uint16|fi

雷恩是真的,你写吗wrData到RAM内存位置。如果您创建了一个单独的端口内存,系统对象读取内存位置时的价值雷恩是假的。这个值必须符合逻辑。

数据类型:逻辑

地址,你读的数据,当你创建一个简单的双端口RAM或双端口RAM系统对象。这个值可以是定点(fi)整数之间,必须无符号,必须231日位长。

请注意

即使一个内置的输入数据整数数据类型,hdl.RAM使用定点数据块类型内部地址计算使用RAM银行时。这导致的检查定点设计师产品许可证。

数据类型:uint8|uint16|fi

地址你写数据到当你创建一个简单的双端口RAM或双端口RAM系统对象。这个值可以是定点(fi)整数之间,必须无符号,必须231日位长。

请注意

即使一个内置的输入数据整数数据类型,hdl.RAM使用定点数据块类型内部地址计算使用RAM银行时。这导致的检查定点设计师产品许可证。

数据类型:uint8|uint16|fi

输出参数

全部展开

输出数据的系统对象读取的内存位置rwAddress当一个单独的端口内存对象雷恩是假的。

旧的输出数据,系统对象读取的内存位置rdAddress一个简单的双端口RAM或双端口RAM系统对象。

新的或旧的输出数据,系统对象读取的内存位置wrAddress一个简单的双端口RAM或双端口RAM系统对象。

对象的功能

使用一个目标函数,指定系统对象作为第一个输入参数。例如,释放系统资源的系统对象命名obj使用这个语法:

发行版(obj)

全部展开

一步 运行系统对象算法
释放 释放资源,并允许修改系统对象属性值和输入特征
重置 重置的内部状态系统对象

例子

全部折叠

构建系统对象读取或者写入一个内存位置在RAM中。集WriteOutputValue旧数据返回前一个值存储在写地址。

输出数据端口对应的读/写地址。写操作期间,在写地址是旧数据发送输出。

ram_1p = hdl.RAM (“RAMType”,单独的端口的,“WriteOutputValue”,“旧数据”)
ram_1p =高密度脂蛋白。RAM的属性:RAMType:“单独的端口”WriteOutputValue:“旧数据”RAMInitialValue: 0
dataLength = 10;dataIn = 1:10;dataLength dataOut = 0 (1);

编写一个计算模式来记忆。之前的值在第一次写的都是零。

2 = 1:dataLength addressIn = uint8 (ii-1);writeEnable = true;dataOut (ii) = ram_1p (dataIn (ii), addressIn, writeEnable);结束dataOut
dataOut =1×100 0 0 0 0 0 0 0 0 0

读取数据。

2 = 1:dataLength addressIn = uint8 (ii-1);writeEnable = false;dataOut (ii) = ram_1p (dataIn (ii), addressIn, writeEnable);结束dataOut
dataOut =1×100 1 2 3 4 5 6 7 8 9

现在,计数在相反的顺序写。前面的值是原来的数。

2 = 1:dataLength addressIn = uint8 (ii-1);writeEnable = true;dataOut (ii) = ram_1p (dataIn (dataLength-ii + 1), addressIn, writeEnable);结束dataOut
dataOut =1×1010 1 2 3 4 5 6 7 8 9

创建系统对象写入到一个单独的端口RAM和读取新写的价值。

构建广泛RAM系统对象。当你写一个位置,该对象返回的新值。RAM的大小是推断从地址和写入数据的位宽进行第一次调用对象。

ram_1p = hdl.RAM (“RAMType”,单独的端口的,“WriteOutputValue”,“新数据”);dataLength = 16;[dataIn, dataOut] =交易(uint8 (0 (1, dataLength)));

编写系统随机生成的数据对象,然后重新读取数据信息。

2 = 1:dataLength dataIn (ii) =兰迪(63)[0,1,1,“uint8”);addressIn = fi ((ii-1), 0 4 0);writeEnable = true;dataOut (ii) = ram_1p (dataIn (ii), addressIn, writeEnable);结束dataOut
dataOut =1 x16 uint8行向量0 52 57 8 58 40 6 17 35 61 61 62 61 31 51
2 = 1:dataLength addressIn = fi ((ii-1), 0 4 0);writeEnable = false;dataOut (ii) = ram_1p (dataIn (ii), addressIn, writeEnable);结束dataOut
dataOut =1 x16 uint8行向量9 52 57 8 58 40 17 35 61 61 62 61 31 51

构建系统对象读取和写入不同的内存位置在RAM中。

输出数据端口对应于读地址。如果执行读操作与写操作相同的地址,旧数据地址读出作为输出。RAM的大小是推断从地址和写入数据的位宽进行第一次调用对象。

ram_2p = hdl.RAM (“RAMType”,简单的双端口的);dataLength = 16;[dataIn, dataOut] =交易(uint8 (0 (1, dataLength)));

编写系统随机生成的数据对象,并阅读旧数据来自同一个地址。

2 = 1:dataLength dataIn (ii) =兰迪(63)[0,1,1,“uint8”);wrAddr = fi ((ii-1), 0 4 0);writeEnable = true;dataOut (ii) = ram_2p (dataIn (ii), wrAddr, writeEnable, wrAddr);结束dataOut
dataOut =1 x16 uint8行向量0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

从不同的地址写和读。对象返回读取结果后一个周期延迟。

2 = 1:dataLength wrAddr = fi ((ii-1), 0 4 0);rdAddr = fi (dataLength-ii + 1 0 4 0);writeEnable = true;dataOut (ii) = ram_2p (dataIn (ii), wrAddr, writeEnable, rdAddr);结束dataOut
dataOut =1 x16 uint8行向量0 9 9 51 31 61 62 61 61 35 17 6 40 58 8

构建系统对象读取和写入不同的内存位置在RAM中。

有两个输出端口:写入输出数据端口和读取输出数据端口。写入输出数据端口发送新数据的写地址。读取输出数据端口发出的旧数据读取地址。RAM的大小是推断从地址和写入数据的位宽进行第一次调用对象。

ram_2p = hdl.RAM (“RAMType”,“双港”,“WriteOutputValue”,“新数据”);dataLength = 16;[dataIn, wrDataOut rdDataOut] =交易(uint8 (0 (1, dataLength)));

编写系统随机生成的数据对象,并阅读旧数据来自同一个地址。

2 = 1:dataLength dataIn (ii) =兰迪(63)[0,1,1,“uint8”);wrAddr = fi ((ii-1), 0 4 0);writeEnable = true;[wrDataOut (ii), rdDataOut (ii)] = ram_2p (dataIn (ii), wrAddr, writeEnable, wrAddr);结束wrDataOut
wrDataOut =1 x16 uint8行向量0 52 57 8 58 40 6 17 35 61 61 62 61 31 51
rdDataOut
rdDataOut =1 x16 uint8行向量0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

从不同的地址写和读。对象返回读取结果后一个周期延迟。

2 = 1:dataLength wrAddr = fi ((ii-1), 0 4 0);rdAddr = fi (dataLength-ii + 1 0 4 0);writeEnable = true;[wrDataOut (ii), rdDataOut (ii)] = ram_2p (dataIn (ii), wrAddr, writeEnable, rdAddr);结束wrDataOut
wrDataOut =1 x16 uint8行向量9 52 57 8 58 40 17 35 61 61 62 61 31 51
rdDataOut
rdDataOut =1 x16 uint8行向量0 9 9 51 31 61 62 61 61 35 17 6 40 58 8

创建一个系统对象,可以写出矢量数据到一个双端口RAM和矢量数据读出来。向量的每个元素对应于一个单独的银行的RAM。这个示例创建了4个16位的银行。每个银行都有八个条目。

构建双端口RAM系统对象。

ram_2p = hdl.RAM (“RAMType”,“双港”,“WriteOutputValue”,“新数据”);

创建矢量和地址写入数据。使用一个3-bit地址(8位置),和写16位数据。读和写地址是独立的。输出数据分配内存。

ramDataIn = fi (randi((2 ^ 16) 1, 1, 4), 0, 16日0);ramReadAddr = fi (1, 1, 1, 1, 0 3 0);ramWriteAddr = fi (1, 1, 1, 1, 0 3 0);[wrOut, rdOut] =交易(fi(0(1、4), 0, 16日0));

首先,写在银行1和4,然后读取所有银行。回荡在写入数据wrOut输出参数。对象返回读取结果后一个周期延迟。

[wrOut, rdOut] = ram_2p (ramDataIn ramWriteAddr,真的,假的,假的,真的,ramReadAddr);[wrOut, rdOut] = ram_2p (ramDataIn ramWriteAddr,假的,假的,假的,假的,ramReadAddr);[wrOut, rdOut] = ram_2p (ramDataIn ramWriteAddr,假的,假的,假的,假的,ramReadAddr)
wrOut = 53393 0 0 59859 DataTypeMode:定点:二进制扩展Signedness:无符号字:16 FractionLength: 0
rdOut = 53393 0 0 59859 DataTypeMode:定点:二进制扩展Signedness:无符号字:16 FractionLength: 0

算法

全部展开

在你的模型金宝app®模型,您可以使用hdl.RAM在一个MATLAB系统或者一个MATLAB函数块。如果你日志的输出MATLAB系统块,输出数据至少有三个维度,因为MATLAB系统块至少有两个维度,时间数据添加一个第三维度。例如,如果您输入标量数据块,记录的输出数据的维度1 x1xn,在那里N是时间的数量的步骤。获得一个输出尺寸输入尺寸一样,添加一个重塑块的输出输出维度设置为来自标准输入端口

扩展功能

C / c++代码生成
生成C和c++代码使用MATLAB®编码器™。

HDL代码生成
生成FPGA和ASIC设计的Verilog和VHDL代码使用HDL编码器™。

定点转换
设计和模拟使用定点定点系统设计师™。

版本历史

介绍了R2015a