exponenta event banner

Задержка и задержка

Вычислительная задержка

Вычислительная задержка блока или подсистемы связана с количеством операций, участвующих в выполнении этого блока или подсистемы. Например, блок БПФ, работающий на 256-образном входе, требует, чтобы программное обеспечение Simulink ® выполняло определенное количество умножений для каждого входного кадра. Фактическое время, затрачиваемое на эти операции, в значительной степени зависит от производительности как аппаратного обеспечения компьютера, так и базового программного обеспечения, например, среды MATLAB ® и операционной системы. Следовательно, вычислительная задержка для конкретной модели может изменяться от одной компьютерной платформы к другой.

Время моделирования, представленное в строке состояния модели и доступное через блок цифровых часов Simulink, не предоставляет никакой информации о задержке вычислений. Например, согласно таймеру Simulink упомянутый выше БПФ выполняется мгновенно, без какой-либо задержки. Вход блока БПФ в момент времени моделирования t = 25,0 обрабатывается и выводится в момент времени моделирования t = 25,0, независимо от количества операций, выполняемых алгоритмом БПФ. Таймер Simulink отражает только алгоритмическую задержку, а не вычислительную задержку.

Уменьшение задержки вычислений

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

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

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

  • Используйте шаблоны модели DSP Simulink для адаптации Simulink к моделированию цифровой обработки сигналов. Дополнительные сведения см. в разделе Настройка среды Simulink для моделей обработки сигналов.

  • Выключите строку состояния Simulink. На вкладке «Моделирование» снимите флажок «Среда» > «Строка состояния». Скорость моделирования улучшится, но индикатор времени не будет виден.

  • Запустите моделирование из командной строки MATLAB путем ввода

    sim(gcs)
    

    Этот метод запуска моделирования может значительно увеличить скорость моделирования, но также имеет несколько ограничений:

    • Взаимодействие с моделированием невозможно (например, для настройки параметров).

    • Необходимо нажать клавиши Ctrl + C, чтобы остановить моделирование, или указать время начала и окончания.

    • В S-функциях MATLAB нет обновлений графики.

  • Используйте программное обеспечение Simulink Coder™ для создания общего кода в реальном времени (GRT), предназначенного для вашей хост-платформы, и запустите модель с использованием созданного исполняемого файла. Дополнительные сведения см. в документации Simulink Coder.

Алгоритмическая задержка

Алгоритмическая задержка - это задержка, которая присуща алгоритму блока или подсистемы и не зависит от скорости ЦП. В этом руководстве алгоритмическая задержка блока называется просто задержкой блока. Он обычно выражается в виде числа выборок, на которое выходной сигнал блока отстает от соответствующего входного сигнала. Эта задержка напрямую связана с временем, прошедшим с таймером Simulink во время выполнения этого блока.

Алгоритмическая задержка конкретного блока может зависеть как от настроек параметров блока, так и от общих настроек Simulink. Для упрощения работы рекомендуется классифицировать задержку блока по следующим категориям:

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

Нулевая алгоритмическая задержка

Блок БПФ является примером компонента, который не имеет алгоритмической задержки. Таймер Simulink не записывает никакого прохождения времени, пока блок вычисляет БПФ входного сигнала, и преобразованные данные доступны на выходе на том же этапе времени, на котором принимается входной сигнал. Существует много других блоков, которые имеют нулевую алгоритмическую задержку, таких как блоки в библиотеках Matrices и Linear Algebra. Каждый из этих блоков обрабатывает свой вход и генерирует свой выход за один шаг времени.

