exponenta event banner

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

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

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

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

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

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

open_system('sschdlexViennaRectifierExample')

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

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

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

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

open_system('ViennaRectifier_HDL/Vienna rectifier')

Моделирование модели. Просмотрите результаты моделирования, дважды щелкнув блоки области внутри Scopes подсистема.

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

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

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

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

Чтобы запустить рабочий процесс, щелкните правой кнопкой мыши задачу Создать модель реализации и выберите Выполнить до выбранной задачи. После выполнения задачи появится ссылка на модель внедрения HDL. Чтобы просмотреть количество конфигураций, выберите задачу Извлечь уравнения (Extract Equations). На задании видно, что моделирование модели достигает 558 режимы. Такое большое количество режимов может увеличить ресурсоемкость конструкции на FPGA.

Для открытия модели реализации HDL введите следующие команды:

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

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

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

Чтобы проверить алгоритм HDL, в задаче Создать модель реализации (Generate implementation model) установите флажок Генерировать логику проверки для модели реализации (Generate validation logic for the implementation model), установите допуск логики проверки в значение 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 типы данных и содержит большие блоки задержки, которые находятся внутри цикла обратной связи в HDL Algorithm подсистема. Чтобы учесть большие задержки и выполнить проектирование с более высокой тактовой частотой на целевом FPGA, модель использует конвейер тактовой частоты в сочетании с большим значением коэффициента избыточной дискретизации.

hdlsaveparams('gmStateSpaceHDL_ViennaRectifier_HDL')

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

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

Для отображения параметров в RAM независимо от порогового значения установите параметры пространства состояния Map в RAM в значение 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 открывает отчет о создании кода. Отчет о ресурсах высокого уровня показывает 136 Используемые RAM.

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

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

В модели реализации 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 в модели реализации.

makehdl('gmStateSpaceHDL_ViennaRectifier_HDL/HDL Subsystem');

При создании кода кодер HDL открывает отчет о создании кода. Чтобы увидеть состояние оптимизации общего доступа к ресурсам, щелкните раздел отчета Потоковая передача и общий доступ. Эта группа общего доступа показывает точечные продукты, совместно используемые оптимизацией. Если щелкнуть Отчет о высокоуровневых ресурсах (High-level Resource Report), количество сумматоров, множителей и регистров уменьшилось.

См. также

Функции

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