Введите источник на аппаратной плате 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
— Объект 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
'SampleTime'
(значение по умолчанию) | неотрицательный скалярШаг расчета, в секундах, в которые вы хотите получить данные, заданные как неотрицательный скаляр.
Типы данных: 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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.