Когда вы задаете свой собственный исходный проект, можно динамически настроить исходный проект при помощи CustomizeReferenceDesignFcn
метод hdlcoder.ReferenceDesign
класс.
Путем настройки параметров исходного проекта, вместо того, чтобы обеспечить отдельные исходные проекты, которые имеют различный интерфейсный выбор, ширины данных или плагины ввода-вывода, создают один исходный проект, который имеет различный интерфейсный выбор или ширины данных как параметры. Можно затем использовать CustomizeReferenceDesignFcn
метод, чтобы сослаться на функцию обратного вызова, которая имеет различный выбор для ширин данных или интерфейсов.
Например, вместо того, чтобы создать отдельные исходные проекты, которые имеют различные ширины данных для интерфейсов, можно параметрировать ширину данных и затем создать параметр исходного проекта. Когда вы запускаете IP Core Generation
рабочий процесс, можно использовать параметр, чтобы выбрать ширину данных, которую вы хотите использовать. Точно так же вместо того, чтобы использовать несколько исходных проектов, можно создать один исходный проект, который имеет только Основной AXI4-поток или только AXI4-потоковое Ведомое устройство или и AXI4-потоковые Ведущие и AXI4-потоковые Ведомые интерфейсы.
Задавать функцию обратного вызова:
В plugin_rd
файл, задайте параметры исходного проекта, которые вы хотите настроить при помощи addParameter
метод.
Создайте файл MATLAB®, который задает функцию обратного вызова. Можно использовать любое произвольное имя в функции обратного вызова.
Сохраните функцию обратного вызова в той же папке как plugin_rd.m
файл.
Укажите указатель на функцию функции обратного вызова в определении исходного проекта plugin_rd
файл при помощи CustomizeReferenceDesignFcn
метод.
Использовать различные индивидуальные настройки исходного проекта:
Откройте HDL Workflow Advisor. В задаче Set Target Device and Synthesis Tool выберите IP Core Generation
как Target workflow и затем выбирают требуемую плату, для которой вы создали свой собственный исходный проект как Target platform.
В задаче Set Target Reference Design, когда вы выбираете пользовательский исходный проект, который вы хотите настроить для требуемой платы, HDL Coder™ заполняет параметры исходного проекта. В зависимости от выбора параметра, такого как интерфейсные типы вы задаете, функция обратного вызова оценена. Запустите эту задачу.
Выберите задачу Set Target Interface. В зависимости от параметра вы выбрали на предыдущем шаге, целевой интерфейсный выбор заполняется в таблице интерфейса Целевой платформы.
В функции обратного вызова можно настроить эти параметры исходного проекта. Не задавайте эти параметры в plugin_rd
файл.
Блочная конструкция файл Tcl
% ... % if ~isempty(ParamValue) hRD.addCustomVivadoDesign( ... 'CustomBlockDesignTcl', 'system_top.tcl', ... 'VivadoBoardPart', 'xilinx.com:zc706:part0:1.0'}; % ...
Интерфейсы исходного проекта и исходный проект соединяют интерфейсом со свойствами
Например, можно параметрировать ширину данных AXI4-потокового Ведущего Канала. В этом случае используйте addAXI4StreamInterface
метод в функции обратного вызова вместо plugin_rd
файл.
% ... % Add AXI4-Stream interface by parameterizing data width DataWidth = hRD.getParamValue(paramValue) if ~isempty(DataWidth) hRD.addAXI4StreamInterface( 'MasterChannelEnable', 'true', ... 'SlaveChannelEnable', 'true', ... 'MasterChannelConnection', 'ByPass_0.AXI4_Stream_Slave', ... 'SlaveChannelConnection', 'ByPass_0.AXI4_Stream_Master', ... 'MasterChannelDataWidth', DataWidth, ... 'SlaveChannelDataWidth', DataWidth); end % ...
Репозитории IP
В функции обратного вызова необходимо задать блочную конструкцию файл Tcl, когда вы добавляете репозитории IP.
% ... %% Add IP Repository hRD.addIPRepository(... 'IPListFunction', 'mathworks.hdlcoder.vivado.hdlcoder_video_iplist', 'NotExistMessage', 'IP repository not found'); %% Add custom design files hRD.addCustomVivadoDesign( ... 'CustomBlockDesignTcl', 'system_top.tcl', ... 'VivadoBoardPart', 'em.avnet.com:zed:part0:1.0'); % ...
Вы не можете изменить имя исходного проекта, имя платы и поддерживаемые версии инструмента в функции обратного вызова. Эти параметры используются в задаче Set Target Device and Synthesis Tool, прежде чем функция обратного вызова будет оценена, когда целевой исходный проект выбран в задаче Set Target Reference Design.
Вместо того, чтобы использовать несколько исходных проектов, можно создать один исходный проект, который имеет только Основной AXI4-поток или только AXI4-потоковое Ведомое устройство или и AXI4-потоковые Ведущие и AXI4-потоковые Ведомые интерфейсы. В этом примере показано, как можно настроить каналы интерфейса AXI4-Stream, вы хотите использовать при предназначении для собственного исходного проекта для Xilinx Zynq ZC706 evaluation kit
.
Этот код показывает параметр исходного проекта и интерфейсный выбор для исходного проекта my_reference_design
заданный при помощи addParameter
метод в plugin_rd
файл. CustomizeReferenceDesignFcn
метод ссылается на функцию обратного вызова, которая имеет имя customcallback_axistreamchannel
.
function hRD = plugin_rd() % Reference design definition % Copyright 2017-2019 The MathWorks, Inc. % Construct reference design object hRD = hdlcoder.ReferenceDesign('SynthesisTool', 'Xilinx Vivado'); hRD.ReferenceDesignName = 'Vivado Custom Reference Design'; hRD.BoardName = 'Xilinx Zynq ZC706 evaluation kit'; % Tool information hRD.SupportedToolVersion = {'2019.1'}; % ... % ... % Parameter For calling AXI4 Master interface from Callback function hRD.addParameter ... ('ParameterID' , 'stream_channel', ... 'DisplayName' , 'Stream Channel', ... 'DefaultValue' , 'Both Master and Slave',... 'ParameterType' , hdlcoder.ParameterType.Dropdown, ... 'Choice' , {'Both Master and Slave','Master Only','Slave Only'}); % Reference the callback function. hRD.CustomizeReferenceDesignFcn = @my_reference_design.customcallback_axistreamchannel; % ...
Когда вы создаете функцию обратного вызова, передаете infoStruct
аргумент к функции. Аргумент содержит исходный проект и информацию о плате в structure
формат. Этот код показывает функции обратного вызова customcallback_axistreamchannel
это имеет AXI4-потоковое Ведущее устройство или Ведомые Каналы или оба канала, заданные при помощи addAXI4StreamInterface
метод.
% Control AXI Master or Slave channel selection by using callback function function customcallback_axistreamchannel(infoStruct) %% Reference design callback run at the end of the task Set Target Reference Design % % infoStruct: information in structure format % infoStruct.ReferenceDesignObject: current reference design registration object % infoStruct.BoardObject: current board registration object % infoStruct.ParameterStruct: custom parameters of the current reference design, in struct format % infoStruct.HDLModelDutPath: the block path to the HDL DUT subsystem % infoStruct.ReferenceDesignToolVersion: Reference design Tool Version set in 1.2 Task paramStruct = infoStruct.ParameterStruct; if ~isempty(paramStruct) paramIDCell = fieldnames(paramStruct); paramValue = ''; for ii = 1:length(paramIDCell) paramID = paramIDCell(ii); if strcmp(paramID,'Both Master and Slave') paramValue = paramStruct.paramID; break; elseif strcmp(paramID,'Master Only') paramValue = paramStruct.paramID; break; elseif strcmp(paramID,'Slave Only') paramValue = paramStruct.paramID; break; end end end interface_type = str2double(paramValue); if ~isempty(interface_type) if strcmp(interface_type, 'Both Master and Slave') % add custom vivado design hRD.addCustomVivadoDesign( ... 'CustomBlockDesignTcl', 'system_top.tcl', ... 'VivadoBoardPart', 'xilinx.com:zc706:part0:1.0'); hRD.addAXI4StreamInterface( ... 'MasterChannelEnable', 'true', ... 'SlaveChannelEnable', 'true', ... 'MasterChannelConnection', 'axi_dma_s2mm/S_AXIS_S2MM', ... 'SlaveChannelConnection', 'axi_dma_mm2s/M_AXIS_MM2S', ... 'MasterChannelDataWidth', 32, ... 'SlaveChannelDataWidth', 32); elseif strcmp(interface_type, 'Master Only') % add custom vivado design hRD.addCustomVivadoDesign( ... 'CustomBlockDesignTcl', 'system_top.tcl', ... 'VivadoBoardPart', 'xilinx.com:zc706:part0:1.0'); hRD.addAXI4StreamInterface( ... 'MasterChannelEnable', true, ... 'MasterChannelConnection', 'axi_dma_s2mm/S_AXIS_S2MM', ... 'MasterChannelDataWidth', 32); % ...
Сохраните функцию обратного вызова в той же папке как plugin_rd
файл.
Когда вы запускаете IP Core Generation
рабочий процесс с Xilinx Zynq ZC706 evaluation kit
как Target platform, вы видите параметр Stream Channel, отображенный в задаче Set Target Reference Design.
Можно задать тип исходного проекта, вы хотите использовать и затем запустить рабочий процесс, чтобы задать интерфейсы целевой платформы и затем сгенерировать ядро IP HDL и затем интегрировать ядро IP в исходный проект.
hdlcoder.Board
| hdlcoder.ReferenceDesign