Когда вы задаете свой собственный пользовательский исходный проект, можно динамически настроить исходный проект с помощью CustomizeReferenceDesignFcn
метод hdlcoder.ReferenceDesign
класс.
Путем настройки параметров исходного проекта вместо поддержания отдельных исходных проектов, которые имеют различные варианты интерфейса, ширины данных или ввода-вывода плагины, создайте один исходный проект, который имеет различные варианты интерфейса или ширины данных в качестве параметров. Затем можно использовать CustomizeReferenceDesignFcn
метод для ссылки на функцию обратного вызова, которая имеет различные варианты для интерфейсов или ширины данных.
Для примера вместо создания отдельных исходных проектов, которые имеют разную ширину данных для интерфейсов, можно параметризовать ширину данных, а затем создать параметр исходного проекта. Когда вы запускаете IP Core Generation
рабочий процесс, можно использовать параметр, чтобы выбрать ширину данных, которые вы хотите использовать. Точно так же вместо использования нескольких исходных проектов можно создать один исходный проект, который имеет только AXI4-Stream Master или только AXI4-Stream Slave или оба AXI4-Stream Master и AXI4-Stream Slave интерфейсов.
Чтобы определить функцию обратного вызова:
В 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-Stream. В этом случае используйте 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-Stream Master или только AXI4-Stream Slave или оба AXI4-Stream Master и AXI4-Stream Slave интерфейсов. В этом примере показано, как можно настроить каналы интерфейса AXI4-Stream, которые вы хотите использовать при нацеливании на свой собственный исходный проект для Xilinx Zynq ZC706 evaluation kit
.
Этот код показывает параметр исходного проекта и варианты интерфейса для исходного проекта my_reference_design
задается при помощи addParameter
метод в plugin_rd
файл. The 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-Stream каналы или оба канала, заданные при помощи 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 задаче.
Можно задать тип исходного проекта, который вы хотите использовать, а затем запустить рабочий процесс, чтобы задать целевые интерфейсы платформы, а затем сгенерировать HDL-ядро IP и затем интегрировать IP-ядро в исходный проект.
hdlcoder.Board
| hdlcoder.ReferenceDesign