Сохраните входы в регистре FIFO
Управление сигналами/буферы
dspbuff3
Блок Queue сохраняет последовательность входа отсчетов в первом регистре (FIFO). Емкость регистра задается параметром Register size, и входами могут быть скаляры, векторы или матрицы.
Блок толкает вход в In
порт в конец очереди при получении события триггера в Push
порт. Когда событие триггера получено в Pop
порт, блок выводит первый элемент из очереди и удерживает Out
порт при этом значении. Первый вход, который будет вытеснен в очередь, всегда первый, который будет извлечен.
Событие триггера в необязательном Rst
порт опустошает содержимое очереди. Когда вы выбираете Clear output port on reset, то событие триггера в Rst
порт опустошает очередь и устанавливает значение в Out
порт в нуль. Этот параметр также применяется, когда отключенная подсистема, содержащая блок Queue, снова включена; а Out
значение порта сбрасывается до нуля в этом случае, когда вы выбираете Clear output port on reset.
При установке флажка Allow direct feedthrough и срабатывании двух или более портов входа управления в одном и том же временном шаге операции выполняются в следующем порядке:
Rst
Push
Pop
При снятии флажка Allow direct feedthrough и срабатывании двух или более портов входа управления в одном и том же временном шаге операции выполняются в следующем порядке:
Rst
Pop
Push
Скорость триггерного сигнала должна совпадать со скоростью входного сигнала данных. Вы задаете триггерное событие для Push
, Pop
, and Rst
порты во всплывающем меню Trigger type:
Rising edge
- Запускает выполнение блока, когда вход триггера делает одно из следующего:
Повышается с отрицательного значения до положительного значения или нуля
Повышается с нуля до положительного значения, где повышение не является продолжением повышения с отрицательного значения до нуля; см. следующий рисунок
Falling edge
- Запускает выполнение блока, когда вход триггера делает одно из следующего:
Падает от положительного значения до отрицательного значения или нуля
Падает с нуля до отрицательного значения, где падение не является продолжением падения с положительного значения до нуля; см. следующий рисунок
Either edge
- Запускает выполнение блока, когда вход триггера является Rising edge
или Falling edge
(как описано выше).
Non-zero sample
- Запускает выполнение блока в каждом шаге расчета, когда вход триггера не равен нулю.
Примечание
Если ваша модель содержит любые ссылочные модели, которые используют блок Queue с Push onto full register набора параметров для Dynamic reallocation
, вы не можете симулировать модель верхнего уровня в Simulink® Режим Accelerator.
Параметр Push onto full register задает поведение блока, когда триггер получен в Push
порт, но регистр полон. Параметр Pop empty register задает поведение блока, когда триггер получен в Pop
порт, но регистр пуст. Для обоих случаев доступны следующие опции:
Ignore
- Игнорируйте событие триггера и продолжите симуляцию.
Warning
- Игнорируйте событие триггера, но отобразите предупреждающее сообщение в MATLAB® Командное окно.
Error
- Отобразите диалоговое окно ошибки и завершите симуляцию.
Примечание
Параметры Push onto full register и Pop empty register являются параметрами диагностики. Как и все параметры диагностики в диалоговом окне Параметров конфигурации, они установлены в Ignore
в коде, сгенерированном для этого блока программным обеспечением Simulink Coder™ генерации кода.
Параметр Push onto full register дополнительно предлагает опцию Dynamic reallocation, которая динамически изменяет размер регистра, чтобы принять столько дополнительных входов, сколько позволяет память. Чтобы узнать, сколько элементов находится в очереди в установленный момент времени, включите Num
выходной порт путем выбора параметра Show number of register entries port.
Примечание
Когда Dynamic reallocation
выбран, параметр System target file на панели Code Generation диалогового окна Model Параметры Конфигурации должен быть установлен в grt_malloc.tlc – Generic Real-Time Target with dynamic memory allocation
.
Приведенная ниже таблица иллюстрирует операцию блока Queue для Register size 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 | 2 | 0 | 0 | 3 | |
7 | 0 | 0 | 0 | 3 | 0 | 0 | 2 | |
8 | 0 | 1 | 0 | 4 | 0 | 0 | 1 | |
9 | 0 | 0 | 0 | 5 | 1 | 0 | 0 | |
10 | 1 | 0 | 0 | 5 | 0 | 0 | 1 | |
11 | 0 | 0 | 0 | 5 | 0 | 0 | 2 | |
12 | 1 | 0 | 1 | 0 | 0 | 0 | 1 |
Обратите внимание, что на последнем шаге, показанном, Push
и Rst
порты срабатывают одновременно. The Rst
триггер имеет приоритет, и очередь сначала очищается, а затем выталкивается.
The dspqdemo
В примере представлен другой пример операции блока Queue.
Количество записей, которые могут храниться в реестре FIFO.
Тип события, которое запускает выполнение блока. Скорость триггерного сигнала должна совпадать со скоростью входного сигнала данных.
Ответ на триггер, полученный в 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 onto full register.
Включите Num
выходной порт, который отслеживает количество записей в очереди. Когда входы в In
port являются значениями двойной точности, выходами от Num
port являются значениями двойной точности. В противном случае выходы от Num
port - 32-битные беззнаковые целочисленные значения.
Включите Rst
входной порт, который опустошает очередь при получении триггера, заданного Trigger type. Входы к этому порту должны иметь тот же встроенный тип данных, что и входы к Push
и Pop
входные порты.
Сбросьте Out
порт в нуль, в дополнение к очистке очереди, когда триггер получен в Rst
входной порт.
Когда вы устанавливаете этот флажок, входные данные доступны сразу же у выходного порта блока. Можно отключить прямое сквозное соединение и задержать входные данные дополнительной системой координат, снимая флажок Allow direct feedthrough.
Порт | Поддерживаемые типы данных |
---|---|
В |
|
Продвинуться |
|
Поп |
|
Rst |
|
Из |
|
Пустой |
|
Полный |
|
Цифра |
|
Буфер | DSP System Toolbox |
Линия задержки | DSP System Toolbox |
Стек | DSP System Toolbox |