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

Когда вы задаете свой пользовательский исходный проект, можно опционально использовать свойства в hdlcoder.ReferenceDesign объект задать пользовательские параметры и функции обратного вызова.

Задайте пользовательские параметры и укажите указатель функции обратного вызова

Этот код MATLAB® показывает, как задать пользовательские параметры и указать указатель на функцию пользовательских функций обратного вызова в функции определения исходного проекта.

function hRD = plugin_rd()
% Reference design definition

% Construct reference design object
hRD = hdlcoder.ReferenceDesign('SynthesisTool', 'Xilinx Vivado');
hRD.ReferenceDesignName = 'My Reference Design';
hRD.BoardName = 'ZedBoard';

% Tool information
hRD.SupportedToolVersion = {'2018.3'};

%% Add custom design files
% ...
% ...

%% Add optional custom parameters by using addParameter property.
% Specify custom 'DUT path' and 'Channel Mapping' parameters. 
% The parameters get populated in the 'Set Target Reference Design' 
% task of the HDL Workflow Advisor.
hRD.addParameter( ...
    'ParameterID',   'DutPath', ...
    'DisplayName',   'Dut Path', ...
    'DefaultValue',  'Rx', ...
    'ParameterType',  hdlcoder.ParameterType.Dropdown, ...
    'Choice',       {'Rx', 'Tx'});
hRD.addParameter( ...
    'ParameterID',   'ChannelMapping', ...
    'DisplayName',   'Channel Mapping', ...
    'DefaultValue',  '1');

%% Enable JTAG MATLAB as AXI Master IP Insertion. The IP
% insertion setting is visible in the 'Set Target Reference Design'
% task of the HDL Workflow Advisor. By default, the
% AddJTAGMATLABasAXIMasterParameter property is set to 'true'.
hRD.AddJTAGMATLABasAXIMasterParameter = 'true';
hRD.JTAGMATLABasAXIMasterDefaultValue = 'on';


%% Add custom callback functions. These are optional.
% With the callback functions, you can enable custom 
% validations, customize the project creation, software 
% interface model generation, and the bistream build.
% Register the function handle of these callback functions.

% Specify an optional callback for 'Set Target Reference Design' 
% task in Workflow Advisor. Use property name 
% 'PostTargetReferenceDesignFcn'.
hRD.PostTargetReferenceDesignFcn = ...
    @my_reference_design.callback_PostTargetReferenceDesign;

% Specify an optional callback for 'Set Target Interface' task in Workflow Advisor.
% Use the property name 'PostTargetInterfaceFcn'.
hRD.PostTargetInterfaceFcn     = ... 
    @my_reference_design.callback_PostTargetInterface;

% Specify an optional callback for 'Create Project' task
% Use the property name 'PostCreateProjectFcn' for the ref design object.
hRD.PostCreateProjectFcn       = ... 
    @my_reference_design.callback_PostCreateProject;

% Specify an optional callback for 'Generate Software Interface Model' task
% Use the property name 'PostSWInterfaceFcn' for the ref design object.
hRD.PostSWInterfaceFcn         = ...
    @my_reference_design.callback_PostSWInterface;

% Specify an optional callback for 'Build FPGA Bitstream' task
% Use the property name 'PostBuildBitstreamFcn' for the ref design object.
hRD.PostBuildBitstreamFcn      = ...
    @my_reference_design.callback_PostBuildBitstream;

% Specify an optional callback for 'Program Target Device'
% task to use a custom programming method.
hRD.CallbackCustomProgrammingMethod = ...
    @my_reference_design.callback_CustomProgrammingMethod;

%% Add interfaces
% ...
% ...

Задайте пользовательские параметры

С addParameter метод hdlcoder.ReferenceDesign класс, можно задать пользовательские параметры. В предыдущем примере кода исходный проект задает два пользовательских параметра, DUT Path и Channel Mapping. Узнать больше о addParameter метод, смотрите addParameter.

Задайте вставку MATLAB JTAG как ведущий IP AXI

По умолчанию HDL Coder™ добавляет параметр Insert JTAG MATLAB as AXI Master (HDL Verifier Required) во все исходные проекты. Когда вы устанавливаете этот параметр на on, генератор кода автоматически вводит MATLAB JTAG Ведущий IP AXI в ваш исходный проект. При помощи MATLAB JTAG Ведущий IP AXI можно легко получить доступ к регистрам AXI в сгенерированном ядре IP DUT на плате FPGA от MATLAB до связи JTAG. См. также Настроенный для MATLAB Ведущее устройство AXI (HDL Verifier).

Чтобы использовать эту возможность, у вас должны быть пакеты аппаратной поддержки HDL Verifier™, установленные и загруженные. Смотрите Пакет поддержки плат FPGA Загрузки (HDL Verifier).

Генератор кода настраивает AXI4 Slave ID Width, чтобы вместить MATLAB как Ведущее IP-соединение AXI. После того, как вы сгенерируете ядро IP HDL и создадите проект исходного проекта, можно открыть блочную конструкцию Vivado®, чтобы видеть MATLAB JTAG Ведущий IP AXI, вставленный в исходный проект.

