Сохраните входные параметры в регистр 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
, вы не можете моделировать свою модель верхнего уровня в Режиме Accelerator Simulink®.
Параметр Push full stack задает поведение блока, когда триггер получен в порте Push
, но регистр полон. Параметр Pop empty stack задает поведение блока, когда триггер получен в порте Pop
, но регистр пуст. Следующие опции доступны для обоих случаев:
Ignore
— Проигнорируйте триггерное событие и продолжите симуляцию.
Предупреждение
Проигнорируйте триггерное событие, но отобразите предупреждающее сообщение в командном окне MATLAB®.
Ошибка
Отобразите ошибочное диалоговое окно и отключите симуляцию.
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
.
Приведенная ниже таблица иллюстрирует операцию Блока 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
более приоритетен, и стек сначала очищен и затем продвинут.
Пример dspqdemo
обеспечивает пример связанного блока Queue.
Количество записей, которые может содержать регистр LIFO.
Тип события, которое инициировало выполнение блока. Уровень триггерного сигнала должен совпасть с уровнем входа сигнала данных.
Ответ на триггер получил в порте Push
, когда регистр полон. Входные параметры к этому порту должны иметь тот же встроенный тип данных как входные параметры к входным портам Rst
и Pop
.
Когда Dynamic reallocation
выбран, параметр System target file на панели Code Generation диалогового окна Model Configuration Parameters должен быть установлен на grt_malloc.tlc – Generic Real-Time Target with dynamic memory allocation
.
Ответ на триггер получил в порте Pop
, когда регистр пуст. Входные параметры к этому порту должны иметь тот же встроенный тип данных как входные параметры к входным портам Rst
и Push
.
Включите выходной порт Empty
, который высок (1
), когда стек является пустым, и низким (0
) в противном случае.
Включите выходной порт Full
, который высок (1
), когда стек является полным, и низким (0
) в противном случае. Порт Full
остается низким, когда вы выбираете Dynamic reallocation из параметра Push full stack.
Включите выходной порт Num
, который отслеживает количество записей в настоящее время на стеке. Когда входные параметры к порту In
являются значениями с двойной точностью, выходные параметры от порта Num
являются значениями с двойной точностью. В противном случае выходные параметры от порта Num
являются 32-битными значениями беззнаковых целых чисел.
Включите входной порт Rst
, который освобождает стек, когда триггер, заданный Trigger type, получен. Входные параметры к этому порту должны иметь тот же встроенный тип данных как входные параметры к входным портам Pop
и Push
.
Сбросьте порт Out
, чтобы обнулить (в дополнение к очистке стека), когда триггер будет получен во входном порту Rst
.
Порт | Поддерживаемые типы данных |
---|---|
\in |
|
Продвинуть |
|
Поп |
|
Rst |
|
| |
Пустой |
|
Полный |
|
Цифра |
|
Буфер | DSP System Toolbox |
Задержите строку | DSP System Toolbox |
Очередь | DSP System Toolbox |