Подтвердите модель реализации 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. Откройте модель мостового выпрямителя. Чтобы изучить, как мостовой выпрямитель реализован, откройте Подсистему Simscape_system. Открыть модель мостового выпрямителя, в Командном окне MATLAB®, введите:

    open_system('sschdlexBridgeRectifierExample')
    open_system('sschdlexBridgeRectifierExample/Simscape_system')
  2. Сохраните локальную копию этой модели и переименуйте ее как BridgeRectifier_HDL, чтобы запустить Simscape к рабочему процессу HDL. Откройте HDL Workflow Advisor Simscape для своей модели:

    sschdladvisor('BridgeRectifier_HDL')
  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.

    После выполнения этой задачи вы видите ссылку на сгенерированную модель реализации HDL. После того, как вы сгенерируете модель реализации, не закрывайте HDL Workflow Advisor Simscape пользовательский интерфейс. Путем хранения этого окна открытым, если необходимо зафиксировать какие-либо предупреждения, сгенерированные из модели реализации, только необходимо изменить настройки в задаче 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. Настройки включают Validation logic tolerance, Number of solver iterations и Floating-point precision. В большинстве случаев, чтобы разрешить числовое несоответствие, можно хотеть использовать комбинацию этих настроек.

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

Преобразование алгоритма Simscape к эквивалентной реализации HDL приводит к погрешностям округления. По умолчанию Validation logic tolerance установлен в 1e-12. Это значение допуска является относительно маленьким и может быть трудным достигнуть особенно с типами данных с одинарной точностью в модели реализации HDL. Это - хорошая практика, чтобы увеличить Validation logic tolerance до начального значения, такого как 1e-4. После того, как вы увеличиваете значение допуска, убедитесь, что вы выбираете Generate validation logic for the implementation model. Запустите задачу сгенерировать модель реализации HDL, которая включает логику валидации. Моделируйте модель и проверяйте, выводит ли симуляция какие-либо предупреждения в Диагностическом Средстве просмотра. Если результаты симуляции производят предупреждения, продолжают к следующему шагу увеличивать число итераций решателя.

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

Прежде чем вы сгенерируете модель реализации HDL в вашей модели Simscape, вы используете Блок Configuration Решателя, который сконфигурирован, чтобы использовать фиксированный шаг, дискретный решатель, которому установили Solver type на Backward Euler. На основе этих настроек коммутируемый линейный рабочий процесс достигает представления пространства состояний для каждого режима в физической системе. Метод решателя использует итеративный алгоритм, который выполняет модель в пространстве состояний многократно, чтобы определить и прибыть в правильный режим. Number of solver iterations по умолчанию является 5. Чтобы улучшить числовую точность, увеличьте Number of solver iterations.

Можно запустить с начального значения 20 для Number of solver iterations. Запустите задачу Generate implementation model при проверке, что вы выбрали Generate validation logic for the implementation model. Моделируйте модель и проверяйте, выводит ли симуляция какие-либо предупреждения в Диагностическом Средстве просмотра. Если результаты симуляции производят предупреждения, можно увеличить Number of solver iterations шагом 20, сгенерировать модель реализации, и затем моделировать модель, чтобы видеть, удовлетворяет ли это числовые требования точности.

Примечание

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

Если ваша модель реализации не удовлетворяет требования точности после того, как вы будете использовать значение 100 для Number of solver iterations, продолжать к следующему шагу использовать типы данных с плавающей точкой с двойной точностью.

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

Можно использовать установку Floating-point precision в задаче Generate implementation model задать, хотите ли вы сгенерировать модель реализации HDL с типами данных double или single. Если вы выбираете типы данных double, числовую точность сгенерированных образцовых увеличений. Однако использование типов данных double в вашей модели может увеличить потребление области и уменьшить целевую частоту. Рекомендуется, чтобы вы использовали типы данных single, и затем моделировали сгенерированную модель, чтобы видеть, удовлетворяет ли ваш проект числовые требования точности. Запустите задачу Generate implementation model при проверке, что вы выбрали Generate validation logic for the implementation model. Моделируйте модель и проверяйте, выводит ли симуляция какие-либо предупреждения в Диагностическом Средстве просмотра.

Если результаты симуляции все еще производят предупреждения, продолжают к первому шагу далее увеличивать допуск логики валидации. Используйте значение допуска 1e-03 и затем моделируйте модель, чтобы видеть, удовлетворяются ли числовые требования точности. Если вы все еще видите предупреждения в Диагностическом Средстве просмотра, увеличиваете число итераций решателя. Можно продолжить выполнять итерации между этими шагами, пока модель реализации HDL численно не совпадает с алгоритмом Simscape.

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

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

Функции

Похожие темы