Read data from AXI4 memory-mapped slaves
data = readmemory(
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
addr, must refer to an
AXI slave memory location controlled by the AXI master IP on your hardware board. The
the connection between MATLAB® and the AXI master IP.
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 master 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
mem = socAXIMaster('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
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
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
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.
mem — JTAG connection to AXI master IP running on hardware board
JTAG connection to AXI master IP running on your hardware board, specified as an
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 master IP
on your hardware board.
size — Number of locations to read
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,
BurstType property to
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.
Specify optional pairs of arguments as
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.
BurstType — AXI4 burst type
'Increment' (default) |
AXI4 burst type, specified as the comma-separated pair consisting of
'BurstType' and either
'Fixed'. If this value is
'Increment', the AXI
master reads a vector of data from contiguous memory locations, starting with the
specified address. If this value is
'Fixed', the AXI master reads
all data from the same address.
OutputDataType — Data type assigned to read data
'uint32' (default) |
Data type assigned to the read data, specified as
'single', or a
Introduced in R2019a