exponenta event banner

Создание кода HDL для моделей Simscape

В этом примере показано, как создать код HDL для модели полуволнового выпрямителя, использующего блоки Simcape™. Используйте Simscape HDL Workflow Advisor для создания модели реализации HDL. Затем можно создать код HDL для модели внедрения. См. раздел Начало работы с оборудованием Simscape в цикле.

Модель полуволнового выпрямителя

Для открытия модели полуволнового выпрямителя в командной строке MATLAB введите:

open_system('sschdlexHalfWaveRectifierExample')

Сохранить эту модель локально как HalfWaveRectifier_HDL для запуска рабочего процесса.

open_system('HalfWaveRectifier_HDL')
set_param('HalfWaveRectifier_HDL', 'SimulationCommand', 'Update')

На верхнем уровне модели Simscape_system блок моделирует алгоритм полуволнового выпрямителя. Модель принимает вход синусоидальной волны, использует блок Rate Transition для дискретизации непрерывного ввода времени и имеет блок Scope, который вычисляет выход. Чтобы увидеть алгоритм полуволнового выпрямителя, дважды щелкните значок Simscape_system подсистема.

open_system('HalfWaveRectifier_HDL/Simscape_system')

Полуволновый выпрямитель состоит из резистора, являющегося линейным блоком, и диода, являющегося коммутируемым линейным блоком. Модель Simscape предварительно настроена для совместимости с HDL. На интерфейсах входных и выходных портов модель имеет блоки Simulink-PS Converter и PS-Simulink Converter. Параметры решателя настроены на совместимость с Simscape HDL Workflow Advisor. Если открыть диалоговое окно Параметры блока (Block Parameters) для блока Конфигурация решателя (Solver Configuration), будет выбран параметр Использовать локальный решатель (Use local solver) и Backward Euler указывается как тип решателя. См. раздел Начало работы с оборудованием Simscape в цикле.

Для просмотра функциональных возможностей смоделируйте модель, а затем откройте блок Область (Scope).

sim('HalfWaveRectifier_HDL')
open_system('HalfWaveRectifier_HDL/Scope')

Запуск помощника по рабочим процессам Simscape HDL

Для создания модели реализации HDL, на основе которой создается код, используйте Simscape HDL Workflow Advisor. Чтобы открыть помощник, выполните следующую команду:

sschdladvisor('HalfWaveRectifier_HDL')
### Running Simscape HDL Workflow Advisor for <a href="matlab:(HalfWaveRectifier_HDL)">HalfWaveRectifier_HDL</a>

Эта команда обновляет кэш помощника по модели и открывает Simscape HDL Workflow Advisor. Чтобы узнать больше о консультанте Simscape HDL Workflow Advisor и различных задачах, щелкните правой кнопкой мыши эту папку или задачу и выберите Что это?. См. также Задачи консультанта Simscape HDL Workflow Advisor.

Чтобы запустить рабочий процесс и сравнить функциональные возможности модели реализации HDL с исходным алгоритмом Simscape, выберите шаг Создать модель реализации, а затем установите флажок Генерировать логику проверки для модели реализации. Использовать логический допуск проверки 0.001. Щелкните правой кнопкой мыши шаг Создать модель реализации и выберите Выполнить до выбранной задачи.

Консультант создает модель реализации HDL и модель проверки состояния пространства. Модель реализации имеет то же имя, что и исходная модель Simscape, и использует префикс gmStateSpaceHDL_. Модель проверки состояния-пространства имеет то же имя, что и модель реализации, и использует постфикс _vnl.

Открытие и изучение модели внедрения HDL

В задаче Создать модель реализации щелкните ссылку, чтобы открыть модель реализации. Модель содержит Simscape_system подсистема, которая содержит HDL Subsystem блок. HDL Subsystem моделирует представление состояния-пространства, созданное из модели Simscape.

open_system('gmStateSpaceHDL_HalfWaveRectifier_HDL')
open_system('gmStateSpaceHDL_HalfWaveRectifier_HDL/Simscape_system')
set_param('gmStateSpaceHDL_HalfWaveRectifier_HDL','SimulationCommand','Update')

Порты этой подсистемы используют то же имя, что и блоки преобразователя Simulink-PS и PS-Simulink Converter в исходной модели Simscape. При навигации внутри этой подсистемы отображается несколько блоков задержки, сумматоров и матричного умножения, которые моделируют уравнения состояния-пространства.

open_system('gmStateSpaceHDL_HalfWaveRectifier_HDL/Simscape_system/HDL Subsystem/HDL Algorithm')

