Сохраните входы в регистр LIFO
Управление сигналами/буферы
dspbuff3
Блок Stack хранит последовательность входа отсчетов в регистре LIFO последнего выхода. Емкость регистра задается параметром Stack depth, и входами могут быть скаляры, векторы или матрицы.
Блок толкает вход в In
порт на верхнюю часть стека, когда событие триггера получено в Push
порт. Когда событие триггера получено в Pop
порт, блок вытаскивает верхний элемент из стека и удерживает Out
порт при этом значении. Последний вход, который будет выталкиваться в стек, всегда первый, который будет извлечен.
Событие триггера в необязательном Rst
порт опустошает содержимое стека. Когда вы выбираете Clear output port on reset, то событие триггера в Rst
порт опустошает стек и устанавливает значение в Out
порт в нуль. Эта настройка также применяется, когда отключенная подсистема, содержащая блок Stack, снова включена; а 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 являются параметрами диагностики. Как и все параметры диагностики в диалоговом окне Параметров конфигурации, они установлены в 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
.
Приведенная ниже таблица иллюстрирует операцию блока 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
триггер имеет приоритет, и стек сначала очищается, а затем выталкивается.
The dspqdemo
В примере представлен пример связанного блока Queue.
Количество записей, которые может хранить регистр LIFO.
Тип события, которое запускает выполнение блока. Скорость триггерного сигнала должна совпадать со скоростью входного сигнала данных.
Ответ на триггер, полученный в Push
порт, когда регистр заполнен. Входы к этому порту должны иметь тот же встроенный тип данных, что и входы к Pop
и Rst
входные порты.
Когда Dynamic reallocation
выбран, параметр System target file на панели Code Generation диалогового окна Model Параметры Конфигурации должен быть установлен в grt_malloc.tlc – Generic Real-Time Target with dynamic memory allocation
.
Ответ на триггер, полученный в Pop
порт, когда регистр пуст. Входы к этому порту должны иметь тот же встроенный тип данных, что и входы к Push
и Rst
входные порты.
Включите Empty
выходной порт, который высок (1
), когда стек пуст, и низкий (0
) в противном случае.
Включите Full
выходной порт, который высок (1
), когда стек полон, и низкий (0
) в противном случае. The Full
порт остается низким, когда вы выбираете Dynamic reallocation из параметра Push full stack.
Включите Num
выходной порт, который отслеживает количество записей в стеке. Когда входы в In
port являются значениями двойной точности, выходами от Num
port являются значениями двойной точности. В противном случае выходы от Num
port - 32-битные беззнаковые целочисленные значения.
Включите Rst
входной порт, который опустошает стек при получении триггера, заданного Trigger type. Входы к этому порту должны иметь тот же встроенный тип данных, что и входы к Push
и Pop
входные порты.
Сбросьте Out
порт к нулю (в дополнение к очистке стека), когда триггер получен в Rst
входной порт.
Порт | Поддерживаемые типы данных |
---|---|
В |
|
Продвинуться |
|
Поп |
|
Rst |
|
Из |
|
Пустой |
|
Полный |
|
Цифра |
|
Буфер | DSP System Toolbox |
Линия задержки | DSP System Toolbox |
Очередь | DSP System Toolbox |