DSP Blockset    
Queue

Store inputs in a FIFO register.

Library

Signal Management / Buffers

Description

The Queue block stores a sequence of input samples in a FIFO (first in, first out) register. The register capacity is set by the Register size parameter, and inputs can be scalars, vectors, or matrices.

The block pushes the input at the In port onto the end of the queue when a trigger event is received at the Push port. When a trigger event is received at the Pop port, the block pops the first element off the queue and holds the Out port at that value. The first input to be pushed onto the queue is always the first to be popped off.



A trigger event at the optional Clr port (enabled by the Clear input check box) empties the queue contents. If Clear output port on reset is selected, then a trigger event at the Clr port empties the queue and sets the value at the Out port to zero. This setting also applies when a disabled subsystem containing the Queue block is reenabled; the Out port value is only reset to zero in this case if Clear output port on reset is selected.

When two or more of the control input ports are triggered at the same time step, the operations are executed in the following order:

  1. Clr
  2. Push
  3. Pop

The rate of the trigger signal must be a positive integer multiple of the rate of the data signal input. The triggering event for the Push, Pop, and Clr ports is specified by the Trigger type pop-up menu, and can be one of the following.

The Push onto full register parameter specifies the block's behavior when a trigger is received at the Push port but the register is full. The Pop empty register parameter specifies the block's behavior when a trigger is received at the Pop port but the register is empty. The following options are available for both cases:

The Push onto full register parameter additionally offers the Dynamic reallocation option, which dynamically resizes the register to accept as many additional inputs as memory permits. To find out how many elements are on the queue at a given time, enable the Num output port by selecting the Output number of register entries option.

Examples

Example 1

The table below illustrates the Queue block's operation for a Register size of 4, Trigger type of Either edge, and Clear output port on reset enabled. Because the block triggers on both rising and falling edges in this example, each transition from 1 to 0 or 0 to 1 in the Push, Pop, and Clr columns below represents a distinct trigger event. A 1 in the Empty column indicates an empty queue, while a 1 in the Full column indicates a full queue.

In
Push
Pop
Clr
Queue
Out
Empty
Full
Num
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

Note that at the last step shown, the Push and Clr ports are triggered simultaneously. The Clr trigger takes precedence, and the queue is first cleared and then pushed.

Example 2

The dspqdemo demo provides another example of Queue operation.

Dialog Box

Register size
The number of entries that the FIFO register can hold.
Trigger type
The type of event that triggers the block's execution. The rate of the trigger signal must be a positive integer multiple of the rate of the data signal input. Tunable only in simulation (not tunable in Real-Time Workshop external mode or in the Simulink Performance Tools Accelerator).
Push onto full register
Response to a trigger received at the Push port when the register is full. Inputs to this port must have the same built-in data type as inputs to the Pop and Clr input ports.
Pop empty register
Response to a trigger received at the Pop port when the register is empty. Inputs to this port must have the same built-in data type as inputs to the Push and Clr input ports. Tunable.
Empty register output
Enable the Empty output port, which is high (1) when the queue is empty, and low (0) otherwise.
Full register output
Enable the Full output port, which is high (1) when the queue is full, and low (0) otherwise. The Full port remains low when Dynamic reallocation is selected from the Push onto full register parameter.
Output number of register entries
Enable the Num output port, which tracks the number of entries currently on the queue. When inputs to the In port are double-precision values, the outputs from the Num port are double-precision values. Otherwise, the outputs from the Num port are 32-bit unsigned integer values.
Clear input
Enable the Clr input port, which empties the queue when the trigger specified by the Trigger type is received. Inputs to this port must have the same built-in data type as inputs to the Push and Pop input ports.
Clear output port on reset
Reset the Out port to zero (in addition to clearing the queue) when a trigger is received at the Clr input port. Tunable.

Supported Data Types

To learn how to convert to the above data types in MATLAB and Simulink, see Supported Data Types and How to Convert to Them.

See Also

Buffer
DSP Blockset
Delay Line
DSP Blockset
Stack
DSP Blockset

Also see Buffers for a list of all the blocks in the Buffers library.


  QR Solver Random Source