Для моделирования модели реализации HDL введите эти команды. Откройте блок «Область» для просмотра результатов.

sim('gmStateSpaceHDL_HalfWaveRectifier_HDL')
open_system('gmStateSpaceHDL_HalfWaveRectifier_HDL/Scope')

Код HDL генерируется для HDL Subsystem блок внутри этой модели.

Проверить алгоритм HDL

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

open_system('gmStateSpaceHDL_HalfWaveRectifier_HDL_vnl')
sim('gmStateSpaceHDL_HalfWaveRectifier_HDL_vnl')

Выходные данные этой модели соответствуют исходной модели Simscape. При моделировании не генерируются утверждения, указывающие на совпадение выходных данных. Для получения более системной проверки см. раздел Проверка модели внедрения HDL в алгоритм Simscape.

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

Создание кода HDL и модели проверки

Параметры модели и подсистемы HDL сохраняются с помощью следующей команды:

hdlsaveparams('gmStateSpaceHDL_HalfWaveRectifier_HDL');
%% Set Model 'gmStateSpaceHDL_HalfWaveRectifier_HDL' HDL parameters
hdlset_param('gmStateSpaceHDL_HalfWaveRectifier_HDL', 'FloatingPointTargetConfiguration', hdlcoder.createFloatingPointTargetConfig('NativeFloatingPoint' ...
, 'LatencyStrategy', 'MIN') ...
);
hdlset_param('gmStateSpaceHDL_HalfWaveRectifier_HDL', 'HDLSubsystem', 'gmStateSpaceHDL_HalfWaveRectifier_HDL/Simscape_system/HDL Subsystem');
hdlset_param('gmStateSpaceHDL_HalfWaveRectifier_HDL', 'MaskParameterAsGeneric', 'on');
hdlset_param('gmStateSpaceHDL_HalfWaveRectifier_HDL', 'Oversampling', 60);

% Set SubSystem HDL parameters
hdlset_param('gmStateSpaceHDL_HalfWaveRectifier_HDL/Simscape_system/HDL Subsystem', 'FlattenHierarchy', 'on');

hdlset_param('gmStateSpaceHDL_HalfWaveRectifier_HDL/Simscape_system/HDL Subsystem/HDL Algorithm/Mode Selection/Generate Mode Vector', 'Architecture', 'MATLAB Datapath');

Модель использует отдельные типы данных и генерирует код HDL в Native Floating Point режим. Операторы с плавающей запятой могут вводить задержки. Поскольку конструкция содержит контуры обратной связи, для распределения достаточных задержек для операторов внутри контуров обратной связи модель использует конвейерную передачу с тактовой частотой в сочетании с большим значением коэффициента избыточной дискретизации. Коэффициент избыточной выборки 60 и оптимизация конвейеризации тактовой частоты сохраняется в этой модели.

Дополнительные сведения см. в разделе:

Перед созданием кода HDL включите создание модели проверки. Модель проверки сравнивает выходные данные созданной модели после генерации кода и исходной модели. Дополнительные сведения см. в разделах Сгенерированная модель и модель проверки.

Чтобы сохранить настройки создания модели проверки в модели Simulink, выполните следующие команды.

HDLmodelname = 'gmStateSpaceHDL_HalfWaveRectifier_HDL';
hdlset_param(HDLmodelname, 'TargetDirectory', 'C:/Temp/hdlsrc');
hdlset_param(HDLmodelname, 'GenerateValidationModel', 'on');

Чтобы создать код HDL, выполните следующую команду:

makehdl('gmStateSpaceHDL_HalfWaveRectifier_HDL/HDL Subsystem');

Сгенерированный код HDL и модель проверки сохраняются в C:/Temp/hdlsrc каталог. Созданный код сохраняется как HDL_Subsystem_tc.vhd. Чтобы открыть модель проверки, щелкните ссылку на gm_gmStateSpaceHDL_HalfWaveRectifier_HDL_vnl.slx в журналах создания кода в окне команд.

Откройте окно Compare блок на выходе HDL Subsystem_vnl подсистема валидационной модели. Затем откройте Assert_Out1 блок. Для просмотра результатов моделирования после создания кода HDL откройте Compare: Out1 Блок области. Верхний график представляет выходные данные созданной модели, а средний график представляет выходные данные модели реализации. На боттоновом графике вычисляется разница между выходами обеих моделей. При совпадении выходных данных ошибка равна нулю.

См. также

Функции

Связанные темы