В этом примере показано, как создать эталонную конструкцию HDL Coder™, содержащую сформированное IP-ядро процессора глубокого обучения. Эталонная конструкция получает динамический вход камеры и использует развернутую последовательную сеть для классификации объектов на входе камеры. На этом рисунке представлена высокоуровневая архитектурная схема, показывающая эталонный дизайн, который будет реализован в комплекте для оценки Xilinx™ Zynq™ Ultrascale + (TM) MPsoC ZCU102.

Основной блок IP пользователя:
Извлекает интересующую область (ROI) на основе размеров ROI из системы обработки (PS) (ARM).
Выполняет понижающую выборку входного изображения.
Ноль - центрирование входного изображения.
Передает предварительно обработанное изображение во внешнюю память DDR.
Запускает IP-ядро процессора глубокого обучения.
Уведомление процессора PS (ARM).
IP-ядро процессора глубокого обучения обращается к предварительно обработанным входам, выполняет классификацию объектов и загружает выходные результаты обратно во внешнюю память DDR.
PS (ARM):
Принимает размеры ROI и передает их пользовательскому IP-ядру.
Выполняет последующую обработку данных изображения.
Аннотирует результаты классификации объектов из IP-ядра процессора глубокого обучения на выходном видеокадре.
Вы также можете использовать MATLAB ® для извлечения результатов классификации и проверки созданного IP-ядра процессора глубокого обучения. Пользовательским DUT для этой эталонной конструкции является алгоритм предварительной обработки (User IP Core). Можно разработать алгоритм предварительной обработки DUT в Simulink ®, создать IP-ядро DUT и интегрировать сгенерированное IP-ядро DUT в большую систему, содержащую IP-ядро процессора глубокого обучения. Сведения о том, как создать ядро DUT IP, см. в разделе Запуск сети глубокого обучения на FPGA с помощью функции ввода с камеры в реальном времени.
Выполните следующие действия для конфигурирования и создания IP-ядра процессора глубокого обучения в эталонном проекте.
1. Создайте пользовательскую конфигурацию процессора глубокого обучения.
hPC = dlhdl.ProcessorConfig
Дополнительные сведения об архитектуре процессора глубокого обучения см. в разделе Архитектура процессора глубокого обучения. Для получения информации о пользовательских параметрах конфигурации процессора и изменении параметров см. раздел getModuleProperty и setModuleProperty.
2. Создайте IP-ядро процессора Deep Learning.
Сведения о том, как создать пользовательский IP-адрес процессора глубокого обучения, см. в разделе Создание пользовательского IP-адреса процессора. Ядро IP процессора глубокого обучения генерируется с помощью рабочего процесса генерации ядра HDL Coder™ IP. Дополнительные сведения см. в разделе Пользовательское поколение ядра IP (кодер HDL).
dlhdl.buildProcessor(hPC)
Сгенерированные файлы ядра IP расположены в cwd\dlhdl_prj\ipcore. cwd является текущей рабочей папкой. ipcore содержит HTML-отчет, расположенный в cwd\dlhdl_prj\ipcore\DUT_ip_v1_0\doc.

Отчет HTML содержит описание IP-ядра процессора глубокого обучения, инструкции по использованию ядра и интеграции ядра в эталонный дизайн Vivado™, а также список регистров AXI4. Вам будет нужен список регистра AXI4, чтобы ввести адреса в инструмент Отображения Адреса Vivado™. Дополнительные сведения о регистрах AXI4 см. в разделе Карта регистров процессора глубокого обучения.
Вставьте сгенерированное IP-ядро процессора глубокого обучения в эталонный дизайн. После вставки сгенерированного IP-ядра процессора глубокого обучения в эталонный проект необходимо:
Подключите сформированное ядро IP AXI4 подчиненный интерфейс процессора глубокого обучения к ведущему устройству AXI4, такому как главное IP-ядро JTAG AXI или система обработки Zynq™ (PS). Используйте главное устройство AXI4 для связи с IP-ядром процессора глубокого обучения.
Подключите IP-ядро предоставленного поставщиком внешнего интерфейса памяти к трем AXI4 ведущим интерфейсам сформированного IP-ядра процессора глубокого обучения.
IP-ядро процессора глубокого обучения использует интерфейс внешней памяти для доступа к внешней памяти DDR. На рисунке показано IP-ядро процессора глубокого обучения, интегрированное в эталонную конструкцию Vivado™ и подключенное к IP-генератору интерфейса памяти DDR (MIG).

В Vivado™ эталонном проекте добавьте блок генератора интерфейса внешней памяти (MIG) и подключите сформированное IP-ядро процессора глубокого обучения к модулю MIG. Модуль MIG подключается к ядру IP процессора через модуль межсоединений AXI. На рисунке показан высокоуровневый архитектурный проект и Vivado™ эталонный проект.

Следующий кодекс описывает содержание справочного файла определения дизайна ZCU102 plugin_rd.m для вышеупомянутого справочный дизайн Vivado™. Дополнительные сведения о том, как определить и зарегистрировать пользовательскую плату, см. в документе Определение пользовательской платы и ссылочного проекта для рабочего процесса Zynq (кодер HDL).
function hRD = plugin_rd(varargin)
% Parse config config = ZynqVideoPSP.common.parse_config(... 'ToolVersion', '2019.1', ... 'Board', 'zcu102', ... 'Design', 'visionzynq_base', ... 'ColorSpace', 'RGB' ... ); % Construct reference design object hRD = hdlcoder.ReferenceDesign('SynthesisTool', 'Xilinx Vivado'); hRD.BoardName = ZynqVideoPSP.ZCU102Hdmicam.BoardName(); hRD.ReferenceDesignName = 'HDMI RGB with DL Processor'; % Tool information hRD.SupportedToolVersion = {'2019.1'} ...
После создания эталонного проекта используйте рабочий процесс генерации ядра HDL Coder™ IP для генерации битового потока и программирования платы ZCU102. Затем можно использовать MATLAB ® и dlhdl.Workflow объект для проверки IP-ядра процессора глубокого обучения или можно использовать рабочий процесс Coder™ HDL для прототипирования всей системы. Сведения о проверке эталонного дизайна см. в разделе Запуск сети глубокого обучения на FPGA с помощью функции «Ввод с камеры в реальном времени».