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 являются диагностическими параметрами. Как все диагностические параметры на диалоговом окне Configuration Parameters, они установлены в Ignore в коде, сгенерированном для этого блока программным обеспечением генерации кода Simulink Coder™.

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

Примечание

Когда Dynamic reallocation выбран, параметр System target file на панели Code Generation диалогового окна Model Configuration Parameters должен быть установлен на 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 столбцы ниже представляют отличное триггерное событие. 1 в Empty столбец указывает на пустой буфер, в то время как 1 в Full столбец указывает на полный буфер.

\in

Продвинуть

Поп

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

Параметры

Stack depth

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

Trigger type

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

Push full stack

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

Когда Dynamic reallocation выбран, параметр System target file на панели Code Generation диалогового окна Model Configuration Parameters должен быть установлен на 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) в противном случае. Full порт остается низким, когда вы выбираете Dynamic reallocation из параметра Push full stack.

Show number of stack entries port

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

Show reset port to clear internal stack buffer

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

Clear output port on reset

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

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

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

\in

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

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

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

  • Boolean

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

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

Продвинуть

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

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

  • Boolean

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

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

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

Поп

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

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

  • Boolean

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

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

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

Rst

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

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

  • Boolean

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

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

    Входные параметры к этому порту должны иметь тот же встроенный тип данных как входные параметры к входным портам Нажатия и Попа.

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

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

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

  • Boolean

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

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

Пустой

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

  • Boolean

Полный

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

  • Boolean

Цифра

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

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

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

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

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

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

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

Блоки

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