Запись данных в 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)
mem - Подключение JTAG к главному IP AXI, работающему на аппаратной платеsocAXIMaster объектПодключение JTAG к главному IP AXI, выполняемому на вашей аппаратной плате, задается как socAXIMaster объект.
addr - Начальный адрес для операции записиНачальный адрес для операции чтения, заданный как целое число или шестнадцатеричный вектор символов. Функция отсылает адрес к uint32 тип данных. Адрес должен ссылаться на местоположение ведомой памяти AXI, управляемое ведущим IP AXI на вашей аппаратной плате.
Пример: 'a4'
data - Слова данных для записиСлова данных для записи, заданные как скаляр или вектор. По умолчанию функция записывает данные в непрерывный адресный блок, увеличивая адрес для каждой операции. Чтобы выключить шаг адреса и записать каждое значение данных в одно и то же место, установите 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')'BurstType' - AXI4 типа пакета'Increment' (по умолчанию) | 'Fixed'AXI4 пакет, заданный как разделенная разделенными запятой парами, состоящая из 'BurstType' и любой из них 'Increment' или 'Fixed'. Если это значение 'Increment'мастер AXI записывает вектор данных из смежных мест памяти, начиная с заданного адреса. Если это значение 'Fixed'мастер AXI записывает все данные с одного адреса.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.