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