Подтвердите модель реализации HDL к алгоритму Simscape

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

Прежде чем вы будете моделировать модель реализации на FPGA или предназначаться для модулей ввода-вывода FPGA Speedgoat, можно проверить функциональность проекта в среде моделирования Simulink. Чтобы проверить функциональность, задайте вставку логики валидации в модели реализации HDL, когда вы запустите HDL Workflow Advisor Simscape. Эта логика проверяет, совпадают ли числовые результаты модели реализации HDL с исходным алгоритмом Simscape.

В некоторых случаях может быть несоответствие в результатах симуляции между алгоритмом Simscape и соответствующей реализацией HDL. Такие несоответствия генерируют предупреждения или утверждения, когда вы симулируете модель реализации. Чтобы разрешить предупреждения, используйте комбинацию различных настроек в задаче Generate implementation model, как проиллюстрировано ниже.

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

Этот пример использует модель мостового выпрямителя, чтобы проиллюстрировать, как сгенерировать модель реализации с логикой валидации, вставленной в модель, и как можно разрешить любые утверждения, которые могут быть сгенерированы, когда вы симулируете модель реализации.

  1. Откройте модель мостового выпрямителя. В Командном окне MATLAB®, введите:

    open_system('sschdlexBridgeRectifierExample')
    open_system('sschdlexBridgeRectifierExample/Simscape_system')

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

  2. Откройте HDL Workflow Advisor Simscape для своей модели:

    sschdladvisor('sschdlexBridgeRectifierExample')
  3. Щелкните правой кнопкой по задаче Get state-space parameters и выберите Run to Selected Task, чтобы запустить все задачи в Советнике за исключением задачи Generate implementation model.

  4. В задаче Generate implementation model установите флажок Generate validation logic for the implementation model. Оставьте другие опции с их значениями по умолчанию и выберите Run This Task.

    После выполнения этой задачи сохраните окно UI для этой задачи открытым. Если симуляция модели реализации HDL генерирует предупреждения, вы изменяете настройки в задаче Generate implementation model и затем повторно выполняете эту задачу. Вы не должны изменять или повторно выполнять другие задачи.

  5. Щелкните по ссылке, чтобы открыть модель реализации HDL. Вы видите Validation Подсистема, которая сравнивает результаты симуляции модели Simscape к модели реализации HDL. Симулируйте модель реализации.

Вы видите, что симуляция модели генерирует несколько утверждений, указывающих на несоответствие в результатах симуляции. Если вы открываете Диагностическое Средство просмотра, вы видите это сообщение:

Assertion detected in 'gmStateSpaceHDL_BridgeRectifier_HDL_SimMismatch/Validation/Check Static Range1' at time 0.04186 [4982 similar]

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

Увеличьте допуск логики валидации

Преобразование алгоритма Simscape к эквивалентной реализации HDL приводит к погрешностям округления. По умолчанию Validation logic tolerance установлен в 1e-12. Это значение допуска относительно мало и может затруднить, чтобы достигнуть особенно с типами данных с одинарной точностью в модели реализации HDL. Разрешить несоответствие:

  1. Запустите путем увеличения Validation logic tolerance до начального значения, такого как 1e-4.

  2. Выберите Generate validation logic for the implementation model и запустите задачу сгенерировать модель реализации HDL, которая включает логику валидации.

  3. Симулируйте модель и проверяйте, отображает ли симуляция утверждения в Диагностическом Средстве просмотра. Если результаты симуляции производят предупреждения, продолжают к следующему шагу увеличивать число итераций решателя.

Увеличьте число итераций решателя

Для каждого режима в физической системе коммутируемый линейный рабочий процесс достигает представления пространства состояний. Метод решателя является итеративным и выполняет множественные вычисления, чтобы определить правильный режим для следующего временного шага. После определенного числа итераций выходное значение от следующего временного шага становится тем же самым как значением от предыдущего временного шага. Эта непротиворечивость в выходном значении указывает на правильное количество итераций решателя.

Чтобы улучшить числовую точность сгенерированной модели реализации HDL и разрешить несоответствие, увеличьте число итераций решателя. Эта блок-схема иллюстрирует, как изменить Number of solver iterations.

Примечание

Когда вы увеличиваете число итераций решателя, генератор кода изменяет шаг расчета сгенерированной модели реализации HDL. Большое количество итераций может значительно увеличить время симуляции.

Используйте большую точность с плавающей точкой

Можно использовать установку Floating-point precision в задаче Generate implementation model задать тип данных с плавающей точкой, который вы хотите использовать в алгоритме в HDL Subsystem. Задайте, хотите ли вы сохранить коэффициенты матрицы в single или double типы данных и использовать ли single или double при выполнении расчетов.

Точность с плавающей точкойОписание
DoubleИспользуя двойную точность с плавающей точкой увеличивает числовую точность сгенерированной модели. Используя двойные типы данных в вашей модели может увеличить потребление области и уменьшить целевую частоту.
SingleЭто - настройка по умолчанию для точности с плавающей точкой.
Single coefficient, double computationЭтот режим предлагает компромисс между Single и Double режимы точности с плавающей точкой. Сохранить использование памяти, коэффициенты, которые хранятся в single. Матричные расчеты затем выполняются в double для улучшенной точности.

Эта блок-схема иллюстрирует, как изменить Floating Point Precision и улучшить числовую точность сгенерированной модели реализации HDL.

Примечание

Операции с двойной точностью имеют большие задержки и требуют, чтобы большой Oversampling factor выделил достаточные задержки операций с плавающей точкой, который уменьшает частоту дискретизации. Для компромисса между точностью и точностью, используйте Single coefficient, double computation как Floating Point Precision.

После определения двойных типов данных, если результаты симуляции все еще производят предупреждения:

  1. Продолжите к первому шагу далее увеличивать допуск логики валидации. Используйте значение допуска 1e-03 и затем симулируйте модель, чтобы видеть, удовлетворяются ли числовые требования точности.

  2. Увеличьте число итераций решателя, если вы все еще видите предупреждения в Диагностическом Средстве просмотра. Продолжите выполнять итерации между этими шагами, пока модель реализации HDL численно не будет совпадать с алгоритмом Simscape.

Для модели мостового выпрямителя, чтобы разрешить предупреждения, устанавливают Validation logic tolerance на 1e-4 и задайте Floating Point Precision как double. После того, как вы генерируете модель реализации с логикой валидации, вы видите, что симуляция модели не выводит предупреждения в Диагностическом Средстве просмотра.

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

Функции

Похожие темы