Вычислительная задержка блока или подсистемы связана с количеством операций, вовлеченных в выполнение того блока или подсистемы. Например, блок FFT, работающий с входом с 256 выборками, требует, чтобы программное обеспечение Simulink® выполнило определенное число умножения для каждого входного кадра. Фактическое количество времени, которое используют эти операции, зависит в большой степени от эффективности и компьютерного оборудования и базовых программных слоев, таких как среда MATLAB® и операционная система. Поэтому вычислительная задержка конкретной модели может варьироваться от одной компьютерной платформы до другого.
Время симуляции представляло в строке состояния модели, к которой можно получить доступ через блок Simulink Digital Clock, не предоставляет информации о вычислительной задержке. Например, согласно таймеру Simulink, упомянутый выше БПФ выполняется мгновенно без задержки вообще. Вход с блоком FFT во времени симуляции t=25.0 обрабатывается и выводится во времени симуляции t=25.0, независимо от количества операций, выполняемых Алгоритмом бпф. Таймер Simulink отражает только алгоритмическую задержку, не вычислительную задержку.
Существует много способов уменьшать вычислительную задержку, на самом деле не запуская симуляцию на более быстром оборудовании. Для начала необходимо ознакомить себя с Ручной Оптимизацией Эффективности (Simulink), который описывает некоторые основные стратегии. Следующая информация обсуждает несколько опций для того, чтобы улучшать производительность.
Первый шаг в улучшании производительности должен анализировать вашу модель, и устранить или упростить элементы, которые добавляют чрезмерно к вычислительной загрузке. Такие элементы могут включать отображения осциллографа и блоки регистрации данных, которые вы поместили на месте для отладки целей и больше не требуете. В дополнение к этим корректировкам модели специфичным существует много более общих шагов, которые можно сделать, чтобы улучшать производительность любой модели:
Используйте основанную на системе координат обработку по мере возможности. Выгодно для целой модели быть базирующейся системой координат. Смотрите Преимущества Основанной на системе координат Обработки для получения дополнительной информации.
Используйте шаблоны модели DSP Simulink, чтобы адаптировать Simulink для моделирования цифровой обработки сигналов. Для получения дополнительной информации смотрите, Конфигурируют окружение Simulink для Моделей Обработки сигналов.
Выключите строку состояния Simulink. Во вкладке Modeling отмените выбор Environment> Status Bar. Скорость симуляции улучшится, но индикатор времени не отобразится.
Запустите свою симуляцию из командной строки MATLAB путем ввода
sim(gcs)
Этот метод запуска симуляции может значительно увеличить скорость симуляции, но также и имеет несколько ограничений:
Вы не можете взаимодействовать с симуляцией (к настройкам параметров, например).
Необходимо нажать Ctrl+C, чтобы остановить симуляцию, или задавать запускаются и времена остановки.
В S-функциях MATLAB нет никаких графических обновлений.
Используйте программное обеспечение генерации кода Simulink Coder™, чтобы сгенерировать код типового в реальном времени (GRT), предназначенный к вашей серверной платформе и запустить модель с помощью сгенерированного исполняемого файла. См. документацию Simulink Coder для получения дополнительной информации.
Алгоритмическая задержка является задержкой, которая является внутренним параметром к алгоритму блока или подсистемы и независима от скорости ЦП. В этом руководстве алгоритмическая задержка блока упомянута просто как задержка блока. Это обычно описывается в терминах количества выборок, которыми выход блока отстает от соответствующего входа. Эта задержка непосредственно связана со временем, истекшим на таймере Simulink во время выполнения того блока.
Алгоритмическая задержка конкретного блока может зависеть и от настроек параметров блоков и от общих настроек Simulink. Для упрощения полезно категоризировать задержку блока с помощью следующих категорий:
Следующие темы объясняют различные категории задержки, и как симуляция и установки параметров могут влиять на уровень задержки, которую испытывает конкретный блок.
Блок FFT является примером компонента, который не имеет никакой алгоритмической задержки. Таймер Simulink не записывает течения времени, в то время как блок вычисляет БПФ входа, и преобразованные данные доступны при выходе в том же временном шаге, что вход получен. Существует много других блоков, которые имеют нулевую алгоритмическую задержку, такую как блоки в библиотеках Matrices и Linear Algebra. Каждый из тех блоков обрабатывает свой вход и генерирует его выход в одном временном шаге.
Блок Normalization является примером блока с нулевой алгоритмической задержкой:
В командной строке MATLAB введите ex_normalization_tut
.
Модель Normalization Example T1 открывается.
Дважды кликните блок Signal From Workspace. Диалоговое окно Source Block Parameters: Signal From Workspace открывается.
Установите параметры блоков можно следующим образом:
Signal = 1:100
Sample time = 1/4
Samples per frame = 4
Сохраните эти параметры и закройте диалоговое окно путем нажатия на OK.
Запустите модель.
Модель предварительно ожидает текущее значение таймера Simulink выход от блока Digital Clock до каждой выходной системы координат.
Блок Signal From Workspace генерирует новую систему координат, содержащую четыре выборки один раз во второй (T fo = π*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]'
В командной строке 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, обеспеченное блоком Digital Clock. Вы видите что квадратичная норма первого входа,
[1 2 3 4]' ./ sum([1 2 3 4]'.^2)
появляется в первой строке выхода (во время t =0), тот же временной шаг, что вход был получен блоком. Это указывает, что блок Normalization имеет нулевую алгоритмическую задержку.
Когда несколько блоков с нулевой алгоритмической задержкой соединяются в обратной связи, Simulink может сообщить об алгебраической ошибке цикла, и эффективность может обычно страдать. Можно предотвратить алгебраические циклы путем введения по крайней мере одной выборки задержки в обратную связь, например, включением блока Delay с Delay > 0. Для получения дополнительной информации смотрите Алгебраические Концепции Цикла (Simulink).
Блок Variable Integer Delay является примером блока с алгоритмической задержкой. В следующем примере вы используете этот блок, чтобы продемонстрировать эту концепцию:
В командной строке MATLAB введите ex_variableintegerdelay_tut
.
Переменный Целочисленный Пример Задержки T1 открывается.
Дважды кликните блок Signal From Workspace. Диалоговое окно Source Block Parameters: Signal From Workspace открывается.
Установите параметры блоков можно следующим образом:
Signal = 1:100
Sample time = 1
Samples per frame = 1
Сохраните эти параметры и закройте диалоговое окно путем нажатия на OK.
Дважды кликните блок Constant. Диалоговое окно Source Block Parameters: Constant открывается.
Установите параметры блоков можно следующим образом:
Constant value = 3
Interpret vector parameters as 1–D = Снимает этот флажок
Sample time = 1
Нажмите OK, чтобы сохранить эти параметры и закрыть диалоговое окно.
Вход к Delay
порт блока Variable Integer Delay задает номер периодов расчета, которые должны протечь перед входом к In
порт выпущен к выходу. Это значение представляет алгоритмическую задержку блока. В этом примере, начиная с входа к Delay
портом является 3
, и период расчета в портах In и Delay равняется 1, затем выборка, которая прибывает в порт In блока во время t=0, выпущена к выходу во время t=3.
Дважды кликните блок Variable Integer Delay. Диалоговое окно Function Block Parameters: Variable Integer Delay открывается.
Установите параметр Initial conditions на -1
, и затем нажмите OK.
Во вкладке Debug выберите Information Overlays> Signal Dimensions и Nonscalar Signals.
Запустите модель.
Модель должна выглядеть похожей на следующую фигуру.
В командной строке MATLAB введите dsp_examples_yout
Выход показывают ниже:
dsp_examples_yout = 0 -1 1 -1 2 -1 3 1 4 2 5 3
Первый столбец является временем Simulink, обеспеченным блоком Digital Clock. Второй столбец является задержанным входом. Как ожидалось вход с блоком в t =0 задерживается три выборки и появляется как четвертая выходная выборка в t =3. Можно также видеть, что первые три выходных параметров от блока Variable Integer Delay наследовали значение параметра Initial conditions блока, -1
. Этот промежуток времени, от запуска симуляции, пока первый вход не распространен к выходу, иногда называется начальной задержкой блока.
Много блоков DSP System Toolbox™ имеют определенную степень фиксированной или корректируемой алгоритмической задержки. Они включают любые блоки, алгоритмы которых используют задержку или запоминающие элементы, такие как фильтры или буферы. Часто, но не всегда, такие блоки обеспечивают параметр Initial conditions, который позволяет вам задавать выходные значения, сгенерированные блоком во время начальной задержки. В других случаях начальные условия внутренне установлены к 0.
Консультируйтесь со страницами с описанием блока для характеристик задержки определенных блоков DSP System Toolbox.
При определенных обстоятельствах Simulink может обеспечить блок к задержкам входа дольше, чем строго требуется алгоритмом блока. Эта избыточная алгоритмическая задержка называется, определяя задачу для задержки, потому что это является результатом требований синхронизации режима управления задачами Simulink. Полная алгоритмическая задержка блока является суммой своей основной задержки и задержки управления задачами.
Алгоритмическая задержка = Основная алгоритмическая задержка + Управление задачами для задержки
Задержка управления задачами для конкретного блока может зависеть от следующего блока и характеристик модели:
Simulink имеет два режима управления задачами:
Однозадачность
Многозадачность
Во вкладке Modeling нажмите Model Settings. В панели Solver выберите Type> Fixed-step
. Расширьте Solver details. Чтобы задать многозадачный режим, выберите Treat each discrete rate as a separate task. Чтобы задать однозадачный режим, очистите Treat each discrete rate as a separate task.
Примечание
Много многоскоростных блоков уменьшали задержку в однозадачном режиме Simulink. Проверяйте раздел “Latency” страницы с описанием многоскоростного блока для деталей. Также смотрите Основанное на времени Планирование и Генерацию кода (Simulink Coder).
Блок называется односкоростной, когда все его порты ввода и вывода действуют в той же частоте кадров. Блок называется многоскоростной, когда по крайней мере один порт ввода или вывода имеет различную частоту кадров, чем другие.
Много блоков являются постоянно односкоростными. Это означает, что все порты ввода и вывода всегда имеют ту же частоту кадров. Для других блоков настройки параметров блоков определяют, является ли блок односкоростным или многоскоростным. Только многоскоростные блоки подвергаются задержке управления задачами.
Примечание
Simulink может сообщить об алгебраической ошибке цикла, если он обнаруживает обратную связь, состоявшую полностью из многоскоростных блоков. Чтобы повредить такой алгебраический цикл, вставьте односкоростной блок с ненулевой задержкой, такой как блок Unit Delay. Для получения дополнительной информации смотрите Алгебраические Концепции Цикла (Simulink).
Когда все порты всех блоков в модели действуют в одной частоте кадров, модель называется односкоростная. Когда модель содержит блоки с отличающейся частотой кадров или по крайней мере один многоскоростной блок, модель называется многоскоростная. Обратите внимание на то, что Simulink препятствует тому, чтобы односкоростная модель запустилась в многозадачном режиме путем генерации ошибки.
Много блоков могут действовать или в основанных на выборке или в основанных на системе координат режимах обработки. Чтобы выбрать, можно установить параметр Input processing блока к Columns as channels (frame based)
или Elements as channels (sample based)
.
Определенный объем управления задачами для задержки, созданной конкретной комбинацией параметров блоков и настроек симуляции, обсужден в разделе “Latency” страницы с описанием блока. В этой теме вы используете страницу с описанием блока Upsample, чтобы предсказать задержку управления задачами модели:
В командной строке MATLAB введите ex_upsample_tut1
.
Модель Upsample Example T1 открывается.
Во вкладке Modeling нажмите Model Settings.
В панели Solver, из списка Type, выбирают Fixed-step
. Из списка Solver выберите discrete (no continuous states)
.
Расширьте Solver details. Выберите Treat each discrete rate as a separate task и нажмите OK.
Большая часть многоскоростного опыта блоков, определяющего задачу для задержки только в многозадачном режиме Simulink.
Дважды кликните блок Signal From Workspace. Диалоговое окно Source Block Parameters: Signal From Workspace открывается.
Установите параметры блоков можно следующим образом, и затем нажмите OK:
Signal = 1:100
Sample time = 1/4
Samples per frame = 4
Form output after final data value by = Setting to zero
Дважды кликните блок Upsample. Диалоговое окно Function Block Parameters: Upsample открывается.
Установите параметры блоков можно следующим образом, и затем нажмите OK:
Upsample factor, L = 4
Sample offset (0 to L-1) = 0
Input processing = Columns as channels (frame based)
Rate options = Allow multirate processing
Initial condition = -1
Параметр Rate options делает модель многоскоростной, поскольку частота кадров ввода и вывода не будет равна.
Дважды кликните блок Digital Clock. Диалоговое окно Source Block Parameters: Digital Clock открывается.
Установите параметр Sample time на 0.25
, и затем нажмите OK.
Это совпадает с периодом расчета блока Upsample выход.
Запустите модель.
Модель должна теперь выглядеть похожей на следующую фигуру.
Модель предварительно ожидает текущее значение таймера Simulink, от блока Digital Clock, к каждой выходной системе координат.
В примере блок Signal From Workspace генерирует новую систему координат, содержащую четыре выборки один раз во второй ( 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.
В командной строке MATLAB введите squeeze(dsp_examples_yout)'
.
Вывод от симуляции отображен в матричном формате. Первые несколько выборок результата, ans
:
“Задержка и Начальные условия” на странице с описанием блока Upsample указывают, что, когда Simulink находится в многозадачном режиме, первая выборка входа блока появляется в выходе как демонстрационный Mi L+D+1, где Mi является размером входного кадра, L является Upsample factor, и D является Sample offset. Эта формула предсказывает, что первый вход в этом примере должен появиться как выходная выборка 17 (то есть, 4*4+0+1).
Первый столбец выхода является временем Simulink, обеспеченным блоком Digital Clock. Эти четыре значения справа от каждого раза являются значениями в выходной системе координат в то время. Вы видите, что первая выборка в каждой из первых четырех выходных систем координат наследовала значение блока Upsample параметр Initial conditions. В результате задержки управления задачами первое входное значение появляется как первая выборка 5-й выходной системы координат (в t =1). Это демонстрационное 17.
Теперь попытайтесь запустить модель в однозадачном режиме.
Во вкладке Modeling нажмите Model Settings.
В панели Solver, из списка Type, выбирают Fixed-step
. Из списка Solver выберите Discrete (no continuous states)
.
Очистите параметр Treat each discrete rate as a separate task.
Запустите модель.
Модель теперь запускается в однозадачном режиме.
В командной строке MATLAB введите squeeze(dsp_examples_yout)'
.
Первые несколько выборок результата, ans
:
“Задержка и Начальные условия” на странице с описанием блока Upsample указывают, что блок имеет нулевую задержку для всех многоскоростных операций в однозадачном режиме Simulink.
Первый столбец выхода является временем Simulink, обеспеченным блоком Digital Clock. Эти четыре значения справа от каждого раза являются значениями в выходной системе координат в то время. Первое входное значение появляется как первая выборка первой выходной системы координат (в t =0). Это - ожидаемое поведение для условия нулевой задержки. Для конкретных установок параметров, используемых в этом примере, запуская upsample_tut1
в однозадачном режиме устраняет задержку с 17 выборками, которая присутствует, когда вы запускаете модель в многозадачном режиме.
Вы теперь успешно использовали страницу с описанием блока Upsample, чтобы предсказать задержку управления задачами модели.