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

В этом примере показано, как задать и указать пользовательскую плату и исходный проект для рабочего процесса ядра процессора IP глубокого обучения. Если у вас есть система, которая имеет предварительную обработку и постобработку блоков проекта под тестом (DUT), можно выполнить итерации на тех блоках, чтобы улучшать производительность и использование ресурса при помощи HDL Coder™. Создайте пользовательский исходный проект, который включает блоки DUT и определение для вашего пользовательского ядра процессора IP глубокого обучения.

Введение

Сначала создайте пользовательскую плату и исходный проект. Укажите ядро процессора IP глубокого обучения в своей пользовательской плате и исходном проекте. Разверните ядро процессора IP глубокого обучения в свою пользовательскую плату путем генерации пользовательского потока битов. Используйте MATLAB®, чтобы взаимодействовать через интерфейс с ядром процессора IP глубокого обучения.

Рабочий процесс

Изображение показывает рабочий процесс, чтобы развернуть ядро процессора IP глубокого обучения в пользовательскую плату.

Укажите пользовательский Совет

Укажите пользовательскую плату в HDL Workflow Advisor.

1. Создайте файл регистрации плат с именем hdlcoder_board_customization.m и добавьте его в путь MATLAB. hdlcoder_board_customization.m функция должна возвратить второй выходной параметр для рабочего процесса. Установите рабочий процесс на:

workflow = hdlcoder.Workflow.DeepLearningProcessor;
function [boardList, workflow] = hdlcoder_board_customization
% Board plugin registration file
% 1. Any registration file with this name on MATLAB path will be picked up
% 2. Registration file returns a cell array pointing to the location of
%    the board plugins
% 3. Board plugin must be a package folder accessible from MATLAB path,
%    and contains a board definition file
%   Copyright 2019 The MathWorks, Inc.
boardList = { ...
    'DLZCU102.plugin_board', ...
    'DLZC706.plugin_board', ...
    };
workflow = hdlcoder.Workflow.DeepLearningProcessor;
end

2. Создайте файл определения платы.

%   Copyright 2019 The MathWorks, Inc.
% Board definition of ZCU102
function hB = plugin_board
% Construct board object
hB = hdlcoder.Board;
hB.BoardName    = 'Xilinx Zynq UltraScale+ MPSoC ZCU102 Evaluation Kit';
% FPGA device information
hB.FPGAVendor   = 'Xilinx';
hB.FPGAFamily   = 'Zynq UltraScale+';
hB.FPGADevice   = 'xczu9eg-ffvb1156-2-e';
hB.FPGAPackage  = '';
hB.FPGASpeed    = '';
% Tool information
hB.SupportedTool = {'Xilinx Vivado'};
% FPGA JTAG chain position
hB.JTAGChainPosition = 1;
%% Add interfaces
% Standard "External Port" interface
hB.addExternalPortInterface( ...
    'IOPadConstraint', {'IOSTANDARD = LVCMOS18'});
% GPIO LEDs
hB.addExternalIOInterface( ...
   'InterfaceID',    'LEDs General Purpose', ...
    'InterfaceType',  'OUT', ...
   'PortName',       'GPIO_LED', ...
    'PortWidth',      8, ...
    'FPGAPin',        {'AG14', 'AF13', 'AE13', 'AJ14', 'AJ15', 'AH13', 'AH14', 'AL12'}, ...
    'IOPadConstraint', {'IOSTANDARD = LVCMOS33'});

Укажите пользовательский исходный проект

Укажите пользовательский исходный проект в HDL Workflow Advisor.

1. Создайте регистрационный файл с именем исходного проекта hdlcoder_ref_design_customization.m содержание списка плагинов исходного проекта сопоставлено с платой SoC.

function [rd, boardName] = hdlcoder_ref_design_customization
% Reference design plugin registration file
% 1. The registration file with this name inside of a board plugin folder
%    will be picked up
% 2. Any registration file with this name on MATLAB path will also be picked up
% 3. The registration file returns a cell array pointing to the location of
%    the reference design plugins
% 4. The registration file also returns its associated board name
% 5. Reference design plugin must be a package folder accessible from
%    MATLAB path, and contains a reference design definition file
%   Copyright 2019 The MathWorks, Inc.
rd = {...
        'DLZCU102.matlab_libiio_3axi4_master_2019_1.plugin_rd', ...
		};
