Введите источник на аппаратной плате SoC
Создайте soc.iosource
возразите, чтобы соединиться с входным источником на аппаратной плате SoC. Передайте soc.iosource
возразите в качестве аргумента против addSource
функция DataRecorder
объект.
Источники, доступные на проекте, работающем на аппаратной плате 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
— Объект 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 получены
(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-адрес удаленного сервера, из которого получены данные
(значение по умолчанию) | точечно-квадратическое выражениеIP-адрес удаленного сервера, из которого данные получены в виде точечно-квадратического выражения.
Чтобы включить это свойство, создайте исходный объект TCP.
Типы данных: char
RemotePort
— Номер порта IP удаленного сервера, из которого получены данныеНомер порта IP удаленного сервера, из которого данные получены в виде целого числа от 1 до 65 535.
Чтобы включить это свойство, создайте исходный объект TCP.
Типы данных: double
DataLength
— Длина пакета данных или вектора данных регистра
(значение по умолчанию) | положительная скалярная величинаМаксимальная длина 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
— Внутренний buffer size объекта
(значение по умолчанию) | массивВнутренний buffer size объекта в виде массива.
Чтобы включить это свойство, создайте исходный объект UDP или TCP.
Типы данных: double
Sample Time
Размер шага
(значение по умолчанию) | неотрицательный скалярШаг расчета, в секундах, в которые вы хотите получить данные в виде неотрицательного скаляра.
Типы данных: double
Создайте связь от MATLAB до заданной аппаратной платы SoC с помощью IP-адреса, имени пользователя и пароля платы.
hw = socHardwareBoard('Xilinx Zynq ZC706 evaluation kit','hostname','192.168.1.18','username','root','password','root');
Создайте сеанс записи данных на аппаратной плате SoC при помощи hw
объект. Получившийся DataRecorder
объект представляет сеанс записи данных на аппаратной плате 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
Вы щелкнули по ссылке, которая соответствует команде MATLAB:
Выполните эту команду, введя её в командном окне MATLAB.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.