Улучшите частоту дискретизации модели реализации HDL, сгенерированной из алгоритма Simscape

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

Частота дискретизации

Когда вы генерируете HDL-код и развертываете модель объекта управления на FPGA, вы можете захотеть улучшить частоту дискретизации. Частота дискретизации зависит от этих параметров:

  • Тактовая частота FPGA

  • Коэффициент избыточной дискретизации

  • Количество итераций решателя

Чтобы улучшить частоту дискретизации, вы хотите максимизировать тактовую частоту FPGA и минимизировать коэффициент избыточной дискретизации и количество итераций решателя. Когда вы улучшаете частоту дискретизации, убедитесь, что обновленная частота дискретизации эквивалентна фиксированному шагу расчета, которое вы задаете для вашей исходной модели Simscape с помощью блока Solver Configuration. Чтобы узнать больше о том, как этот блок используется в вашей модели перед запуском Simscape HDL Workflow Advisor, смотрите Генерация HDL-кода для Simscape-моделей (HDL Coder).

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

Модель конвертера Boost

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

  1. Откройте модель усилителя конвертера. Чтобы узнать, как реализован усилитель конвертера, откройте Simscape_system Подсистема. Чтобы открыть модель усилителя конвертера, в MATLAB® Командное окно, введите:

    open_system('sschdlexBoostConverterExample')
    open_system('sschdlexBoostConverterExample/Simscape_system')

    Вы видите, что модель запускается во шаге расчета 1e-6. Шага расчета 200e-9 соответствует шагу расчета источников, которые управляют алгоритмом Simscape.

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

    sschdladvisor('sschdlexBoostConverterExample')
  3. Запустите рабочий процесс к Generate implementation model задаче.

    После выполнения этой задачи вы видите ссылку на сгенерированную модель реализации HDL. Щелкните ссылку, чтобы открыть модель реализации HDL.

  4. Моделируйте модель реализации HDL. Когда вы перемещаетесь по модели к HDL Algorithm Подсистема, вы видите, что модель использует single типы данных и запуски во шаг расчета 200e-9, что 5 в разы быстрее, чем исходная модель Simscape.

  5. Запустите эту команду, чтобы увидеть настройки параметров HDL, которые сохраняются в модели:

    hdlsaveparams('gmStateSpaceHDL_sschdlexBoostConverterExamp')

    %% Set Model 'gmStateSpaceHDL_BoostConverter_HDL' HDL parameters
    hdlset_param('gmStateSpaceHDL_BoostConverter_HDL', 'FloatingPointTargetConfiguration', ...
        hdlcoder.createFloatingPointTargetConfig('NativeFloatingPoint' ...
      , 'LatencyStrategy', 'MIN') ...
    );
    hdlset_param('gmStateSpaceHDL_BoostConverter_HDL', 'HDLSubsystem', ... 
                                                'gmStateSpaceHDL_BoostConverter_HDL');
    hdlset_param('gmStateSpaceHDL_BoostConverter_HDL', 'MaskParameterAsGeneric', 'on');
    hdlset_param('gmStateSpaceHDL_BoostConverter_HDL', 'Oversampling', 60);
    
    % Set SubSystem HDL parameters
    hdlset_param('gmStateSpaceHDL_BoostConverter_HDL/HDL Subsystem', 'FlattenHierarchy', 'on');
    
    % Set SubSystem HDL parameters
    hdlset_param('gmStateSpaceHDL_BoostConverter_HDL/HDL Subsystem/HDL Algorithm/State Update/Multiply State', ... 
    'SharingFactor', 1);
    
    

Сохраненные параметры HDL указывают, что в модели включен режим с собственной плавающей точкой и используется Oversampling factor 60 и имеет Latency Strategy установлено на MIN. Эти значения по умолчанию, выбранные для количества итераций решателя и комбинации параметров HDL, предлагают оптимальный компромисс между коэффициентом избыточной дискретизации и целевой тактовой частотой FPGA и улучшают частоту дискретизации. Чтобы еще больше улучшить частоту дискретизации, уменьшите количество итераций и коэффициент избыточной дискретизации.

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

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

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

В Generate implementation model задаче Simscape HDL Workflow Advisor:

  1. Начните, сократив Number of solver iterations до значения, такого как 3

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

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

Если вы видите предупреждения или утверждения, это указывает на несоответствие симуляции, потому что количество заданных итераций решателя недостаточно для вычисления необходимого количества режимов в проекте пространства состояний. Устраните несоответствие путем увеличения значения логического допуска валидации или количества итераций решателя. Изменение Floating-point precision на double не рекомендуется. Операции двойной точности имеют большие задержки и требуют большой Oversampling factor для распределения достаточных задержек, что уменьшает частоту дискретизации. См. «Валидация модели реализации HDL в алгоритм Simscape» (HDL Coder).

Использование коэффициента избыточной дискретизации и стратегии задержки

Коэффициент избыточной дискретизации (HDL Coder) задает коэффициент, которым тактовая частота FPGA является произведением базовой частоты дискретизации модели HDL. Модель реализации HDL содержит циклы обратной связи и выполняет умножение больших матриц, которые имеют типы данных с плавающей точкой внутри циклов обратной связи. Чтобы учесть большую задержку, введенную этими операциями с плавающей точкой внутри циклов обратной связи, генератор кода использует большое значение коэффициента избыточной дискретизации в сочетании с оптимизацией конвейеризации тактовой частоты на модели. Для получения дополнительной информации смотрите Стратегию 1: Глобальная избыточная дискретизация (HDL Coder).

Вы варьируете коэффициент избыточной дискретизации и стратегию задержки оператора с плавающей точкой в сочетании. Коэффициент избыточной дискретизации по умолчанию 60 и стратегия минимальной задержки дает оптимальную частоту дискретизации. Для достижения максимальной тактовой частоты FPGA используйте стратегию максимальной задержки. Когда вы задаете эту стратегию задержки, операции с плавающей точкой вводят максимальное количество задержек. Чтобы распределить эти задержки, увеличьте коэффициент избыточной дискретизации. Если увеличение тактовой частоты FPGA перевешивает увеличение коэффициента избыточной дискретизации, вы достигаете более высокой частоты дискретизации.

Чтобы изменить стратегию задержки и коэффициент избыточной дискретизации в сочетании из диалогового окна Параметры конфигурации:

  1. На панели HDL Code Generation > Floating Point измените Latency Strategy на Max .

  2. На панели HDL Code Generation > Global Settings увеличьте Oversampling factor до значения, такого как 100 в зависимости от сложности вашего проекта.

Для модели преобразователя ускорения настройки по умолчанию Number of solver iterations установлены на 5, Oversampling factor установлено на 60, и Latency Strategy установлено на Min обеспечивает оптимальную частоту дискретизации.

См. также

Функции

Похожие темы