writememory

Запишите данные к ведомым устройствам с отображенной памятью AXI4

Описание

пример

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

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

Примеры

свернуть все

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

Создайте объект шаблона AXI MATLAB. Объект соединяется с аппаратной платой и подтверждает, что 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