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

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

Пользовательский блок ядра IP:

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

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

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

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

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

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

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

PS (ARM):

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

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

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

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

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

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

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

hPC = dlhdl.ProcessorConfig

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

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

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

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™ Address Mapping. Для получения дополнительной информации о регистрах AXI4, см. Карту Регистра Процессора Глубокого обучения.

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

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

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

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

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

Соедините генератор интерфейса внешней памяти

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

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

Следующий код описывает содержимое файла определения исходного проекта ZCU102 plugin_rd.m для вышеупомянутого исходный проект Vivado™. Для получения дополнительной информации о том, как задать и указать пользовательскую плату, обращается к Задаванию Пользовательского Совета и Исходного проекта для Рабочего процесса 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'}
...

Проверьте исходный проект

После создания исходного проекта используйте рабочий процесс генерации ядра IP HDL Coder™, чтобы сгенерировать поток битов и программировать плату ZCU102. Можно затем использовать MATLAB® и dlhdl.Workflow объект проверить ядро процессора IP глубокого обучения или можно использовать рабочий процесс HDL Coder™, чтобы моделировать целую систему. Чтобы проверить исходный проект, смотрите Запуск Нейронная сеть для глубокого обучения на FPGA с Живым Входом Камеры.