readmemory

Считайте данные из AXI4 ведомых устройств, сопоставленных с памятью

Описание

пример

data = readmemory(mem,addr,size) читает size местоположения данных, начиная с адреса, указанного в addr, и увеличение адреса для каждого слова. По умолчанию тип выходных данных uint32. addr, должен ссылаться на местоположение ведомой памяти AXI, управляемое ведущим IP AXI на вашей аппаратной плате. The socAXIMaster объект, mem, управляет соединением между MATLAB® и главный IP AXI.

data = readmemory(mem,addr,size,Name,Value) читает size местоположения данных, начиная с адреса, указанного в addr, с дополнительными опциями, заданными одним или несколькими Name,Value аргументы в виде пар.

Примеры

свернуть все

В данном примере необходимо иметь проект, выполняемый на аппаратной плате, подключенной к хост-машине MATLAB.

Создайте основной объект MATLAB AXI. Объект соединяется с платой оборудования и подтверждает, что IP присутствует. Можно создать объект с именем поставщика или socHardwareBoard объект.

mem = socAXIMaster('Xilinx');

Запись и чтение одного или нескольких адресов с помощью одной команды. По умолчанию функции автоматически увеличивают адрес для каждого слова данных. Например, напишите десять адресов, а затем считайте данные обратно из одного местоположения.

writememory(mem,140,[10:19])
rd_d = readmemory(mem,140,1)
rd_d =

  uint32

   10

Теперь ознакомьтесь с письменными данными из десяти локаций.

rd_d = readmemory(mem,140,10)
rd_d =

  1×10 uint32 row vector

   10   11   12   13   14   15   16   17   18   19

Установите BurstType свойство к 'Fixed' чтобы выключить автошаг и получить доступ к одному и тому же адресу несколько раз. Например, считывайте записанные данные десять раз с одного и того же адреса.

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

Напишите инкрементные данные в десять раз по одному и тому же адресу. Окончательное значение, сохраненное в адресных 140 является 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

Кроме того, укажите адрес как шестнадцатеричную строку. Чтобы привести считанные данные к типу данных, отличному от uint32, используйте OutputDataType свойство.

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

После завершения доступа к плате разблокируйте соединение JTAG.

release(mem)

Входные параметры

свернуть все

Подключение JTAG к главному IP AXI, выполняемому на вашей аппаратной плате, задается как socAXIMaster объект.

Начальный адрес для операции чтения, заданный как целое число или шестнадцатеричный вектор символов. Функция отсылает адрес к uint32 тип данных. Адрес должен ссылаться на местоположение ведомой памяти AXI, управляемое ведущим IP AXI на вашей аппаратной плате.

Пример: 'a4'

Количество мест памяти для чтения, заданное в виде целого числа. По умолчанию функция читается из смежного адресного блока, увеличивая адрес для каждой операции. Чтобы выключить шаг адреса и неоднократно считать из того же расположения, установите BurstType свойство к 'Fixed'.

Когда вы задаете большой размер операции, такой как чтение блока памяти DDR, объект автоматически разбивает операцию на несколько пакетов, используя максимальный поддерживаемый размер пакета. Максимальный поддерживаемый размер пакета - 256 слов.

Аргументы в виде пар имя-значение

Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.

Пример: readmemory(mem,140,10,'BurstType','Fixed')

AXI4 пакет, заданный как разделенная разделенными запятой парами, состоящая из 'BurstType' и любой из них 'Increment' или 'Fixed'. Если это значение 'Increment'мастер AXI считывает вектор данных из смежных мест памяти, начиная с заданного адреса. Если это значение 'Fixed'мастер AXI считывает все данные с одного адреса.

Тип данных, присвоенный считанным данным, задается как 'uint32', 'int8', 'int16', 'int32', 'uint8', 'uint16', 'single', или numerictype объект.

Выходные аргументы

свернуть все

Считайте данные, возвращенные как скаляр или вектор в зависимости от значения, для которого вы задали size. Функция приводит данные к типу данных, заданному OutputDataType свойство.

См. также

Введенный в R2019a