Если вы проектируете свой алгоритм с помощью 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 задаче, как показано ниже.
Этот пример использует модель мостового выпрямителя, чтобы проиллюстрировать, как сгенерировать модель реализации с логикой валидации, вставленной в модель, и как можно разрешить любые утверждения, которые могут быть сгенерированы, когда вы моделируете модель реализации.
Откройте модель мостового выпрямителя. В MATLAB® Командное окно, введите:
open_system('sschdlexBridgeRectifierExample') open_system('sschdlexBridgeRectifierExample/Simscape_system')
Внутри Simscape_system
Вы видите четыре диода, расположенных в строении моста. Для положительных и отрицательных входных значений это строение обеспечивает положительный, выпрямленный выход.
Откройте Simscape HDL Workflow Advisor для вашей модели:
sschdladvisor('sschdlexBridgeRectifierExample')
Щелкните правой кнопкой мыши Get state-space parameters задачу и выберите Run to Selected Task, чтобы запустить все задачи в Advisor, кроме Generate implementation model задачи.
В Generate implementation model задаче установите флажок Generate validation logic for the implementation model. Оставьте другие опции со значениями по умолчанию и выберите Run This Task.
После выполнения этой задачи сохраните окно пользовательского интерфейса для этой задачи открытым. Если симуляция модели реализации HDL генерирует предупреждения, вы изменяете настройки в Generate implementation model задаче, а затем перезапускаете эту задачу. Вы не должны изменять или перезапускать другие задачи.
Щелкните ссылку, чтобы открыть модель реализации 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. Чтобы устранить несоответствие:
Начните, увеличив Validation logic tolerance до начального значения, такого как 1e-4
.
Выберите Generate validation logic for the implementation model и запустите задачу, чтобы сгенерировать модель реализации HDL, которая включает логику валидации.
Симулируйте модель и проверьте, отображает ли симуляция утверждения в Diagnostic Viewer. Если результаты симуляции дают предупреждения, переходите к следующему шагу, чтобы увеличить количество итераций решателя.
Для каждого режима в физической системе коммутируемый линейный рабочий процесс приходит к представлению пространства состояний. Метод решателя итеративен и выполняет несколько расчеты, чтобы определить правильный режим для следующего временного шага. После определенного количества итераций значение выхода со следующего временного шага становится таким же, как и значение с предыдущего временного шага. Эта непротиворечивость в значении выхода указывает на правильное количество итераций решателя.
Советник по умолчанию выбирает оптимальное значение для количества итераций решателя. См. Использование количества итераций решателя. Если увеличение значения допуска не улучшает точность модели реализации HDL, можно разрешить числовое несоответствие, увеличив количество итераций решателя.
Когда вы увеличиваете количество итераций решателя, генератор кода изменяет шаг расчета сгенерированной модели реализации HDL. Большое количество итераций может значительно увеличить время симуляции. См. Уменьшение количества итераций решателя. Эта блок-схема иллюстрирует, как изменить 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, если результаты симуляции все еще дают предупреждения:
Перейдите к первому шагу, чтобы еще больше увеличить допуск логики валидации. Используйте значение допуска 1e-03
а затем моделируйте модель, чтобы увидеть, удовлетворены ли требования к числовой точности.
Увеличьте количество итераций решателя, если вы все еще видите предупреждения в Diagnostic Viewer. Продолжите итерацию между этими шагами, пока модель реализации HDL не будет численно совпадать с алгоритмом Simscape.
Для модели мостового выпрямителя, чтобы разрешить предупреждения, установите Validation logic tolerance на 1e-4
и задайте Floating Point Precision следующим образом double
. После того, как вы сгенерируете модель реализации с помощью логики валидации, вы видите, что симуляция модели не отображает предупреждения в Diagnostic Viewer.
sschdladvisor
| simscape.findNonlinearBlocks
(Simscape)