Блок Нормализации является примером блока с нулевой алгоритмической задержкой:

  1. В командной строке MATLAB введите ex_normalization_tut.

    Откроется модель Пример нормализации (Normalization Example T1).

  2. Дважды щелкните на блоке «Сигнал из рабочего пространства». Откроется диалоговое окно Параметры блока источника: Сигнал из рабочего пространства (Source Block Parameters: Signal From Workspace).

  3. Задайте параметры блока следующим образом:

    • Сигнал = 1:100

    • Время выборки = 1/4

    • Выборки на кадр = 4

  4. Сохраните эти параметры и закройте диалоговое окно, нажав кнопку ОК.

  5. Запустите модель.

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

    Блок «Сигнал из рабочего пространства» генерирует новый кадр, содержащий четыре выборки один раз в секунду (Tfo  = λ * 4). Первые несколько выходных кадров:

    (t=0)		[ 1  2  3  4]'
    (t=1)		[ 5  6  7  8]'
    (t=2)		[ 9 10 11 12]'
    (t=3)		[13 14 15 16]'
    (t=4)		[17 18 19 20]'
    
  6. В командной строке MATLAB введите squeeze(dsp_examples_yout)'.

    Нормализованный выходной сигнал, dsp_examples_yout, преобразуется в упрощенный для чтения матричный формат. Результат, ans, показано на следующем рисунке:

    ans =
    
             0    0.0333    0.0667    0.1000    0.1333
        1.0000    0.0287    0.0345    0.0402    0.0460
        2.0000    0.0202    0.0224    0.0247    0.0269
        3.0000    0.0154    0.0165    0.0177    0.0189
        4.0000    0.0124    0.0131    0.0138    0.0146
        5.0000    0.0103    0.0108    0.0113    0.0118

    Первый столбец ans - время Simulink, обеспечиваемое блоком цифровых часов. Вы можете видеть, что квадрат 2-норма первого входа,

    [1 2 3 4]' ./ sum([1 2 3 4]'.^2)
    

    появляется в первой строке выходного сигнала (в момент времени t = 0), то же время, когда входной сигнал был принят блоком. Это указывает на то, что блок нормализации имеет нулевую алгоритмическую задержку.

Нулевая алгоритмическая задержка и алгебраические петли

Когда несколько блоков с нулевой алгоритмической задержкой соединены в цикле обратной связи, Simulink может сообщить об ошибке алгебраического цикла, и производительность обычно может пострадать. Можно предотвратить алгебраические циклы, введя хотя бы одну выборку задержки в цикл обратной связи, например, включив блок задержки с задержкой > 0. Дополнительные сведения см. в разделе Алгебраические концепции цикла (Simulink).

Основная алгоритмическая задержка

Блок Variable Integer Delay является примером блока с алгоритмической задержкой. В следующем примере этот блок используется для демонстрации этой концепции:

  1. В командной строке MATLAB введите ex_variableintegerdelay_tut.

    Откроется T1 Пример переменной целочисленной задержки (Variable Integer Delay Example).

  2. Дважды щелкните на блоке «Сигнал из рабочего пространства». Откроется диалоговое окно Параметры блока источника: Сигнал из рабочего пространства (Source Block Parameters: Signal From Workspace).

  3. Задайте параметры блока следующим образом:

    • Сигнал = 1:100

    • Время выборки = 1

    • Выборки на кадр = 1

  4. Сохраните эти параметры и закройте диалоговое окно, нажав кнопку ОК.

  5. Дважды щелкните на блоке «Константа». Откроется диалоговое окно Параметры исходного блока: Константа (Source Block Parameters: Constant).

  6. Задайте параметры блока следующим образом:

    • Постоянное значение = 3

    • Интерпретировать векторные параметры как 1-D = Снять этот флажок

    • Время выборки = 1

    Нажмите кнопку ОК, чтобы сохранить эти параметры и закрыть диалоговое окно.

    Входные данные для Delay порт блока Variable Integer Delay указывает количество периодов выборки, которые должны пройти до ввода в In порт освобождается для вывода. Это значение представляет алгоритмическую задержку блока. В этом примере, так как вход в Delay порт - 3и период выборки в портах In и Delay равен 1, то выборка, которая поступает в порт In блока в момент времени t = 0, освобождается на выход в момент времени t = 3.

  7. Дважды щелкните блок «Переменная целочисленная задержка». Откроется диалоговое окно Параметры функционального блока: переменная целочисленная задержка (Function Block Parameters: Variable Integer Delay)

  8. Установите для параметра Initial conditions значение -1и нажмите кнопку «ОК».

  9. На вкладке Debug выберите Information Overlays > Signal Dimensions and Nonscalar Signals.

  10. Запустите модель.

    Модель должна выглядеть так же, как и на следующем рисунке.

  11. В командной строке MATLAB введите dsp_examples_yout

    Выходные данные показаны ниже:

    dsp_examples_yout =
    
         0    -1
         1    -1
         2    -1
         3     1
         4     2
         5     3
    

    Первый столбец - это время Simulink, обеспечиваемое блоком цифровых часов. Второй столбец представляет собой задержанный ввод. Как и ожидалось, вход в блок при t = 0 задерживается на три выборки и появляется как четвертая выходная выборка при t = 3. Можно также видеть, что первые три выхода блока «Переменная целочисленная задержка» наследуют значение  параметра «Начальные условия» блока.-1. Этот период времени, от начала моделирования до распространения первого входа на выход, иногда называют начальной задержкой блока.

