Сгенерируйте оптимизированную модель реализации HDL из Simscape

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

Зачем оптимизировать модель реализации HDL

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

Венская модель выпрямителя

Чтобы открыть модель, в командной строке MATLAB ® введите:

open_system('sschdlexViennaRectifierExample')

Сохраните эту модель как ViennaRectifier_HDL, чтобы запустить рабочий процесс.

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

The Control подсистема реализует стратегию управления с обратной связью для Vienna rectifier подсистема при помощи пространственно-векторной модуляции. Во времени симуляции 0.1s, работает венский выпрямитель. Временами 0.4s и 0.6s, нагрузка увеличивается на стороне постоянного тока.

The Vienna rectifier подсистема состоит из трехфазных ветвей. Каждая ножка имеет по одной степени и шесть диодов степени. См. Венское управление выпрямителем (Simscape Electrical).

open_system('ViennaRectifier_HDL/Vienna rectifier')

Симулируйте модель. Просмотр результатов симуляции путем двойного клика по блокам Scope внутри Scopes подсистема.

sim('ViennaRectifier_HDL')
open_system('ViennaRectifier_HDL/Scopes/Scope')

Сгенерируйте модель реализации HDL и проверьте HDL Algrithm

Чтобы сгенерировать модель реализации HDL, используйте Simscape HDL Workflow Advisor. Можно сгенерировать HDL-код для модели реализации. Чтобы открыть Advisor, запустите эту команду:

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

Чтобы запустить рабочий процесс, щелкните правой кнопкой мыши задачу Generate implementation model и выберите Run to Selected Task. После того, как задача пройдет, вы увидите ссылку на модель реализации HDL. Чтобы увидеть количество строений, выберите задачу Извлечь уравнения. В задаче вы видите, что симуляция модели достигает 558 режимы. Такое большое количество режимов может увеличить ресурсное потребление проекта на ПЛИС.

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

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

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

open_system('gmStateSpaceHDL_ViennaRectifier_HDL/HDL Subsystem/HDL Algorithm')

Чтобы подтвердить алгоритм HDL, в задаче Generate implementation model установите флажок Generate validation logic for the implementation model, установите флажок Validation logic tolerance равным 0.001, и перезапустите эту задачу. Задача генерирует модель валидации пространства состояний, которая сравнивает модель реализации и исходную модель Simscape.

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

Симуляция модели не отображает утверждения, что указывает на то, что алгоритм HDL соответствует исходной модели.

sim('gmStateSpaceHDL_ViennaRectifier_HDL_vnl')

Сопоставьте параметры пространства состояний в модели реализации с ОЗУ

В модели реализации HDL используются single типы данных и содержат большие блоки Delay, которые находятся внутри цикла обратной связи в HDL Algorithm подсистема. Чтобы учесть большие задержки и заставить проект запускаться с более высокой тактовой частотой на целевой FPGA, модель использует конвейеризацию тактовой частоты в сочетании с большим значением коэффициента избыточной дискретизации.

hdlsaveparams('gmStateSpaceHDL_ViennaRectifier_HDL')

Для получения дополнительной информации смотрите:

В задаче Generate implementation model в настройке Map state space parameters to RAMs используется значение по умолчанию Auto. Эта настройка отображает большие параметры пространства состояний в модели реализации HDL на ОЗУ, когда количество режимов превышает порог значение 200. Когда модель венского выпрямителя использует большое количество режимов, параметры пространства состояний отображаются на ОЗУ. Путем сопоставления с ОЗУ, вы сохраняете ресурсы интерполяционной таблицы на FPGA. Чтобы включить отображение ОЗУ, параметр UseRAM включен на маскированных блоках подсистемы, которые выполняют обновление состояния и вычисляют выход.

Чтобы сопоставить параметры с ОЗУ независимо от порога, установите параметры Map состояния space в ОЗУ равными on.

Чтобы увидеть эффект отображения ОЗУ на модели венского выпрямителя:

1. Проверьте настройку параметра UseRAM, запустив hdlget_param функция на Multiply Input и Multiply State блоки.

Multiplysubsys1 = 'gmStateSpaceHDL_ViennaRectifier_HDL/HDL Subsystem/HDL Algorithm/State Update';
Multiplysubsys2 = 'gmStateSpaceHDL_ViennaRectifier_HDL/HDL Subsystem/HDL Algorithm/Output';
UseRAM1 = hdlget_param([Multiplysubsys1 '/Multiply Input'], 'UseRAM')
UseRAM2 = hdlget_param([Multiplysubsys1 '/Multiply State'], 'UseRAM')
UseRAM1 =

    'on'


UseRAM2 =

    'on'

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

hdlset_param('gmStateSpaceHDL_ViennaRectifier_HDL', 'ResourceReport', 'on')

3. Сгенерируйте HDL-код для модели реализации.

makehdl('gmStateSpaceHDL_ViennaRectifier_HDL/HDL Subsystem');

При генерации кода HDL Coder открывает отчет Code Generation. Отчет о ресурсах высокого уровня показывает 136 Используемые ОЗУ.

Совместное использование ресурсов блоков обновления и расчетов выхода

Прежде чем вы сгенерируете HDL-код для HDL-подсистемы, можно оптимизировать алгоритм с помощью оптимизации совместного использования ресурсов в HDL Coder. Совместное использование ресурсов является оптимизацией области, которая идентифицирует несколько функционально эквивалентных ресурсов и заменяет их одним, эквивалентным ресурсом. Данные мультиплексируются во времени по совместно используемому ресурсу для выполнения тех же операций. См. Раздел «Совместное использование ресурсов».

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

Для совместного использования этих подсистем для венского выпрямителя и генерации HDL-кода:

1. Задайте значение SharingFactor 2 на подсистемах Multiply Input и Multiply State.

hdlset_param([Multiplysubsys1 '/Multiply Input'],'SharingFactor', 2)
hdlset_param([Multiplysubsys1 '/Multiply State'],'SharingFactor', 2)
hdlset_param([Multiplysubsys2 '/Multiply Input'],'SharingFactor', 2)
hdlset_param([Multiplysubsys2 '/Multiply State'],'SharingFactor', 2)

2. Включите генерацию отчета оптимизации

hdlset_param('gmStateSpaceHDL_ViennaRectifier_HDL', 'OptimizationReport', 'on')

3. Сгенерируйте HDL-код для блока HDL Subsystem в модели реализации.

makehdl('gmStateSpaceHDL_ViennaRectifier_HDL/HDL Subsystem');

При генерации кода HDL Coder открывает отчет Code Generation. Чтобы увидеть состояние оптимизации совместного использования ресурсов, щелкните раздел «Потоковая передача и совместное использование» отчета. Эта группа совместного использования показывает точечные продукты, которыми поделилась оптимизация. При нажатии на High-level Resource Report видно, что число сумматоров, умножителей и регистров уменьшилось.

См. также

Функции

Похожие темы

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