Stack

Сохраните входы в регистр LIFO

Библиотека

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

dspbuff3

  • Stack block

Описание

Блок Stack хранит последовательность входа отсчетов в регистре LIFO последнего выхода. Емкость регистра задается параметром Stack depth, и входами могут быть скаляры, векторы или матрицы.

Блок толкает вход в In порт на верхнюю часть стека, когда событие триггера получено в Push порт. Когда событие триггера получено в Pop порт, блок вытаскивает верхний элемент из стека и удерживает Out порт при этом значении. Последний вход, который будет выталкиваться в стек, всегда первый, который будет извлечен.

Событие триггера в необязательном Rst порт опустошает содержимое стека. Когда вы выбираете Clear output port on reset, то событие триггера в Rst порт опустошает стек и устанавливает значение в Out порт в нуль. Эта настройка также применяется, когда отключенная подсистема, содержащая блок Stack, снова включена; а Out значение порта сбрасывается до нуля в этом случае, когда вы выбираете Clear output port on reset.

Когда два или более входных портов управления запускаются в одном и том же временном шаге, операции выполняются в следующем порядке:

  1. Rst

  2. Push

  3. Pop

Скорость триггерного сигнала должна совпадать со скоростью входного сигнала данных. Вы задаете триггерное событие для Push, Pop, и Rst порты во всплывающем меню Trigger type:

  • Rising edge - Запускает выполнение блока, когда вход триггера делает одно из следующего:

    • Повышается с отрицательного значения до положительного значения или нуля

    • Поднимается с нуля до положительного значения, где подъем не является продолжением подъёма с отрицательного значения до нуля (см. следующий рисунок)

  • Falling edge - Запускает выполнение блока, когда вход триггера делает одно из следующего:

    • Падает от положительного значения до отрицательного значения или нуля

    • Падает с нуля до отрицательного значения, где падение не является продолжением падения с положительного значения до нуля (см. следующий рисунок)

  • Either edge - Запускает выполнение блока, когда вход триггера является Rising edge или Falling edge (как описано выше).

  • Non-zero sample - Запускает выполнение блока в каждом шаге расчета, когда вход триггера не равен нулю.

Примечание

Если ваша модель содержит любые ссылочные модели, которые используют блок Stack с Push full stack набора параметров для Dynamic reallocation, вы не можете симулировать модель верхнего уровня в Simulink® Режим Accelerator.

Параметр Push full stack задает поведение блока, когда триггер получен в Push порт, но регистр полон. Параметр Pop empty stack задает поведение блока, когда триггер получен в Pop порт, но регистр пуст. Для обоих случаев доступны следующие опции:

  • Ignore - Игнорируйте событие триггера и продолжите симуляцию.

  • Warning - Игнорируйте событие триггера, но отобразите предупреждающее сообщение в MATLAB® командное окно.

  • Error - Отобразите диалоговое окно ошибки и завершите симуляцию.

    Примечание

    Параметры Push full stack и Pop empty stack являются параметрами диагностики. Как и все параметры диагностики в диалоговом окне Параметров конфигурации, они установлены в Ignore в коде, сгенерированном для этого блока программным обеспечением Simulink Coder™ генерации кода.

Параметр Push full stack дополнительно предлагает опцию Dynamic reallocation, которая динамически изменяет размер регистра, чтобы принять столько дополнительных входов, сколько позволяет память. Чтобы узнать, сколько элементов находится в стеке в установленный момент времени, включите Num выходной порт путем выбора параметра Show number of stack entries port.

Примечание

Когда Dynamic reallocation выбран, параметр System target file на панели Code Generation диалогового окна Model Параметры Конфигурации должен быть установлен в grt_malloc.tlc – Generic Real-Time Target with dynamic memory allocation.

Примеры

Пример 1

