Запишите данные к ведомым устройствам с отображенной памятью AXI4
writememory(mem,addr,data)
writememory(mem,addr,data,Name,Value)
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)
mem
— Связь JTAG с основным IP AXI, работающим на аппаратной платеsocAXIMaster
Связь JTAG с основным IP AXI, работающим на вашей аппаратной плате, заданной как объект socAXIMaster
.
addr
— Начальный адрес для операции записиНачальный адрес для операции чтения, заданной как целое число или вектор шестнадцатеричного символа. Функция бросает адрес к типу данных uint32
. Адрес должен относиться к ведомой ячейке памяти AXI, которой управляет основной IP AXI на вашей аппаратной плате.
Пример: 'a4'
данные
Слова данных, чтобы записатьСлова данных, чтобы записать, заданный как скаляр или вектор. По умолчанию функция пишет данные в непрерывный блок адреса, постепенно увеличивая адрес для каждой операции. Чтобы выключить адрес постепенно увеличивают и пишут каждое значение данных в то же местоположение, устанавливают свойство BurstType
на 'Fixed'
.
Прежде, чем отправить запрос записи к плате, функция бросает входные данные к типу данных int32
или uint32
. Преобразование типа данных следует этим правилам:
Если типом входных данных является double
, то данные брошены к типу данных int32
.
Если типом входных данных является single
, то данные брошены к типу данных uint32
.
Если битная ширина типа входных данных составляет меньше чем 32 бита, то данные расширены знаком к 32 битам.
Если битная ширина типа входных данных более долга, чем 32 бита, то данные брошены к int32
или типу данных uint32
, совпадая с со знаком из исходного типа данных.
Если входные данные являются типом данных с фиксированной точкой, то функция пишет сохраненное целочисленное значение данных.
Когда вы задаете большой размер операции, такой как запись блока памяти DDR, функция автоматически повреждает операцию в несколько пакетов, с помощью максимального поддерживаемого пакетного размера. Максимальный поддерживаемый пакетный размер является 256 словами.
Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми.
Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение.
Name
должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.
writememory(mem,140,[20:29],'BurstType','Fixed')
'BurstType'
— Пакетный тип AXI4'Increment'
(значение по умолчанию) | 'Fixed'
Пакетный тип AXI4, заданный как пара, разделенная запятой, состоящая из 'BurstType'
и или 'Increment'
или 'Fixed'
. Если этим значением является 'Increment'
, ведущее устройство AXI пишет вектор данных из непрерывных ячеек памяти, начиная с заданного адреса. Если этим значением является 'Fixed'
, основные средства записи AXI все данные из того же адреса.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.