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

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

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

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

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

  • Сверхдискретизация фактора

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

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

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

Повысьте модель конвертера

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

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

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

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

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

    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 HDL Workflow Advisor Simscape:

  1. Запустите путем сокращения Number of solver iterations до значения, такого как 3

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

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

Если вы видите предупреждения или утверждения, это указывает на несоответствие симуляции, потому что количество итераций решателя, которые вы задали, не соответствует, чтобы вычислить необходимое количество режимов в проекте пространства состояний. Разрешите несоответствие путем увеличения значения допуска логики валидации или количества итераций решателя. Изменение 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 в зависимости от сложности вашего проекта HDL.

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

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

Функции

Похожие темы