Связь с аппаратной платой 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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.