exponenta event banner

Разработка эталонного дизайна для интеграции с живой камерой с IP-ядром процессора глубокого обучения

В этом примере показано, как создать эталонную конструкцию 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-ядра процессора глубокого обучения

Выполните следующие действия для конфигурирования и создания 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-ядра процессора глубокого обучения в эталонный проект необходимо:

  • Подключите сформированное ядро 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 с помощью функции «Ввод с камеры в реальном времени».