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

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

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

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

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

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

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 Boost.

open_system('Solar_Power_Inverter_Multiple_Network_HDL/PV Boost')

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

open_system('Solar_Power_Inverter_Multiple_Network_HDL/PV Inverter')

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

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

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. Запустите рабочий процесс к линейной задаче Check switched.

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

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

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

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

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

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

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

Чтобы открыть модель реализации, щелкните ссылку в журнале задач модели реализации Generate. Переименуйте модель как 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-подсистемы. Блок HDL Subsystem моделирует уравнения пространства состояний для усилителя. Блок HDL Subsystem1 моделирует уравнения пространства состояний для полного мостового инвертора. Подсистемы Валидации и Validation1 сравнивают функциональную эквивалентность представления пространства состояний усилителя и полного мостового инвертора с соответствующей сетью Simscape в исходной модели.

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

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

Сгенерируйте 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-код для обоих блоков HDL Subsystem, можно поместить блоки в другую подсистему верхнего уровня, а затем сгенерировать 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.

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

См. также

Функции

Похожие темы