writememory

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

Описание

пример

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

writememory(mem,addr,data,Name,Value) записывает все слова, указанные в data, начиная с адреса, указанного в 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' .

Перед отправкой запроса на запись на плату функция переводит входные данные в uint32 или int32 тип данных. Преобразование типа данных выполняется в соответствии с этими правилами:

  • Если тип входных данных double, затем данные приводятся к int32 тип данных.

  • Если тип входных данных single, затем данные приводятся к uint32 тип данных.

  • Если ширина битов входного типа данных меньше 32 битов, то данные расширяются до 32 битов.

  • Если битовая ширина типа входных данных больше 32 битов, то данные приводятся к int32 или uint32 тип данных, совпадающий с сигнальностью исходного типа данных.

  • Если входные данные являются типом данных с фиксированной точкой, то функция записывает сохраненное целое значение данных.

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

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

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

Пример: writememory(mem,140,[20:29],'BurstType','Fixed')

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

См. также

Введенный в R2019a