Считывайте и записывайте места памяти на аппаратной плате из MATLAB
The socAXIMaster
объект взаимодействует с MATLAB® Главный IP AXI, работающий на оборудовании плате. Объект использует соединение JTAG для пересылки команд чтения и записи на IP и доступа к расположениям ведомой памяти на аппаратной плате. Передайте socAXIMaster
объект как аргумент при создании socIPCore
объект, так что объект может получить доступ к местам памяти внутри ядра IP на плате.
создает объект, который соединяется с основным IP-адресом AXI для заданного axiMasterObj
= socAXIMaster(vendor
)vendor
.This connection позволяет вам получить доступ к местам памяти в проект от MATLAB.
создает объект, который соединяется с основным IP-адресом AXI на указанной аппаратной плате. axiMasterObj
= socAXIMaster(hw
)
создает объект с дополнительными свойствами, заданными одним или несколькими axiMasterObj
= socAXIMaster(___,Name,Value)Name,Value
аргументы в виде пар. Заключайте каждое имя свойства в кавычки. Задайте свойства в дополнение к входным параметрам в предыдущих синтаксисах.
vendor
- имя FPGA'Intel'
| 'Xilinx'
Имя бренда FPGA, обозначаемое как 'Intel'
или 'Xilinx'
. Основной IP AXI изменяется в зависимости от типа FPGA.
hw
- Аппаратный объектsocHardwareBoard
объектАппаратный объект, заданный как socHardwareBoard
объект, представляющий соединение с аппаратной платой СнК.
JTAGCableType
- Тип кабеля JTAG, используемого для связи с платой FPGA (Xilinx® только платы)'auto'
(по умолчанию) | 'FTDI'
Тип кабеля JTAG, используемого для связи с платой FPGA (только для плат Xilinx), указывается как 'auto'
или 'FTDI'
. Это свойство наиболее полезно, когда к хосту-компьютеру подключено более одного кабеля.
Когда для этого свойства задано значение 'auto'
(по умолчанию), объект автоматически определяет тип кабеля JTAG. Объект расставляет приоритеты в поиске Digilent® Кабели и используют этот процесс для автоматического определения типа кабеля.
The socAXIMaster
объект выполняет поиск кабеля Digilent. Если объект находит:
Только один кабель Digilent - объект использует этот кабель для связи с платой FPGA.
Более одного кабеля Digilent - объект возвращает ошибку. Чтобы устранить эту ошибку, укажите требуемый кабель с помощью JTAGCableName
свойство.
Нет кабелей Digilent - объект ищет кабель FTDI (см. Шаг 2).
Если кабель Digilent не найден, socAXIMaster
объект выполняет поиск кабеля FTDI. Если объект находит:
Только один кабель FTDI - объект использует этот кабель для связи с платой FPGA.
Более одного кабеля FTDI -- Объект возвращает ошибку. Чтобы устранить эту ошибку, укажите требуемый кабель с помощью JTAGCableName
свойство.
Нет кабелей FTDI -- Объект возвращает ошибку. Чтобы устранить эту ошибку, подключите кабель Digilent или FTDI.
Поиск кабеля в 'auto'
режим определяет приоритеты подключения с помощью цифрового кабеля. Если к хосту-компьютеру подключены один кабель Digilent и один кабель FTDI, и для этого свойства задано значение 'auto'
объект выбирает кабель Digilent для связи с платой FPGA.
Когда для этого свойства задано значение 'FTDI'
объект ищет кабели FTDI. Если объект находит:
Только один кабель FTDI - объект использует этот кабель для связи с платой FPGA.
Более одного кабеля FTDI -- Объект возвращает ошибку. Чтобы устранить эту ошибку, укажите требуемый кабель с помощью JTAGCableName
свойство.
Нет кабелей FTDI -- Объект возвращает ошибку. Чтобы устранить эту ошибку, подключите кабель Digilent или FTDI.
Для получения примера см. раздел «Выбор из нескольких кабелей JTAG».
JTAGCableName
- Имя кабеля JTAG, используемого для связи с платой FPGA'auto'
(по умолчанию) | вектор символовИмя пользователя кабеля JTAG для связи с платой FPGA, указанное как 'auto'
или вектор символов. Задайте это свойство, если к хосту-компьютеру подключено более одного кабеля JTAG того же типа. Если у хост-компьютер больше одного кабеля JTAG, и вы не задаете это свойство, объект возвращает ошибку. Сообщение об ошибке содержит имена доступных кабелей JTAG. Для получения примера см. раздел «Выбор из нескольких кабелей JTAG».
TckFrequency
- тактовая частота JTAG15
(по умолчанию) | положительное целое числоТактовая частота JTAG, в МГц, задается как положительное целое число. Для Intel® FPGA тактовая частота JTAG должна быть 12 МГц или 24 МГц. Для плат Xilinx FPGA тактовая частота JTAG должна быть 33 МГц или 66 МГц. Тактовая частота JTAG зависит от типа кабеля и максимальной тактовой частоты, поддерживаемой платой FPGA.
JTAGChainPosition
- Положение ПЛИС в цепи JTAG (только для плат Xilinx)1
(по умолчанию) | положительное целое числоПоложение FPGA в цепи JTAG (только для плат Xilinx) в виде положительного целого числа. Задайте это значение свойства, если более одного FPGA или Zynq® устройство находится в цепи JTAG.
IRLengthBefore
- Сумма длины регистра команд для всех устройств перед целевым FPGA (только для плат Xilinx)0
(по умолчанию) | неотрицательное целое числоСумма длины регистра команд для всех устройств перед целевым FPGA (только для плат Xilinx), заданная в виде неотрицательного целого числа. Задайте это значение свойства, если в цепи JTAG находится более одного устройства FPGA или Zynq.
IRLengthAfter
- Сумма длины регистра команд для всех устройств после целевого FPGA (только для плат Xilinx)0
(по умолчанию) | неотрицательное целое числоСумма длины регистра команд для всех устройств после целевых плат FPGA (только для плат Xilinx), заданная в виде неотрицательного целого числа. Задайте это значение свойства, если в цепи JTAG находится более одного устройства FPGA или Zynq.
readmemory | Считайте данные из AXI4 ведомых устройств, сопоставленных с памятью |
release | Отпустите ресурс кабеля JTAG |
writememory | Запись данных в AXI4 подчиненные устройства, сопоставленные с памятью |
Для примера того, как сконфигурировать и использовать мастер-IP AXI в вашем проекте, смотрите Random Access of External Memory. В частности, проверьте soc_image_rotation_axi_master.m
скрипт, который инициализирует память на устройстве, запускает логику FPGA и считывает измененные данные. В этом примере показан только шаг инициализации памяти.
Загрузка .mat
файл, содержащий структуры, выведенные из параметров конфигурации платы. Этот файл был сгенерирован SoC Builder. Эти структуры также описывают IP-ядра и строение памяти проекта на плате. Настройте главное соединение JTAG AXI путем создания socHardwareBoard
и передав его в socAXIMaster
объект. The socAXIMaster
объект соединяется с платой оборудования и подтверждает, что IP присутствует.
load('soc_image_rotation_zc706_aximaster.mat'); hwObj = socHardwareBoard('Xilinx Zynq ZC706 evaluation kit','Connect',false); AXIMasterObj = socAXIMaster(hwObj);
Инициализируйте содержимое памяти на устройстве, загрузив данные рисунки и записав их в Region1
. Логика FPGA предназначена для чтения этих данных, вращения их и записи в Region2
. Очистить содержимое Region2
.
load('soc_image_rotation_inputdata.mat');
inputFigure = smallImage;
[x, y] = size(inputFigure);
inputImage = uint32(reshape(inputFigure',1,x*y));
writememory(AXIMasterObj,memRegions.AXI4MasterMemRegion1,inputImage);
writememory(AXIMasterObj,memRegions.AXI4MasterMemRegion2,uint32(zeros(1,x*y)));
В данном примере необходимо иметь проект, выполняемый на аппаратной плате, подключенной к хост-машине 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 к хосту-компьютеру объект отдает приоритет цифровым кабелям по сравнению с кабелями FTDI. Для использования кабеля FTDI задайте свойство типа кабеля JTAG.
h = socAXIMaster('Xilinx', 'JTAGCableType', 'FTDI')
Если к хосту-компьютеру подключены два кабеля одного типа, задайте JTAGCableName
свойство для платы, на которой работает главный IP-адрес JTAG. Чтобы увидеть идентификаторы кабеля JTAG, попытайтесь создать socAXIMaster
объект, который в этом случае ошибается и возвращает список текущих имен кабелей JTAG.
h = socAXIMaster('Xilinx')
Error using fpgadebug_mex Found more than one JTAG cable: 0 (JtagSmt1): #tpt_0001#ptc_0002#210203991642 1 (Arty): #tpt_0001#ptc_0002#210319789795 Please disconnect the extra cable, or specify the cable name as an input argument. See documentation of FPGA Data Capture or MATLAB as AXI master to learn how to set the cable name.
Для связи с этой платой Arty задайте соответствующее имя кабеля JTAG.
h = socAXIMaster('Xilinx','JTAGCableName','#tpt_0001#ptc_0002#210319789795')
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.