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