Создание исходного проекта для интегрирования Live Camera с процессором глубокого обучения IP Core

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

Основной блок IP пользователя:

  • Извлекает видимую область (ROI) на основе размерностей ROI из системы обработки (PS) (ARM).

  • Выполняет понижающую дискретизацию на вход изображении.

  • Ноль центрирует вход изображение.

  • Переносит предварительно обработанное изображение во внешнюю память DDR.

  • Запускает IP-ядро процессора глубокого обучения.

  • Уведомляет процессор PS (ARM).

IP-ядро процессора глубокого обучения получает доступ к предварительно обработанным входам, выполняет классификацию объектов и загружает выходные результаты обратно во внешнюю память DDR.

PS (ARM):

  • Принимает размерности ROI и передает их пользовательскому IP-ядру.

  • Выполняет постобработку данных изображения.

  • Аннотирует результаты классификации объектов из IP-ядра процессора глубокого обучения на выходе видеокадре.

Можно также использовать MATLAB ®, чтобы получить результаты классификации и проверить сгенерированное ядро процессора глубокого обучения. Пользовательским DUT для этого исходного проекта является алгоритм предварительной обработки (User IP Core). Вы можете спроектировать алгоритм предварительной обработки DUT в Simulink ®, сгенерировать IP-ядро DUT и интегрировать сгенерированное IP-ядро DUT в большую систему, которая содержит IP-ядро глубокого обучения. Чтобы узнать, как сгенерировать IP-ядро DUT, смотрите Запуск Нейронной сети для глубокого обучения на FPGA с Live Camera Входа.

Сгенерируйте IP-ядро процессора глубокого обучения

Выполните следующие действия, чтобы сконфигурировать и сгенерировать IP-ядро процессора глубокого обучения в исходный проект.

1. Создайте пользовательское строение процессора глубокого обучения.

hPC = dlhdl.ProcessorConfig

Дополнительные сведения об архитектуре процессора глубокого обучения см. в разделе Архитектура процессора глубокого обучения. Чтобы получить информацию о пользовательских параметрах конфигурации процессора и изменении параметров, смотрите getModuleProperty и setModuleProperty.

2. Сгенерируйте IP-ядро процессора глубокого обучения.

Чтобы узнать, как сгенерировать пользовательский IP-адрес процессора глубокого обучения, смотрите Сгенерируйте пользовательский IP-адрес процессора. IP-ядро процессора глубокого обучения генерируется с помощью рабочего процесса генерации ядра HDL Coder™ IP. Для получения дополнительной информации смотрите Пользовательскую генерацию ядра IP (HDL Coder).

dlhdl.buildProcessor(hPC)

Сгенерированные файлы IP-ядра расположены в cwd\dlhdl_prj\ipcore. cwd - текущая рабочая директория. The ipcore папка содержит HTML, расположенный в cwd\dlhdl_prj\ipcore\DUT_ip_v1_0\doc.

Отчет HTML содержит описание IP-ядра процессора глубокого обучения, инструкции по использованию ядра и интеграции ядра в ваш Vivado™ исходный проект, а также список AXI4 регистров. Вам понадобится список AXI4 регистров, чтобы ввести адреса в инструмент Vivado™ Address Mapping. Для получения дополнительной информации о регистрах AXI4 смотрите Карту регистров процессора глубокого обучения.

Интеграция сгенерированного IP-ядра процессора глубокого обучения с Исходным проектом

Вставьте сгенерированное IP-ядро процессора глубокого обучения в исходный проект. После вставки сгенерированного IP-ядра процессора глубокого обучения в исходный проект необходимо:

  • Подключите сгенерированное IP-ядро процессора глубокого обучения AXI4 ведомый интерфейс к AXI4 ведущему устройству, такому как главное IP-ядро JTAG AXI или система обработки Zynq™ (PS). Используйте главное AXI4 устройство для связи с IP-ядром процессора глубокого обучения.

  • Подключите IP-ядро интерфейса внешней памяти поставщика к трем AXI4 основным интерфейсам сгенерированного IP-ядра глубокого обучения.

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

Подключите генератор интерфейса внешней памяти

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

Создайте файл определения исходного проекта

Следующий код описывает содержимое файла определения ссылочного проекта ZCU102 plugin_rd.m для вышеупомянутого Vivado™ проекта ссылки. Для получения дополнительной информации о том, как определить и зарегистрировать пользовательскую плату, обратитесь к разделу Define Custom Board and Исходного проекта for Zynq Рабочего процесса (HDL Coder).

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-ядра процессора глубокого обучения или можно использовать рабочий процесс HDL- Coder™ для прототипа всей системы. Для проверки исходного проекта смотрите Запуск Нейронной сети для глубокого обучения на FPGA с Live Camera Входа.