boardName = 'Xilinx Zynq UltraScale+ MPSoC ZCU102 Evaluation Kit';
end

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

function hRD = plugin_rd
% Reference design definition
%   Copyright 2019-2020 The MathWorks, Inc.
% Construct reference design object
hRD = hdlcoder.ReferenceDesign('SynthesisTool','Xilinx Vivado');
hRD.ReferenceDesignName = 'AXI-Stream DDR Memory Access : 3-AXIM';
hRD.BoardName = 'Xilinx Zynq UltraScale+ MPSoC ZCU102 Evaluation Kit';
% Tool information
hRD.SupportedToolVersion = {'2019.1','2019.2','2020.1'};
%% Add custom design files
% add custom Vivado design
hRD.addCustomVivadoDesign( ...
    'CustomBlockDesignTcl','system_top.tcl');
% Add constraint files
hRD.CustomConstraints = {'ZCU102_DDR4.xdc'};
% Post Create Project Callback function to improve timing closure
hRD.PostCreateProjectFcn   = @DLZCU102.matlab_libiio_3axi4_master_2019_1.callback_PostCreateProject;
% Add HDL Verifier JTAG as AXI Master IP from support package
msg = message('hdlcommon:plugin:IPRepositoryHDLVerifierXilinxNotFound').getString;
hRD.addIPRepository( ...
	'IPListFunction','hdlverifier.fpga.vivado.iplist', ...
	'NotExistMessage', msg);
% Add AXI4-Stream to AXI4-Master DDR Access IP
hRD.addIPRepository( ...
	'IPListFunction','hdlcoder.fpga.vivado.hdlcoder_axis2axim_iplist', ...
	'NotExistMessage', 'AXI4-Stream to AXI4-Master IP not found.');
%% Add interfaces
% add clock interface
hRD.addClockInterface( ...
    'ClockConnection',     'core_clkwiz/clk_out1', ...
    'ResetConnection',     'sys_dut_rstgen/peripheral_aresetn',...
    'DefaultFrequencyMHz', 50,...
    'MinFrequencyMHz',     5,...
    'MaxFrequencyMHz',     500,...
    'ClockModuleInstance', 'core_clkwiz',...
    'ClockNumber',         1);
% add AXI4 and AXI4-Lite slave interfaces
hRD.addAXI4SlaveInterface( ...
    'InterfaceConnection', 'axi_cpu_interconnect/M03_AXI', ...
    'BaseAddress',         {'0xA0000000','0x00A0000000'}, ...
    'MasterAddressSpace',  {'hdlverifier_axi_master_0/axi4m','sys_cpu/Data'}, ...
    'InterfaceType',       'AXI4', ...
    'IDWidth',             13);

3. Добавьте информацию о процессоре глубокого обучения в файл исходного проекта. Файл плагина исходного проекта должен содержать информацию о целевом интерфейсе и ядре процессора IP глубокого обучения, пробеле адреса памяти для ядра процессора IP глубокого обучения и команде, чтобы подтвердить исходный проект.

% Deep learning specific properties
hRD.registerDeepLearningTargetInterface("JTAG");
hRD.registerDeepLearningTargetInterface("Ethernet");
hRD.registerDeepLearningMemoryAddressSpace(0x80000000, 0x20000000); % 512 MB
hRD.ResourcesUsed.LogicElements = 35000;
hRD.ResourcesUsed.DSP = 3;
hRD.ResourcesUsed.RAM = 77.5;

Завершенная плата и регистрационные файлы исходного проекта для Xilinx® Zynq® Ultrascale + (R) плата MPSoC ZCU102 могут быть найдены в,

supportpackages\R2021b\toolbox\dnnfpga\supportpackages\xilinx\boards и

supportpackages\R2021b\toolbox\dnnfpga\supportpackages\xilinx\boards\+DLZCU102.

Для получения дополнительной информации о том, как настроить, задайте и укажите пользовательскую плату, относятся к Началу работы с Предназначением для Zynq UltraScale + Платформа MPSoC (HDL Coder).

Смотрите также

| | |

Похожие темы