Сгенерируйте HDL-код для моделей Simscape с несколькими сетями

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

Почему использование модель Simscape с несколькими сетями

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

Модель инвертора солнечной энергии с несколькими сетями

Чтобы открыть модель, которая содержит несколько сетей, запуск:

open_system('sschdlexSolarInverterPartitionedNetworkExample')

В данном примере модель сохранена как Solar_Power_Inverter_Multiple_Network_HDL. Эта модель совпадает с sschdlexSolarInverterPartitionedNetworkExample, но перестроила подсистемы и логику для солнечной батареи, помещенной в подсистеме Solar_Panel.

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

Модель состоит из четырех частей: солнечная батарея, контроллер повышения, контроллер инверторов, и конвертер повышения и полный инвертор моста. Солнечная батарея моделируется в Simulink® при помощи интерполяционных таблиц. Контроллер повышения и контроллер инверторов обеспечивают управляющие сигналы для конвертера повышения и полного инвертора моста, который является H-мостом.

Исходная модель содержит конвертер повышения и полный инвертор моста как одна сеть в одной подсистеме. Видеть эту модель, введите:

open_system('sschdlexSolarInverterSingleNetworkExample')

Разделенная модель содержит эти две сети в отдельных подсистемах. Чтобы видеть конвертер повышения, откройте подсистему Повышения PV.

open_system('Solar_Power_Inverter_Multiple_Network_HDL/PV Boost')

Чтобы видеть полный инвертор моста, откройте подсистему Инвертора PV.

open_system('Solar_Power_Inverter_Multiple_Network_HDL/PV Inverter')

Запустите HDL Workflow Advisor Simscape для модели с несколькими сетями

1. Открыть HDL Workflow Advisor Simscape для модели, введите:

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

2. Запуститесь рабочий процесс к Проверке переключил линейную задачу.

HDL Workflow Advisor Simscape перечисляет количество сетей, существующих в модели и количестве алгебраических и дифференциальных переменных для каждой сети. Советник использует блок Solver Configuration, чтобы идентифицировать каждую уникальную сеть в вашей модели.

3. Запустите задачу уравнений Извлечения.

Задача отображает количество режимов, состояний, входных параметров, выходных параметров и дифференциальных переменных для каждой сети Simscape.

4. Запустите Дискретизировать задачу уравнений.

Представление пространства состояний теперь использует меньше режимов. Количеством режимов является 58 для конвертера повышения и 9 для полного инвертора моста, который приводит к общему количеству 67 режимы. Сокращение количества режимов сохраняет область модели реализации HDL на целевом устройстве.

5. Измените допуск логики Валидации в 1e-4 и выберите логику валидации Generate для флажка модели реализации. Запустите Сгенерировать задачу модели реализации.

Открытая модель реализации HDL и подтверждает алгоритм HDL

Чтобы открыть модель реализации, щелкните по ссылке в Сгенерировать журнале задачи модели реализации. Переименуйте модель как Solar_Power_Inverter_Multiple_Network_StateSpace.

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

Модель содержит две Подсистемы HDL. Блок Subsystem HDL моделирует уравнения пространства состояний для конвертера повышения. Блок HDL Subsystem1 моделирует уравнения пространства состояний для полного инвертора моста. Валидация и подсистемы Validation1 сравнивают функциональную эквивалентность представления пространства состояний конвертера повышения и полного инвертора моста с соответствующей сетью Simscape в исходной модели.

Параметры пространства состояний сохранены в файле MAT Solar_multiple_network_stateSpaceParameters.mat. Файл содержит массив ячеек двух структур. Одна структура содержит параметры для конвертера повышения. Другая структура содержит параметры для полного инвертора моста.

Чтобы сравнить функциональную эквивалентность, симулируйте модель. Если симуляция модели производит утверждения, можно разрешить несоответствие валидации путем изменения комбинации различных настроек в Сгенерировать задаче модели реализации, пока модель реализации HDL не совпадает с алгоритмом Simscape. Настройки включают увеличение допуска логики валидации, увеличение числа итераций решателя и изменения точности с плавающей точкой. Для получения дополнительной информации смотрите, Подтверждают Модель Реализации HDL к Алгоритму Simscape.

Сгенерируйте модель HDL-кода и валидации

1. Включите генерацию отчета использования ресурса.

hdlset_param('Solar_Power_Inverter_Multiple_Network_StateSpace', 'ResourceReport', 'on')

2. Прежде чем вы сгенерируете HDL-код, рекомендуется, чтобы вы включили генерацию модели валидации. Модель валидации сравнивает выход сгенерированной модели после генерации кода к выходу исходной модели. Чтобы узнать больше, см. Сгенерированную Модель Модели и Валидации.

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

3. Запустите makehdl функция, чтобы сгенерировать код. Чтобы сгенерировать HDL-код и для блоков Subsystem HDL, можно поместить блоки в другой подсистеме верхнего уровня и для затем сгенерировать HDL-код. Назовите эту подсистему как HDL_DUT.

makehdl('Solar_Power_Inverter_Single_Network_StateSpace/HDL_DUT')

Сгенерированный HDL-код и модель валидации сохранены в директории C:/Temp/hdlsrc. Сгенерированный код сохранен как HDL_DUT_tc.vhd. Чтобы открыть модель валидации, щелкните по ссылке к gm_Solar_Power_Inverter_Multiple_Network_StateSpace_vnl.slx в генерации кода, входит в систему Командное окно.

4. Когда вы генерируете HDL-код, открываете Отчет Генерации кода. Отчет использования ресурса указывает на большую сумму сумматоров, множителей и регистров, которые могут быть использованы на целевом устройстве FPGA.

Полное потребление ресурсов этих двух сетей значительно меньше потребления ресурсов одной, большой сети. Чтобы узнать о потреблении ресурсов одной сети инвертора солнечной энергии, смотрите Раздел Модели Simscape, Содержащие Большую Сеть в Несколько Меньших Сетей.

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

Функции

Похожие темы