Считайте и запишите ячейки памяти на аппаратной плате из MATLAB
socAXIMaster
объект связывается с ведущим IP MATLAB® AXI, работающим на аппаратной плате. Объект использует связь JTAG, чтобы передать чтение и команды записи к IP и ведомым ячейкам памяти доступа на аппаратной плате. Передайте socAXIMaster
возразите в качестве аргумента, когда вы создадите socIPCore
объект, так, чтобы объект мог получить доступ к ячейкам памяти в ядре IP на плате.
создает объект, который соединяется с основным IP AXI для заданного axiMasterObj
= socAXIMaster(vendor
)vendor
Связь.This позволяет ячейкам памяти доступа в проекте SoC из MATLAB.
создает объект, который соединяется с основным IP AXI на заданной аппаратной плате. axiMasterObj
= socAXIMaster(hw
)
создает объект с дополнительными свойствами, заданными одним или несколькими axiMasterObj
= socAXIMaster(___,Name,Value)Name,Value
парные аргументы. Заключите каждое имя свойства в кавычки. Задайте свойства в дополнение к входным параметрам в предыдущих синтаксисах.
vendor
— Фирменный знак FPGA'Intel'
| 'Xilinx'
Фирменный знак FPGA, заданный как 'Intel'
или 'Xilinx'
. Основной IP AXI варьируется в зависимости от типа FPGA, который вы имеете.
hw
— Объект HardwaresocHardwareBoard
объектОбъект Hardware, заданный как socHardwareBoard
объект, который представляет связь с аппаратной платой SoC.
JTAGCableType
— Тип кабеля JTAG, используемого в связи с платой FPGA (только платы Xilinx®)'auto'
(значение по умолчанию) | 'FTDI'
Тип кабеля JTAG, используемого в связи с платой FPGA (только платы Xilinx), заданный как 'auto'
или 'FTDI'
. Это свойство является самым полезным, когда больше чем один кабель соединяется с хостом - компьютером.
Когда это свойство установлено в 'auto'
(значение по умолчанию), объект автоматически обнаруживает тип кабеля JTAG. Объект приоритизирует поиск кабелей Digilent® и использует этот процесс, чтобы автоматически обнаружить тип кабеля.
socAXIMaster
поиски объектов кабеля Digilent. Если объект находит:
Точно один кабель Digilent – объект использует тот кабель в связи с платой FPGA.
Больше чем один кабель Digilent – объект возвращает ошибку. Чтобы разрешить эту ошибку, задайте желаемый кабель с помощью JTAGCableName
свойство.
Никакие кабели Digilent – поиски объектов кабеля FTDI (см. шаг 2).
Если никакой кабель Digilent не найден, socAXIMaster
поиски объектов кабеля FTDI. Если объект находит:
Точно один кабель FTDI – объект использует тот кабель в связи с платой FPGA.
Больше чем один кабель FTDI – объект возвращает ошибку. Чтобы разрешить эту ошибку, задайте желаемый кабель с помощью JTAGCableName
свойство.
Никакие кабели FTDI – объект возвращает ошибку. Чтобы разрешить эту ошибку, соедините кабель Digilent или FTDI.
Поиск кабеля в 'auto'
режим приоритизирует связь с помощью кабеля Digilent. Если один 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
— JTAG синхронизируют частоту
(значение по умолчанию) | положительное целое числоJTAG синхронизируют частоту, в МГц, заданном как положительное целое число. Для Intel® FPGAs частота часов JTAG должна составить 12 МГц или 24 МГц. Для Xilinx FPGAs частота часов JTAG должна составить 33 МГц или 66 МГц. Частота часов JTAG зависит от типа кабеля и максимальной частоты часов, поддержанной платой FPGA.
JTAGChainPosition
— Положение FPGA в цепи JTAG (только платы Xilinx)
(значение по умолчанию) | положительное целое числоПоложение FPGA в цепи JTAG (только платы Xilinx), заданный как положительное целое число. Задайте это значение свойства, если больше чем одно устройство FPGA или Zynq® находится на цепи JTAG.
IRLengthBefore
— Сумма длины регистра команд для всех устройств перед целевым FPGA (только платы Xilinx)
(значение по умолчанию) | неотрицательное целое числоСумма длины регистра команд для всех устройств перед целевым FPGA (только платы Xilinx), заданный как неотрицательное целое число. Задайте это значение свойства, если больше чем одно устройство FPGA или Zynq находится на цепи JTAG.
IRLengthAfter
— Сумма длины регистра команд для всех устройств после целевого FPGA (только платы Xilinx)
(значение по умолчанию) | неотрицательное целое числоСумма длины регистра команд для всех устройств после целевого FPGA (только платы Xilinx), заданный как неотрицательное целое число. Задайте это значение свойства, если больше чем одно устройство FPGA или Zynq находится на цепи JTAG.
readmemory | Считайте данные из ведомых устройств с отображенной памятью AXI4 |
release | Выпустите ресурс кабеля JTAG |
writememory | Запишите данные к ведомым устройствам с отображенной памятью AXI4 |
Для примера того, как сконфигурировать и использовать основной IP AXI в вашем проекте, смотрите Произвольный доступ Внешней памяти. А именно, рассмотрите soc_image_rotation_axi_master.m
скрипт, который инициализирует память на устройстве, запускает логику FPGA и считывает назад модифицированные данные. Этот пример показывает только шаг инициализации памяти.
Загрузите .mat
файл, который содержит структуры, выведенные из параметров конфигурации платы. Этот файл был сгенерирован SoC Builder. Эти структуры также описывают ядра IP и конфигурацию памяти проекта на плате. Настройте ведущую связь JTAG AXI путем создания socHardwareBoard
и передача его к socAXIMaster
объект. 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.
Создайте объект шаблона 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 соединяются с вашим хостом - компьютером, объект приоритизирует кабели Digilent по кабелям 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.
Чтобы связаться с этой платой Арти, задайте соответствие имя кабеля JTAG.
h = socAXIMaster('Xilinx','JTAGCableName','#tpt_0001#ptc_0002#210319789795')
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.