readmemory
Read data from AXI4 memory-mapped locations
Description
reads data
= readmemory(mem
,addr
,size
)size
locations of data, starting from the address specified in
addr
, and incrementing the address for each word. By default, the
output data type is uint32
. addr
, must refer to an
AXI slave memory location controlled by the AXI manager IP on your hardware board. The
socAXIManager
object, mem
, manages
the connection between MATLAB® and the AXI manager IP.
data = readmemory(
reads mem
,addr
,size
,Name,Value
)size
locations of data, starting from the address specified in
addr
, with additional options specified by one or more
Name,Value
pair arguments.
Examples
Access Memory on SoC Hardware Board from MATLAB
For this example, you must have a design running on a hardware board connected to the MATLAB host machine.
Create a MATLAB AXI manager object. The object connects with the hardware board and confirms
that the IP is present. You can create the object with a vendor name or an
socHardwareBoard
object.
mem = socAXIManager('Xilinx');
Write and read one or more addresses with one command. By default, the functions auto-increment the address for each word of data. For instance, write ten addresses, then read the data back from a single location.
writememory(mem,140,[10:19]) rd_d = readmemory(mem,140,1)
rd_d = uint32 10
Now, read the written data from ten locations.
rd_d = readmemory(mem,140,10)
rd_d = 1×10 uint32 row vector 10 11 12 13 14 15 16 17 18 19
Set the BurstType
property to 'Fixed'
to turn
off the auto-increment and access the same address multiple times. For instance, read the
written data ten times from the same address.
rd_d = readmemory(mem,140,10,'BurstType','Fixed')
rd_d = 1×10 uint32 row vector 10 10 10 10 10 10 10 10 10 10
Write incrementing data ten times to the same address. The final value stored in address
140
is 29
.
writememory(mem,140,[20:29],'BurstType','Fixed') rd_d = readmemory(mem,140,10)
rd_d = 1×10 uint32 row vector 29 11 12 13 14 15 16 17 18 19
Alternatively, specify the address as a hexadecimal string. To cast the read data to a
data type other than uint32
, use the OutputDataType
property.
writememory(mem,'1c',[0:4:64]) rd_d = readmemory(mem,'1c',16,'OutputDataType',numerictype(0,6,4))
rd_d = Columns 1 through 10 0 0.2500 0.5000 0.7500 1.0000 1.2500 1.5000 1.7500 2.0000 2.2500 Columns 11 through 16 2.5000 2.7500 3.0000 3.2500 3.5000 3.7500 DataTypeMode: Fixed-point: binary point scaling Signedness: Unsigned WordLength: 6 FractionLength: 4
When you are done accessing the board, release the JTAG connection.
release(mem)
Input Arguments
mem
— JTAG connection to AXI manager IP running on hardware board
socAXIManager
object
JTAG connection to AXI manager IP running on your hardware board, specified as an
socAXIManager
object.
addr
— Starting address for read operation
integer | hexadecimal character vector
Starting address for read operation, specified as an integer or a hexadecimal
character vector. The function casts the address to uint32
data type.
The address must refer to an AXI slave memory location controlled by the AXI manager IP
on your hardware board.
Example: 'a4'
size
— Number of locations to read
integer
Number of memory locations to read, specified as an integer. By default, the
function reads from a contiguous address block, incrementing the address for each
operation. To turn off the address increment and read repeatedly from the same location,
set the BurstType
property to 'Fixed'
.
When you specify a large operation size, such as reading a block of DDR memory, the object automatically breaks the operation into multiple bursts, using the maximum supported burst size. The maximum supported burst size is 256 words.
Name-Value Arguments
Specify optional pairs of arguments as
Name1=Value1,...,NameN=ValueN
, where Name
is
the argument name and Value
is the corresponding value.
Name-value arguments must appear after other arguments, but the order of the
pairs does not matter.
Before R2021a, use commas to separate each name and value, and enclose
Name
in quotes.
Example: readmemory(mem,140,10,'BurstType','Fixed')
BurstType
— AXI4 burst type
'Increment'
(default) | 'Fixed'
AXI4 burst type, specified as the comma-separated pair consisting of
'BurstType'
and either 'Increment'
or
'Fixed'
. If this value is 'Increment'
, the AXI
manager reads a vector of data from contiguous memory locations, starting with the
specified address. If this value is 'Fixed'
, the AXI manager reads
all data from the same address.
OutputDataType
— Data type assigned to read data
'uint32'
(default) | 'int8'
| 'int16'
| 'int32'
| 'uint8'
| 'uint16'
| 'single'
| numerictype
object
Data type assigned to the read data, specified as 'uint32'
,
'int8'
, 'int16'
, 'int32'
,
'uint8'
, 'uint16'
,
'single'
, or a numerictype
object.
Output Arguments
data
— Read data
scalar | vector
Read data, returned as scalar or vector depending on the value you specified for
size
. The function casts the data to the data type specified by
the OutputDataType
property.
Version History
Introduced in R2019a
See Also
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)
Asia Pacific
- Australia (English)
- India (English)
- New Zealand (English)
- 中国
- 日本Japanese (日本語)
- 한국Korean (한국어)