Связь с аппаратной платой SoC
Объект socHardwareBoard представляет связь с заданной аппаратной платой SoC от MATLAB®. Используйте этот объект создать soc.recorder, и socAXIMaster возражает что входные данные записи и память доступа на заданной аппаратной плате SoC.
hwList = socHardwareBoard()hw = socHardwareBoard(BoardName)hw = socHardwareBoard(boardName,Name,Value) возвращает список поддерживаемых аппаратных плат SoC.hwList = socHardwareBoard()
создает связь с заданной аппаратной платой SoC. Эта связь снова использует IP-адрес, имя пользователя, и пароль от новой связи до этого задал аппаратную плату SoC. Когда вы соединяете MATLAB с аппаратной платой SoC впервые, вводите имя платы, IP-адрес, имя пользователя и пароль аппаратной платы SoC как аргументы пары "имя-значение".hw = socHardwareBoard(BoardName)
Чтобы видеть полный список поддерживаемых аппаратных плат SoC, вызовите функцию socHardwareBoard без любых аргументов.
создает связь с заданным оборудованием SoC при помощи IP-адреса, имени пользователя и пароля, который вы задаете. hw = socHardwareBoard(boardName,Name,Value)
boardName — Имя поддерживаемой аппаратной платы SoCИмя поддерживаемой аппаратной платы SoC, заданной как вектор символов или скаляр строки. Задайте имя аппаратной платы, к которой вы хотите установить связь из MATLAB. Чтобы получить список плат поддерживаемого оборудования, вызовите функцию socHardwareBoard без любых аргументов.
Пример: 'Xilinx Zynq ZC706 evaluation kit'
Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.
'username', 'root''hostname' — IP-адрес аппаратной платы SoCIP-адрес аппаратной платы SoC соединяется с сетью, заданной как пара, разделенная запятой, состоящая из 'hostname' и вектора символов.
Пример: '192.168.1.18'
Типы данных: char
Порт Номер порта IP аппаратной платы SoCНомер порта IP аппаратной платы SoC, заданной как целое число.
Пример:
18735
Типы данных: double
'username' — Корневое имя пользователя раньше регистрировало в аппаратную плату SoCКорневое имя пользователя раньше входило в систему в аппаратную плату SoC, соединенную с сетью, заданной как пара, разделенная запятой, состоящая из 'username' и вектора символов.
Пример: 'корень'
Типы данных: char
'password' — Пароль root раньше регистрировал в аппаратную плату SoCПароль root раньше входил в систему в аппаратную плату SoC, соединенную с сетью, заданной как пара, разделенная запятой, состоящая из 'username' и вектора символов.
Пример: 'корень'
Типы данных: char
hwList — Список поддерживаемых аппаратных плат SoCСписок аппаратных плат SoC, которые поддерживаются для регистрации данных, возвращенной как массив строк.
hw — Связь с определенной аппаратной платой SoCsocHardwareBoardСвязь с определенной аппаратной платой SoC, возвращенной как объект socHardwareBoard. Можно использовать эту связь для регистрации данных входных источников с объектом soc.recorder, или можно получить доступ к памяти на плате с помощью объекта socAXIMaster.
BoardName — Имя поддерживаемой аппаратной платы SoCЭто свойство не может быть изменено после того, как вы создадите объект socHardwareBoard.
Имя поддерживаемой аппаратной платы SoC, заданной как символьный массив.
Пример:
'Xilinx Zynq ZC706 evaluation kit'
Типы данных: char
DeviceAddress — IP-адрес аппаратной платы SoCЭто свойство не может быть изменено после того, как вы создадите объект socHardwareBoard.
IP-адрес аппаратной платы SoC, заданной как символьный массив.
Пример:
'192.168.1.11'
Типы данных: char
Порт Номер порта IP аппаратной платы SoCЭто свойство не может быть изменено после того, как вы создадите объект socHardwareBoard.
Номер порта IP аппаратной платы SoC, заданной как целое число.
Пример:
18735
Типы данных: double
Создайте связь от MATLAB до заданной аппаратной платы SoC с помощью IP-адреса, имени пользователя и пароля платы.
hw = socHardwareBoard('Xilinx Zynq ZC706 evaluation kit','hostname','192.168.1.18','username','root','password','root');
Создайте сеанс записи данных на аппаратной плате SoC при помощи объекта hw. Получившийся объект soc.recorder представляет сеанс записи данных на аппаратной плате SoC.
dr = soc.recorder(hw)
dr =
DataRecorder with properties:
HardwareName: 'Xilinx Zynq ZC706 evaluation kit'
Sources: {}
Recording: false
Перечислите входные источники, добавленные к сеансу записи данных.
dr.Sources(hw)
ans = 1×0 empty cell array
По умолчанию объекты soc.recorder не имеют никаких добавленных входных источников. Чтобы добавить входной источник в сеанс записи данных, сначала создайте входной исходный объект при помощи функции soc.iosource. В данном примере создайте исходный объект Пользовательского дейтаграммного протокола (UDP).
udpSrc = soc.iosource(hw,'UDP Receive')udpSrc =
soc.iosource.UDPRead with properties:
Main
LocalPort: 25000
DataLength: 1
DataType: 'uint8'
ReceiveBufferSize: -1
BlockingTime: 0
OutputVarSizeSignal: false
SampleTime: 0.1000
HideEventLines: true
Show all properties
Добавьте этот исходный объект UDP в сеанс записи данных при помощи функции объекта addSource.
addSource(dr,udpSrc,'UDPDataReceived-Port25000')
Проверьте результат путем осмотра свойства Sources объекта soc.recorder.
dr.Sources
ans =
1×1 cell array
{'UDPDataOnPort25000'}
Вызовите функцию настройки, чтобы инициализировать все входные источники периферийного устройства, добавленные к сеансу записи данных и запустить процесс записи данных.
setup(dr)
Данные записи в течение 60 секунд на аппаратной плате SoC.
record(dr, 60);
Проверяйте состояние сеанса записи данных при помощи функции объекта isRecording. Состоянием записи, когда запись данных происходит, является 1.
recordingStatus = isRecording(dr)
recordingStatus = logical 1
Состоянием записи, когда запись данных завершена, является 0.
isRecording(dr)
recordingStatus = logical 0
Сохраните зарегистрированные данные в TGZ-сжатый-файл.
save(dr,'UDPDataReceived','UDP Data Testing',{'Recorded On Zynq Board'})
Эта функция сохраняет записанные данные как файл UDPDataReceived.tgz в вашей рабочей папке PC хоста. Можно считать этот файл при помощи объекта socFileReader в MATLAB или блока IO Data Source в модели Simulink®.
Удалите добавленный источник из сеанса записи данных при помощи функции объекта removeSource.
removeSource(dr,'UDPDataReceived-Port25000')
Проверьте результат путем осмотра свойства Sources объекта soc.recorder.
ans = 1×0 empty cell array
Для примера того, как сконфигурировать и использовать основной 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)));
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.