Ячейки памяти для чтения и записи на аппаратной плате от MATLAB
socAXIMaster взаимодействует с ведущим IP-адресом MATLAB ® AXI, работающим на аппаратной плате. Объект использует соединение JTAG для пересылки команд чтения и записи в IP и доступа к расположениям ведомой памяти на плате аппаратных средств. Пройти socAXIMaster объект в качестве аргумента при создании socIPCore , чтобы объект мог получить доступ к расположениям памяти в ядре IP на плате.
создает объект, который подключается к главному IP-адресу AXI для указанного axiMasterObj = socAXIMaster(vendor)vendor.Это соединение позволяет получать доступ к расположениям памяти в конструкции SoC из 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 объект, представляющий подключение к аппаратной плате SoC.
JTAGCableType - Тип кабеля JTAG, используемого для связи с платой FPGA (только для плат Xilinx ®)'auto' (по умолчанию) | 'FTDI'Тип кабеля JTAG, используемого для связи с платой FPGA (только платы Xilinx), указанный как 'auto' или 'FTDI'. Это свойство наиболее полезно при подключении к хост-компьютеру нескольких кабелей.
Если для этого свойства установлено значение 'auto' (по умолчанию) объект автоматически обнаруживает тип кабеля JTAG. Объект определяет приоритеты поиска кабелей Digilent ® и использует этот процесс для автоматического определения типа кабеля.
socAXIMaster объект ищет кабель Digilent. Если объект находит:
Только один кабель Digilent - объект использует этот кабель для связи с платой FPGA.
Несколько кабелей Digilent - объект возвращает ошибку. Для устранения этой ошибки укажите требуемый кабель с помощью JTAGCableName собственность.
Нет цифровых кабелей - объект ищет кабель 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 - тактовая частота JTAG15 (по умолчанию) | положительное целое числоТактовая частота JTAG, в МГц, заданная как положительное целое число. Для процессоров Intel ® FPGA тактовая частота JTAG должна составлять 12 или 24 МГц. Для плат Xilinx FPGA тактовая частота JTAG должна быть 33 МГц или 66 МГц. Тактовая частота JTAG зависит от типа кабеля и максимальной тактовой частоты, поддерживаемой платой FPGA.
JTAGChainPosition - Положение FPGA в цепочке JTAG (только платы Xilinx)1 (по умолчанию) | положительное целое числоПоложение FPGA в цепочке JTAG (только платы Xilinx), указанное как положительное целое число. Укажите это значение свойства, если в цепочке JTAG несколько устройств FPGA или Zynq ®.
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 в конструкции см. в разделе Произвольный доступ к внешней памяти. В частности, просмотрите soc_image_rotation_axi_master.m сценарий, инициализирующий память на устройстве, запускающий логику FPGA и считывающий измененные данные. В этом примере показан только этап инициализации памяти.
Загрузить a .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, должна выполняться конструкция.
Создайте главный объект 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, объект устанавливает приоритет кабелей 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.
Для связи с этой платой Arty укажите соответствующее имя кабеля JTAG.
h = socAXIMaster('Xilinx','JTAGCableName','#tpt_0001#ptc_0002#210319789795')
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.