Многие блоки DSP System Toolbox™ имеют некоторую степень фиксированной или регулируемой алгоритмической задержки. К ним относятся любые блоки, алгоритмы которых основаны на элементах задержки или хранения, такие как фильтры или буферы. Часто, но не всегда, такие блоки предоставляют параметр Initial conditions, который позволяет задать выходные значения, генерируемые блоком во время начальной задержки. В других случаях начальные условия устанавливаются на 0.

Для получения информации о характеристиках задержки определенных блоков панели инструментов системы DSP обратитесь к справочным страницам блоков.

Избыточная алгоритмическая задержка (задержка задания)

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

Алгоритмическая задержка = Базовая алгоритмическая задержка + Задержка задания

Задержка задания для конкретного блока может зависеть от следующих характеристик блока и модели:

Режим задания Simulink

Simulink имеет два режима задания:

  • Однозадачность

  • Многозадачность

На вкладке Моделирование (Modeling) щелкните Параметры модели (Model Settings). На панели «Решатель» выберите «Тип» > Fixed-step. Разверните узел Сведения о решателе. Чтобы задать режим многозадачности, выберите Рассматривать каждую дискретную скорость как отдельную задачу. Чтобы задать режим одиночной задачи, снимите флажок Рассматривать каждую дискретную скорость как отдельную задачу.

Примечание

Многие многоскоростные блоки имеют уменьшенную задержку в режиме однозадачности Simulink. Дополнительные сведения см. в разделе «Задержка» справочной страницы многоскоростного блока. См. также Планирование на основе времени и создание кода (Simulink Coder).

Тип Block Rate

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

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

Примечание

Simulink может сообщить об ошибке алгебраического цикла, если он обнаруживает цикл обратной связи, полностью состоящий из многоскоростных блоков. Чтобы разорвать такой алгебраический цикл, вставьте односкоростной блок с ненулевой задержкой, такой как блок единичной задержки. Дополнительные сведения см. в разделе Алгебраические концепции цикла (Simulink).

Тип модельной ставки

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

Режим обработки блочного ввода

Многие блоки могут работать в режимах обработки на основе выборок или кадров. Для выбора можно задать для параметра обработки ввода блока значение Columns as channels (frame based) или Elements as channels (sample based).

Прогнозирование задержки выполнения задач

