Буфер

Буферная входная последовательность к меньшему или большему формату кадра

Библиотека

Управление сигнала / Буферы

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, является входным демонстрационным периодом. Выходной период кадра (MoL)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, является входным демонстрационным периодом. Выходной период кадра (MoL)Tsi, который равняется демонстрационному периоду последовательности, когда Buffer overlap Mo1. Таким образом выходной демонстрационный период связан с входным демонстрационным периодом

Tso=(MoL)TsiMi

Буферизация с Overlap или Underlap

Параметр Buffer overlap, L, задает сумму перекрытия или underlap в каждом последовательном выходном кадре. Чтобы перекрыть данные в буфере, задайте значение L в области значений 0L<Mo, где Mo является значением параметра Output buffer size. Блок берет выборки L (строки) из текущей производительности и повторяет их в следующем выводе. В случаях перекрытия блок получает MoL новые входные выборки прежде, чем распространить буферизированные данные к выводу.

Когда L<0, вы буферизуете сигнал с underlap. Блок отбрасывает выборки входа L после буферных заливок и выводит буфер с периодом (MoL)Tsi, который более длинен, чем в случае нулевого перекрытия.

Выходной период кадра (MoL)Tsi, который равняется входному демонстрационному периоду последовательности, Tsi, когда Buffer overlap Mo1.

Задержка

Определяющая задачу для нуля задержка означает, что первая входная выборка, полученная в t = 0, появляется как первая выходная выборка. В однозадачном режиме Simulink® блок Buffer имеет определяющую задачу для нуля задержку для следующих особых случаев:

  • Скалярный ввод и вывод (Mo=Mi=1) с нулевым или отрицательным Buffer overlap (L0)

  • Входной формат кадра является целочисленным кратным выходной формат кадра

    Mi=kMo

    где k является целым числом с нулевым Buffer overlap (L=0); известные случаи этого включают

    • Любой входной формат кадра Mi со скалярным выводом (Mo=1) и обнулите Buffer overlap (L=0)

    • Равные форматы кадра ввода и вывода (Mo=Mi) с нулевым Buffer overlap (L=0)

Для всех случаев однозадачной операции кроме упомянутых выше, буфер блока Buffer инициализируется к значению (значениям), заданному параметром Initial conditions. Блок читает из этого буфера, чтобы сгенерировать первый D выборки вывода, где

D={Mo+L(L0)Mo(L<0)

Размерности параметра Initial conditions зависят от Buffer overlap, L, и является ли вход одноканальным или многоканальным:

  • Когда L0, параметр Initial conditions должен быть скаляром.

  • Когда L=0, параметр 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).

Поведение в Enabled подсистемах

Блок 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. Чтобы защитить от недогрузки, новые выборки повторяются каждый раз, когда вывод должен и в водохранилище нет никаких данных.

Примеры

 Пример 1. Буферизация двухканального входа с перекрытием

ex_buffer_tut4 модель буферизует двухканальный вход с помощью Output buffer size три и Buffer overlap одного. Следующая схема иллюстрирует вводы и выводы блока Buffer.

Заметьте, что вывод задерживается восемью выборками. Это - задержка, происходит из-за установок параметров в этой модели, и потому что модель запускается в многозадачном режиме Simulink. Первые восемь выходных выборок поэтому принимают значение, заданное для параметра Initial conditions, который в этом случае обнуляется. Можно использовать функцию rebuffer_delay, чтобы определить задержку блока Buffer для любой комбинации значений перекрытия и формата кадра.

 Пример 2. Буферизация входа с четырьмя каналами с перекрытием

ex_buffer_tut3 буферизует вход с четырьмя каналами с помощью Output buffer size три и Buffer overlap одного. Следующая схема иллюстрирует вводы и выводы блока Buffer.

Заметьте, что входные векторы не начинают появляться при выводе до второй строки второй матрицы. Это происходит из-за задержки в блоке Buffer. Первая выходная матрица (все нули в этом примере) отражает значение параметра Initial conditions, в то время как первая строка нулей во втором выводе является результатом перекрытия с одной выборкой между последовательными выходными кадрами.

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

d = rebuffer_delay(1,3,1)
d =
     4

Это соглашается с четырьмя выборками задержки (нули) на канал, показанный в предыдущей фигуре.

Параметры

Output buffer size

Задайте количество последовательных выборок, Mo, от каждого канала, чтобы буферизовать в выходной кадр.

Buffer overlap

Задайте количество выборок, L, которым последовательный вывод структурирует перекрытие.

Initial conditions

Задайте значение начального вывода блока для случаев ненулевой задержки; скаляр, вектор или матрица.

Поддерживаемые типы данных

Порт

Поддерживаемые типы данных

Входной параметр

  • Плавающая точка двойной точности

  • Плавающая точка с одинарной точностью

  • Фиксированная точка

  • Булевская переменная

  • 8-, 16-, и 32-битные целые числа со знаком

  • 8-, 16-, и 32-битное беззнаковое целое

Вывод

  • Плавающая точка двойной точности

  • Плавающая точка с одинарной точностью

  • Фиксированная точка

  • Булевская переменная

  • 8-, 16-, и 32-битные целые числа со знаком

  • 8-, 16-, и 32-битное беззнаковое целое

Расширенные возможности

Генерация кода C/C++
Генерация кода C и C++ с помощью Simulink® Coder™.

Преобразование фиксированной точки
Преобразуйте алгоритмы с плавающей точкой в фиксированную точку с помощью Fixed-Point Designer™.

Представлено до R2006a