Валидация модели реализации HDL для алгоритма Simscape

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Преобразование алгоритма Simscape в эквивалентную реализацию HDL приводит к ошибкам округления. Значение допуска по умолчанию относительно мало и может быть трудно достичь, особенно с типами данных с одной точностью в модели реализации HDL. Чтобы устранить несоответствие:

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

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

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

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

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

Советник по умолчанию выбирает оптимальное значение для количества итераций решателя. Смотрите Использование количества итераций решателя (HDL Coder). Если увеличение значения допуска не улучшает точность модели реализации HDL, можно разрешить числовое несоответствие, увеличив количество итераций решателя.

Когда вы увеличиваете количество итераций решателя, генератор кода изменяет шаг расчета сгенерированной модели реализации HDL. Большое количество итераций может значительно увеличить время симуляции. См. Сокращение количества итераций решателя (HDL Coder). Эта блок-схема иллюстрирует, как изменить Number of solver iterations.

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

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

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

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

Примечание

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

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

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

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

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

См. также

Функции

Похожие темы