Хранить входные данные в регистре LIFO
Управление сигналами/буферы
dspbuff3
Блок стека хранит последовательность входных выборок в последнем входном регистре (LIFO). Емкость регистра задается параметром глубины стека, а входами могут быть скаляры, векторы или матрицы.
Блок нажимает на вход на In порт в верхней части стека при получении триггерного события в Push порт. Когда событие триггера получено в Pop , блок выскакивает верхний элемент из стека и удерживает Out порт с таким значением. Последний вход, который должен быть вставлен в стопку, всегда является первым, который должен быть выведен.

Событие триггера на необязательном этапе Rst порт очищает содержимое стека. При выборе Clear output port on reset (Очистить выходной порт при сбросе) происходит событие триггера в Rst порт очищает стек и устанавливает значение в Out порт в ноль. Этот параметр также применяется при повторном включении отключенной подсистемы, содержащей блок стека; Out в этом случае значение порта сбрасывается на ноль только при выборе Clear output port on reset.
Если два или более управляющих входных портов запускаются одновременно, операции выполняются в следующем порядке:
Rst
Push
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 являются диагностическими параметрами. Как и все диагностические параметры в диалоговом окне Параметры конфигурации (Configuration Parameters), они имеют значение Ignore в коде, сгенерированном для этого блока программным обеспечением генерации кода Simulink Coder™.
Параметр Push full stack дополнительно предлагает опцию Dynamic reallocation, которая динамически изменяет размер регистра, чтобы принять столько дополнительных входов, сколько позволяет память. Чтобы узнать, сколько элементов находится в стеке в данный момент времени, включите Num путем выбора параметра Show number of stack entries port.
Примечание
Когда Dynamic reallocation выбран, параметр системного целевого файла на панели Создание кода (Code Generation) диалогового окна Параметры конфигурации модели (Model Configuration Parameters) должен иметь значение grt_malloc.tlc – Generic Real-Time Target with dynamic memory allocation.
В таблице ниже показана операция блока стека для глубины стека 4, Тип триггера Either edgeи сброс выходного порта при включенном сбросе. Поскольку в этом примере блок запускается как на поднимающихся, так и на опускающихся краях, каждый переход от 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 порты запускаются одновременно. Rst триггер имеет приоритет, и сначала стек очищается, а затем толкается.
dspqdemo В примере приведен пример связанного блока Queue.
Количество записей, которые может хранить регистр LIFO.
Тип события, запускающего выполнение блока. Скорость триггерного сигнала должна совпадать со скоростью входного сигнала данных.
Ответ на триггер, полученный в Push порт, когда регистр заполнен. Входы в этот порт должны иметь тот же встроенный тип данных, что и входы в Pop и Rst входные порты.
Когда Dynamic reallocation выбран, параметр системного целевого файла на панели Создание кода (Code Generation) диалогового окна Параметры конфигурации модели (Model Configuration Parameters) должен иметь значение grt_malloc.tlc – Generic Real-Time Target with dynamic memory allocation.
Ответ на триггер, полученный в Pop порт, когда регистр пуст. Входы в этот порт должны иметь тот же встроенный тип данных, что и входы в Push и Rst входные порты.
Включить Empty порт вывода, высокий (1), когда стек пуст и низок (0) в противном случае.
Включить Full порт вывода, высокий (1), когда стек заполнен и низок (0) в противном случае. Full порт остается низким при выборе динамического перераспределения из параметра Push full stack.
Включить Num порт вывода, который отслеживает количество записей в данный момент в стеке. При вводе в In port - значения двойной точности, выходы из Num порт - значения двойной точности. В противном случае выходные данные Num порт - это 32-разрядные целочисленные значения без знака.
Включить Rst входной порт, который очищает стек при получении триггера, указанного типом Trigger. Входы в этот порт должны иметь тот же встроенный тип данных, что и входы в Push и Pop входные порты.
Сбросить Out порт в ноль (в дополнение к сбросу стека), когда триггер принят в Rst входной порт.
| Порт | Поддерживаемые типы данных |
|---|---|
В |
|
Продвинуться |
|
Поп |
|
Rst |
|
Из |
|
Пустой |
|
Полный |
|
Цифра |
|
| Буфер | Инструментарий системы DSP |
| Линия задержки | Инструментарий системы DSP |
| Очередь | Инструментарий системы DSP |