Конкретная величина задержки задания, создаваемая конкретной комбинацией параметров блока и настроек моделирования, обсуждается в разделе «Задержка» справочной страницы блока. В этом разделе страница ссылок блока Upsample используется для прогнозирования задержки задания модели.

  1. В командной строке MATLAB введите ex_upsample_tut1.

    Откроется модель Upsample Example T1.

  2. На вкладке Моделирование (Modeling) щелкните Параметры модели (Model Settings).

  3. На панели Решатель (Solver) в списке Тип (Type) выберите Fixed-step. В списке Решатель выберите discrete (no continuous states).

  4. Разверните узел Сведения о решателе. Выберите Рассматривать каждую дискретную скорость как отдельную задачу и нажмите кнопку ОК.

    Большинство многоскоростных блоков имеют задержку при выполнении задач только в многозадачном режиме Simulink.

  5. Дважды щелкните на блоке «Сигнал из рабочего пространства». Откроется диалоговое окно Параметры блока источника: Сигнал из рабочего пространства (Source Block Parameters: Signal From Workspace).

  6. Задайте параметры блока следующим образом и нажмите кнопку ОК:

    • Сигнал = 1:100

    • Время выборки = 1/4

    • Выборки на кадр = 4

    • Вывод формы после конечного значения данных на = Setting to zero

  7. Дважды щелкните блок «Upsample». Откроется диалоговое окно Параметры функционального блока (Function Block Parameters: Upsample).

  8. Задайте параметры блока следующим образом и нажмите кнопку ОК:

    • Коэффициент увеличения, L = 4

    • Смещение образца (от 0 до L-1) = 0

    • Обработка входных данных = Columns as channels (frame based)

    • Параметры тарифа = Allow multirate processing

    • Исходное условие = -1

    Параметр Rate options делает модель многоскоростной, так как входная и выходная частоты кадров не будут равны.

  9. Дважды щелкните на блоке цифровых часов. Откроется диалоговое окно «Параметры блока источника: цифровые часы».

  10. Задайте для параметра Sample time значение 0.25и нажмите кнопку «ОК».

    Это соответствует периоду выборки вывода блока Upsample.

  11. Запустите модель.

    Теперь модель должна выглядеть так же, как и на следующем рисунке.

    Модель добавляет текущее значение таймера Simulink из блока цифровых часов к каждому выходному кадру.

    В примере блок «Сигнал из рабочего пространства» генерирует новый кадр, содержащий четыре выборки один раз в секунду (Tfo = δ * 4). Первые несколько выходных кадров:

    (t=0)		[ 1  2  3  4]
    (t=1)		[ 5  6  7  8]
    (t=2)		[ 9 10 11 12]
    (t=3)		[13 14 15 16]
    (t=4)		[17 18 19 20]
    

    Блок Upsample увеличивает входной коэффициент на 4, вставляя три нуля между каждой входной выборкой. Изменение скоростей подтверждается блоками зонда в модели, которые показывают уменьшение периода кадра от Tfi = 1 до Tfo = 0,25.

  12. В командной строке MATLAB введите squeeze(dsp_examples_yout)'.

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

    «Latency and Initial Conditions» на справочной странице блока Upsample указывает, что когда Simulink находится в многозадачном режиме, первая выборка входных данных блока появляется на выходе как выборка MiL + D + 1, где Mi - размер входного кадра, L - коэффициент Upsample , а D - смещение выборки. Эта формула предсказывает, что первый вход в этом примере должен отображаться как выходной образец 17 (то есть 4 * 4 + 0 + 1).

    Первым столбцом выходного сигнала является время Simulink, обеспечиваемое блоком цифровых часов. Четыре значения справа от каждого времени являются значениями в выходном кадре в это время. Можно видеть, что первая выборка в каждом из первых четырех выходных кадров наследует значение параметра начальных условий блока Upsample. В результате задержки задания первое входное значение появляется как первая выборка 5-го выходного кадра (при t = 1). Это образец 17.

    Теперь попробуйте запустить модель в однозадачном режиме.

  13. На вкладке Моделирование (Modeling) щелкните Параметры модели (Model Settings).

  14. На панели Решатель (Solver) в списке Тип (Type) выберите Fixed-step. В списке Решатель выберите Discrete (no continuous states).

  15. Снимите флажок Рассматривать каждую дискретную скорость как отдельный параметр задачи.

  16. Запустите модель.

    Теперь модель работает в однозадачном режиме.

  17. В командной строке MATLAB введите squeeze(dsp_examples_yout)'.

    Первые несколько образцов результата, ansявляются:

    «Latency and Initial Conditions» на справочной странице блока Upsample указывает, что блок имеет нулевую задержку для всех многоскоростных операций в режиме однозадачности Simulink.

    Первым столбцом выходного сигнала является время Simulink, обеспечиваемое блоком цифровых часов. Четыре значения справа от каждого времени являются значениями в выходном кадре в это время. Первое входное значение появляется как первая выборка первого выходного кадра (при t = 0). Это ожидаемое поведение для условия нулевой задержки. Для определенных параметров, используемых в этом примере, выполняетсяupsample_tut1 в однозадачном режиме устраняет задержку в 17 выборок, которая присутствует при запуске модели в многозадачном режиме.

Страница ссылок блока Upsample успешно используется для прогнозирования задержки задания модели.

Связанные темы