Введите источник на аппаратной плате 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. |
availableSources = soc.iosource(hw)
src = soc.iosource(hw,inputSourceName)
возвращает список входных источников, доступных для регистрации данных на аппаратной плате SoC, соединенной через availableSources
= soc.iosource(hw
)hw
. hw
является объектом socHardwareBoard
.
создает исходный объект, соответствующий src
= soc.iosource(hw
,inputSourceName
)inputSourceName
на аппаратной плате SoC, соединенной через hw
.
hw
— HardwaresocHardwareBoard
Объект Hardware, заданный как объект 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 или TCP получены25000
(UDP) (значение по умолчанию) | -1
(TCP) | целое число от 1 до 65 535Порт IP на аппаратной плате, где данные о UDP или TCP получены заданные как скаляр от 1 до 65 535. Объект читает UDP или данные о TCP, полученные на этом порте заданной аппаратной платы SoC.
Для объекта TCP со свойством NetworkRole
к 'Client'
, набор LocalPort
к -1
, чтобы присвоить любой случайный доступный порт на аппаратной плате как локальный порт.
Чтобы включить это свойство, создайте исходный объект UDP или TCP.
Типы данных: uint16
NetworkRole
— Сетевая роль'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
Тип данных
Тип данных полученных данных'uint8'
(значение по умолчанию) | 'uint16'
| 'uint32'
| 'int8'
| 'int16'
| 'int32'
| 'double'
| 'single'
Тип данных полученных данных, заданных как 'uint8'
, 'uint16'
, 'uint32'
, 'int8'
, 'int16'
, 'int32'
, 'double'
или 'single'
.
Типы данных: char
ReceiveBufferSize
— Внутренний buffer size объекта65535
(значение по умолчанию) | массивВнутренний buffer size объекта, заданного как массив.
Чтобы включить это свойство, создайте исходный объект UDP или TCP.
Типы данных: double
'SampleTime'
'SampleTime' 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
в вашей рабочей папке PC хоста. Можно считать этот файл при помощи объекта 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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.