Buffer

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

Библиотека

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

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-битное беззнаковое целое

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

Delay LineDSP System Toolbox
UnbufferDSP System Toolbox
rebuffer_delayDSP System Toolbox

Смотрите Преобразуют Частоты дискретизации и Частоту кадров в Simulink и Буферизации и Основанной на системе координат Обработке для получения дополнительной информации.

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

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

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

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