Источник ввода на аппаратной плате SoC
Создание soc.iosource объект для подключения к источнику ввода на аппаратной плате SoC. Пройти soc.iosource объект в качестве аргумента для addSource функции soc.recorder объект.
Источники, доступные в проекте, работающем на плате SoC, соответствуют блокам, включенным в модель Simulink ®. При запуске SoC Builder он соединяет логику FPGA с соответствующим интерфейсом платы.
| Источник | Блок | Действие |
|---|---|---|
'TCP Receive' | Чтение TCP | Считывайте данные UDP (протокол пользовательских дейтаграмм) из буфера сокетов Linux ®. |
'UDP Receive' | Чтение UDP | Считывание данных TCP/IP из буфера сокетов Linux. |
'AXI Register Read' | Регистрация Прочитано | Считывание регистров из ядра IP с помощью интерфейса AXI. |
'AXI Stream Read' | Чтение потока | Считывание данных потока AXI-4 с помощью IIO. |
возвращает список источников ввода, доступных для регистрации данных на аппаратной плате SoC, подключенной через availableSources = soc.iosource(hw)hw. hw является socHardwareBoard объект.
создает исходный объект, соответствующий src = soc.iosource(hw,inputSourceName)inputSourceName на плате SoC, подключенной через hw.
hw - Аппаратный объектsocHardwareBoard объектАппаратный объект, указанный как socHardwareBoard объект, представляющий подключение к аппаратной плате SoC.
inputSourceName - Название доступного источника ввода на аппаратной плате SoCИмя доступного источника ввода на аппаратной плате SoC, определяемое как символьный вектор. Для получения списка источников ввода, доступных для регистрации данных на указанной плате аппаратных средств SoC, вызовите soc.iosource функция без аргументов.
Пример: 'Получение UDP'
Типы данных: char
availableSources - Перечень источников входных данных, доступных для регистрации данныхСписок источников входных данных, доступных для регистрации данных на указанной аппаратной плате SoC, возвращаемых в виде массива ячеек. Каждая ячейка содержит символьный вектор с именем доступного источника входных данных для регистрации данных на указанной плате SoC. Используйте одно из этих имен в качестве inputSourceName при создании исходного объекта.
src - Исходный объект для указанного источника вводаsoc.iosource объектИсходный объект для указанного входного источника, возвращенный как soc.iosource.
DeviceName - Наименование базового устройства IPИмя базового IP-устройства, указанное как символьный вектор.
Пример:
'mwipcore0:s2mm0'
Чтобы включить это свойство, создайте регистр AXI или исходный объект потока AXI.
Типы данных: char
RegisterOffset - Смещение от базового адреса ядра IP для регистрацииСмещение от базового адреса ядра IP к регистру, указанное как положительный скаляр.
Чтобы включить это свойство, создайте исходный объект регистра AXI.
Типы данных: uint32
LocalPort - IP-порт на аппаратной плате, где принимаются данные UDP или TCP25000 (UDP) (по умолчанию) | -1 (TCP) | целое число от 1 до 65,535IP-порт на аппаратной плате, где принимаются данные UDP или TCP, указан как скаляр от 1 до 65535. Объект считывает данные UDP или TCP, полученные на этом порте указанной платы SoC.
Для объекта TCP с NetworkRole свойство для 'Client', комплект LocalPort кому -1 назначение любого произвольного доступного порта на плате аппаратных средств в качестве локального порта.
Чтобы включить это свойство, создайте исходный объект TCP или UDP.
Типы данных: uint16
NetworkRole - Роль сети'Client' (по умолчанию) | символьный векторСетевая роль, указанная как вектор символов.
Пример: 'Клиент'
Чтобы включить это свойство, создайте исходный объект TCP.
Типы данных: enumerated string
RemoteAddress - IP-адрес удаленного сервера, с которого поступают данные'127.0.0.1' (по умолчанию) | четырехпунктирное выражениеIP-адрес удаленного сервера, с которого принимаются данные, указанный как четверное выражение с точками.
Чтобы включить это свойство, создайте исходный объект TCP.
Типы данных: char
RemotePort - номер IP-порта удаленного сервера, с которого поступают данныеНомер IP-порта удаленного сервера, с которого принимаются данные, указан как целое число от 1 до 65535.
Чтобы включить это свойство, создайте исходный объект TCP.
Типы данных: double
DataLength - Длина пакета данных или вектора данных регистра1 (по умолчанию) | положительный скалярМаксимальная длина пакета данных UDP или TCP или длина слова вектора данных регистра AXI, заданного как положительный скаляр.
Типы данных: double
SamplesPerFrame - Размер вектора данных, считанного из ядра IPРазмер вектора данных, считанного из ядра IP, указанный как неотрицательный скаляр.
Чтобы включить это свойство, создайте исходный объект потока AXI.
Типы данных: double
DataType - Тип полученных данных'uint8' (по умолчанию) | 'uint16' | 'uint32' | 'int8' | 'int16' | 'int32' | 'double' | 'single'Тип полученных данных, указанный как 'uint8', 'uint16', 'uint32', 'int8', 'int16', 'int32', 'double' или 'single'.
Типы данных: char
ReceiveBufferSize - Размер внутреннего буфера объекта65535 (по умолчанию) | массивВнутренний размер буфера объекта, указанный как массив.
Чтобы включить это свойство, создайте исходный объект TCP или UDP.
Типы данных: double
Sample Time - Время выборки1 (по умолчанию) | неотрицательный скалярВремя выборки (в секундах), при котором требуется получить данные, указанное как неотрицательный скаляр.
Типы данных: 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)
Запишите данные на плату SoC в течение 60 секунд.
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 в рабочей папке хост-компьютера. Вы можете прочитать этот файл с помощью socFileReader объект в MATLAB™ или блок источника данных ввода-вывода в модели Simulink.
Удалите добавленный источник из сеанса записи данных с помощью removeSource объектная функция.
removeSource(dr,'UDPDataReceived-Port25000')
Проверьте результат, проверив Sources имущества soc.recorder объект.
ans = 1×0 empty cell array
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.