Приведенная ниже таблица иллюстрирует операцию блока Stack для Stack depth 4, Trigger type из Either edge, и Clear output port on reset включена. Поскольку блок запускается как на восходящем, так и на падающем ребрах в этом примере, каждый переход от 1 на 0 или 0 на 1 в Push, Pop, и Rst столбцы ниже представляют отдельное событие триггера. A 1 в Empty столбец указывает пустой буфер, в то время как 1 в Full столбец указывает полный буфер.

В

Продвинуться

Поп

Rst

Стек

Из

Пустой

Полный

Цифра

1

0

0

0

0

1

0

0

2

1

0

0

0

0

0

1

3

0

0

0

0

0

0

2

4

1

0

0

0

0

0

3

5

0

0

0

0

0

1

4

6

0

1

0

5

0

0

3

7

0

0

0

4

0

0

2

8

0

1

0

3

0

0

1

9

0

0

0

2

1

0

0

10

1

0

0

2

0

0

1

11

0

0

0

2

0

0

2

12

1

0

1

0

0

0

1

Обратите внимание, что на последнем шаге, показанном, Push и Rst порты срабатывают одновременно. The Rst триггер имеет приоритет, и стек сначала очищается, а затем выталкивается.

Пример 2

The dspqdemo В примере представлен пример связанного блока Queue.

Параметры

Stack depth

Количество записей, которые может хранить регистр LIFO.

Trigger type

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

Push full stack

Ответ на триггер, полученный в Push порт, когда регистр заполнен. Входы к этому порту должны иметь тот же встроенный тип данных, что и входы к Pop и Rst входные порты.

Когда Dynamic reallocation выбран, параметр System target file на панели Code Generation диалогового окна Model Параметры Конфигурации должен быть установлен в grt_malloc.tlc – Generic Real-Time Target with dynamic memory allocation.

Pop empty stack

Ответ на триггер, полученный в Pop порт, когда регистр пуст. Входы к этому порту должны иметь тот же встроенный тип данных, что и входы к Push и Rst входные порты.

Show empty stack indicator port

Включите Empty выходной порт, который высок (1), когда стек пуст, и низкий (0) в противном случае.

Show full stack indicator port

Включите Full выходной порт, который высок (1), когда стек полон, и низкий (0) в противном случае. The Full порт остается низким, когда вы выбираете Dynamic reallocation из параметра Push full stack.

Show number of stack entries port

Включите Num выходной порт, который отслеживает количество записей в стеке. Когда входы в In port являются значениями двойной точности, выходами от Num port являются значениями двойной точности. В противном случае выходы от Num port - 32-битные беззнаковые целочисленные значения.

Show reset port to clear internal stack buffer

Включите Rst входной порт, который опустошает стек при получении триггера, заданного Trigger type. Входы к этому порту должны иметь тот же встроенный тип данных, что и входы к Push и Pop входные порты.

Clear output port on reset

Сбросьте Out порт к нулю (в дополнение к очистке стека), когда триггер получен в Rst входной порт.

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

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

В

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

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

  • Фиксированная точка (со знаком и без знака)

  • Булев

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

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

Продвинуться

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

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

  • Булев

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

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

    Входы к этому порту должны иметь тот же встроенный тип данных, что и входы к входным портам Pop и Rst

Поп

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

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

  • Булев

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

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

    Входы к этому порту должны иметь тот же встроенный тип данных, что и входы к входным портам Push и Rst.

Rst

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

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

  • Булев

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

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

    Входы к этому порту должны иметь тот же встроенный тип данных, что и входы к входным портам Push и Pop.

Из

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

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

  • Фиксированная точка (со знаком и без знака)

  • Булев

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

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

Пустой

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

  • Булев

Полный

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

  • Булев

Цифра

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

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

  • 32-битные беззнаковые целые числа

    Блок выводит 32-битное беззнаковое целое значение в этом порте, когда тип данных порта In является чем-то иным, кроме двойной точности с плавающей точностью.

См. также

БуферDSP System Toolbox
Линия задержкиDSP System Toolbox
ОчередьDSP System Toolbox

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

.

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

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