Буферная входная последовательность к меньшему или большему формату кадра
Управление сигнала / Буферы
dspbuff3
Блок Buffer всегда выполняет основанную на кадре обработку. Блок перераспределяет данные в каждом столбце входа, чтобы произвести вывод с различным форматом кадра. Буферизация сигнала к большему формату кадра приводит к выводу с более медленной частотой кадров, чем вход. Например, рассмотрите следующий рисунок для скалярного входа.
Буферизация сигнала к меньшему формату кадра приводит к выводу с более быстрой частотой кадров, чем вход. Например, рассмотрите следующий рисунок скалярного вывода.
Блок координирует выходной формат кадра и частоту кадров неналожения буферов, таким образом, что демонстрационный период сигнала является тем же самым в обоих ввод и вывод: Tso = Tsi.
Этот блок поддерживает инициированные подсистемы, когда уровни ввода и вывода блока являются тем же самым.
Следующая таблица показывает выходные размерности блока Buffer, когда вход является одноканальным сигналом. M o является значением параметра Output buffer size.
Введите размерности | Выведите размерности |
---|---|
1 на 1 (скаляр) | M o-1 |
M i-1 (вектор-столбец) | M o-1 |
Входным периодом кадра является Mi · Tsi, где Mi является входным форматом кадра и Tsi, является входным демонстрационным периодом. Выходной период кадра , где L является значением параметра Buffer overlap, и СИ T является входным демонстрационным периодом. Когда вы устанавливаете параметр Buffer overlap на M o – 1, выходной период кадра равняется входному демонстрационному периоду.
Следующая таблица показывает выходные размерности блока Buffer, когда вход является многоканальным сигналом. M o является значением параметра Output buffer size и может быть больше или меньше, чем входной формат кадра, Mi. Буфера блоков каждый вход N образовывают канал независимо.
Введите размерности | Выведите размерности |
---|---|
1 N (вектор - строка) | M o-by-N |
Mi-by-N (матрица) | M o-by-N |
Входным периодом кадра является Mi · Tsi, где Mi является входным форматом кадра и Tsi, является входным демонстрационным периодом. Выходной период кадра , который равняется демонстрационному периоду последовательности, когда Buffer overlap . Таким образом выходной демонстрационный период связан с входным демонстрационным периодом
Параметр Buffer overlap, L, задает сумму перекрытия или underlap в каждом последовательном выходном кадре. Чтобы перекрыть данные в буфере, задайте значение L в области значений , где Mo является значением параметра Output buffer size. Блок берет выборки L (строки) из текущей производительности и повторяет их в следующем выводе. В случаях перекрытия блок получает новые входные выборки прежде, чем распространить буферизированные данные к выводу.
Когда , вы буферизуете сигнал с underlap. Блок отбрасывает выборки входа L после буферных заливок и выводит буфер с периодом , который более длинен, чем в случае нулевого перекрытия.
Выходной период кадра , который равняется входному демонстрационному периоду последовательности, Tsi, когда Buffer overlap .
Определяющая задачу для нуля задержка означает, что первая входная выборка, полученная в t = 0, появляется как первая выходная выборка. В однозадачном режиме Simulink® блок Buffer имеет определяющую задачу для нуля задержку для следующих особых случаев:
Скалярный ввод и вывод () с нулевым или отрицательным Buffer overlap ()
Входной формат кадра является целочисленным кратным выходной формат кадра
где k является целым числом с нулевым Buffer overlap (); известные случаи этого включают
Любой входной формат кадра Mi со скалярным выводом () и обнулите Buffer overlap ()
Равные форматы кадра ввода и вывода () с нулевым Buffer overlap ()
Для всех случаев однозадачной операции кроме упомянутых выше, буфер блока Buffer инициализируется к значению (значениям), заданному параметром Initial conditions. Блок читает из этого буфера, чтобы сгенерировать первый D выборки вывода, где
Размерности параметра Initial conditions зависят от Buffer overlap, L, и является ли вход одноканальным или многоканальным:
Когда , параметр Initial conditions должен быть скаляром.
Когда , параметр Initial conditions может быть скаляром, или это может быть вектор со следующими ограничениями:
Для одноканальных входных параметров параметр Initial conditions может быть вектором длины Mo, если Mi равняется 1 или вектору длины Mi, если Mo равняется 1.
Для многоканальных входных параметров параметр Initial conditions может быть вектором длины Mo * N, если Mi равняется 1 или вектору длины Mi * N, если Mo равняется 1.
Для всех многозадачных операций используйте функцию rebuffer_delay
, чтобы вычислить точную задержку в выборках, что блок Buffer вводит для данной комбинации buffer size и буферного перекрытия.
Для общей буферизации между произвольными форматами кадра параметр Initial conditions должен быть скалярным значением, которое затем повторяется через все элементы начального вывода (выводов). Однако в особом случае, где вход является 1 N вектором - строкой, и выводом блока является Mo-by-N матрица, Initial conditions может быть
Mo-by-N матрица
Вектор длины-Mo, который будет повторен через все столбцы начального вывода (выводов)
Скаляр, который будет повторен через все элементы начального вывода (выводов)
В особом случае, где вывод является 1 N вектором - строкой, который является результатом освобождения буфера Mi-by-N матрица, Initial conditions может быть
Вектор, содержащий выборки Mi, чтобы вывести последовательно для каждого канала во время первых шагов расчета Mi
Скаляр, который будет повторен через все элементы начального вывода (выводов)
Для получения дополнительной информации о задержке и режимах управления задачами Simulink, смотрите Избыточную Алгоритмическую Задержку (Определяющий задачу для Задержки) и Основанное на времени Планирование и Генерация кода (Simulink Coder).
Блок Buffer не может использоваться в активированной подсистеме при следующих условиях:
В многоскоростной многозадачной среде
Когда параметр Buffer overlap устанавливается на отрицательную величину
Блок Buffer имеет внутреннее водохранилище, которое временно хранит данные. Когда блок Buffer используется в активированной подсистеме, существует возможность, что водохранилище может переполниться или недогрузка. Блок реализует гарантии против этих случаев.
Переполнитесь происходит, когда больше данных вводит в буфер, чем это может содержать. Например, рассмотрите буферизацию скалярного входа к кадру размера три с буфером, который принимает вход каждую секунду и выходные параметры каждые три секунды. Если вы помещаете этот буфер в активированной подсистеме, которая отключается каждые три секунды в t = 3 с, t = 6 с, и так далее, буфер накапливает данные в своем внутреннем водохранилище не имея возможности, чтобы освободить его. Это условие приводит к переполнению.
Недогрузка происходит, когда буфер исчерпывает данные, чтобы вывести. Например, снова рассмотрите буферизацию скалярного входа к формату кадра три с буфером, который принимает вход каждую секунду и выходные параметры каждые три секунды. Если вы помещаете этот буфер в активированной подсистеме, которая отключена в t = 10-е, t = 11, t = 13, t = 14, t = 16 и t = 17, его внутреннее водохранилище становится истощенным, и нет никаких данных, чтобы вывести в t = 18. Это условие приводит к недогрузке.
Чтобы защитить от превышенного и недогрузки, блок Buffer ведет учет объема данных в его внутреннем водохранилище. Когда блок Buffer считывает данные, объем данных в его водохранилище повышается. Когда данные выводятся от блока Buffer, объем данных в его водохранилище понижается. Чтобы защитить от переполнения, самые старые выборки в водохранилище отбрасываются каждый раз, когда объем данных в водохранилище больше, чем фактический buffer size. Чтобы защитить от недогрузки, новые выборки повторяются каждый раз, когда вывод должен и в водохранилище нет никаких данных.
ex_buffer_tut4 модель буферизует двухканальный вход с помощью Output buffer size три и Buffer overlap одного. Следующая схема иллюстрирует вводы и выводы блока Buffer.
Заметьте, что вывод задерживается восемью выборками. Это - задержка, происходит из-за установок параметров в этой модели, и потому что модель запускается в многозадачном режиме Simulink. Первые восемь выходных выборок поэтому принимают значение, заданное для параметра Initial conditions, который в этом случае обнуляется. Можно использовать функцию rebuffer_delay
, чтобы определить задержку блока Buffer для любой комбинации значений перекрытия и формата кадра.
ex_buffer_tut3 буферизует вход с четырьмя каналами с помощью Output buffer size три и Buffer overlap одного. Следующая схема иллюстрирует вводы и выводы блока Buffer.
Заметьте, что входные векторы не начинают появляться при выводе до второй строки второй матрицы. Это происходит из-за задержки в блоке Buffer. Первая выходная матрица (все нули в этом примере) отражает значение параметра Initial conditions, в то время как первая строка нулей во втором выводе является результатом перекрытия с одной выборкой между последовательными выходными кадрами.
Можно использовать функцию rebuffer_delay
с форматом кадра 1, чтобы точно вычислить задержку (в выборках). Для предыдущего примера,
d = rebuffer_delay(1,3,1) d = 4
Это соглашается с четырьмя выборками задержки (нули) на канал, показанный в предыдущей фигуре.
Задайте количество последовательных выборок, Mo, от каждого канала, чтобы буферизовать в выходной кадр.
Задайте количество выборок, L, которым последовательный вывод структурирует перекрытие.
Задайте значение начального вывода блока для случаев ненулевой задержки; скаляр, вектор или матрица.
Порт | Поддерживаемые типы данных |
---|---|
Входной параметр |
|
Вывод |
|
Задержите строку | DSP System Toolbox |
Освободить буфер | DSP System Toolbox |
rebuffer_delay | DSP System Toolbox |
Смотрите Преобразовывают Частоты дискретизации и Частоту кадров в Simulink и Буферизации и Основанной на кадре Обработке для получения дополнительной информации.