exponenta event banner

Стек

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

Библиотека

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

dspbuff3

  • Stack block

Описание

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

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

Событие триггера на необязательном этапе Rst порт очищает содержимое стека. При выборе Clear output port on reset (Очистить выходной порт при сбросе) происходит событие триггера в Rst порт очищает стек и устанавливает значение в Out порт в ноль. Этот параметр также применяется при повторном включении отключенной подсистемы, содержащей блок стека; 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 являются диагностическими параметрами. Как и все диагностические параметры в диалоговом окне Параметры конфигурации (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.

Примеры

Пример 1

В таблице ниже показана операция блока стека для глубины стека 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 триггер имеет приоритет, и сначала стек очищается, а затем толкается.

Пример 2

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 входной порт.

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

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

В

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

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

  • Фиксированная точка (подписанная и неподписанная)

  • Булев

  • 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
Линия задержкиИнструментарий системы DSP
ОчередьИнструментарий системы DSP

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

.

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

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