В коде предыдущего примера исходный проект задает AddJTAGMATLABasAXIMasterParameter и JTAGMATLABasAXIMasterDefaultValue свойства hdlcoder.ReferenceDesign класс. Эти свойства управляют поведением по умолчанию установки Insert JTAG MATLAB as AXI Master (HDL Verifier Required) в задаче Set Target Reference Design HDL Workflow Advisor. Если вы не задаете ни одного из этих свойств в hdlcoder.ReferenceDesign класс, параметр Insert JTAG MATLAB as AXI Master (HDL Verifier Required) отображен в задаче Set Target Reference Design, и значение установлено к off. Этот пример кода иллюстрирует поведение по умолчанию.

%% Default behavior of Insert JTAG as AXI Master option

% This parameter controls visibility of the option in 
% 'Set Target Reference Design Task' of HDL Workflow Advisor
% By default, the parameter value is set to 'true',
% which means that the option is displayed in the UI. If
% you do not want the parameter to be displayed, set this
% value to 'false'.
hRD.AddJTAGMATLABasAXIMasterParameter = 'true';

% This parameter controls the value of the option in the
% the 'Set Target Reference Design Task' task. By default,
% the value is 'off', which means that the parameter is
% displayed in the task and the value is off. To enable
% automatic insertion of JTAG AXI Master IP in the reference
% design, set this value to 'on'. In that case, the 
% AddJTAGMATLABasAXIMasterParameter must be set to 'true'.
hRD.JTAGMATLABasAXIMasterDefaultValue = 'off';

Для примеров см.:

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

Когда вы открываете HDL Workflow Advisor, HDL Coder заполняет задачу Set Target Reference Design с именем исходного проекта, версией инструмента, пользовательские параметры, которые вы задали, и набор опции Insert JTAG MATLAB as AXI Master (HDL Verifier Required) к on.

HDL Coder затем передает эти значения параметров функциям обратного вызова во входной структуре.

Если вашим инструментом синтеза является Xilinx® Vivado, HDL Coder устанавливает значения параметров исходного проекта на переменные. Переменные затем вводятся к блочной конструкции файл Tcl. Этот фрагмент кода является примером от создания проекта исходного проекта файл Tcl.

update_ip_catalog
set DutPath {Rx}
set ChannelMapping {1}
source vivado_custom_block_design.tcl

Код показывает, как HDL Coder устанавливает параметры исходного проекта прежде, чем получить файл Tcl проекта пользовательского блока.

Укажите указатели функции обратного вызова

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

  • Включите пользовательские валидации.

  • Настройте исходный проект динамически.

  • Настройте настройки создания проекта исходного проекта.

  • Измените модель интерфейса сгенерированного программного обеспечения.

  • Настройте процесс сборки потока битов FPGA.

  • Задайте пользовательский метод программирования FPGA.

С hdlcoder.ReferenceDesign класс, можно задать имена свойства коллбэка. Свойства коллбэка имеют соглашение о присвоении имен. Функции обратного вызова могут иметь любое имя. В HDL Workflow Advisor можно задать функции обратного вызова, чтобы настроить эти задачи.

Советник по вопросам рабочего процесса задачаИмя свойства коллбэкаФункциональность

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

  • CustomizeReferenceDesignFcn

  • PostTargetReferenceDesignFcn

  • PostTargetReferenceDesignFcn включает пользовательские валидации. Для примера, который показывает, как можно подтвердить это, Reset type является Synchronous, смотрите PostTargetReferenceDesignFcn.

Установите целевой интерфейс

PostTargetInterfaceFcn

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

Создайте проект

PostCreateProjectFcn

Задайте пользовательские настройки, когда HDL Coder создаст проект. Для примера смотрите PostCreateProjectFcn.

Сгенерируйте программный интерфейс

PostSWInterfaceFcn

Измените модель интерфейса сгенерированного программного обеспечения. Для примера смотрите PostSWInterfaceFcn.

Создайте поток битов FPGA

PostBuildBitstreamFcn

Задайте пользовательские настройки, когда вы создадите поток битов FPGA. Когда вы используете эту функцию, процесс сборки не может быть запущен внешне. Необходимо запустить процесс сборки в HDL Workflow Advisor путем снятия флажка Run build process externally в задаче Build FPGA Bitstream. Для примера смотрите PostBuildBitstreamFcn.

Целевое устройство программы

CallbackCustomProgrammingMethod

Задайте пользовательский метод программирования FPGA. Для примера смотрите CallbackCustomProgrammingMethod.

Определение пользовательских функций обратного вызова

  1. Для каждой функции обратного вызова, которую вы хотите, чтобы HDL Coder выполнил после выполнения задачи, создайте файл, который задает функцию MATLAB с любым именем.

  2. Убедитесь, что функция обратного вызова имеет зарегистрированные аргументы ввода и вывода.

  3. Проверьте, что функции доступны от пути MATLAB.

  4. Укажите указатель на функцию функций обратного вызова в функции определения исходного проекта.

  5. Следуйте соглашениям о присвоении имен для имен свойства коллбэка.

Чтобы узнать больше об этих функциях обратного вызова, смотрите hdlcoder.ReferenceDesign.

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

|

Связанные примеры

Больше о