DSP Blockset
  Go to block:
    Search    Help Desk 
Variable Integer Delay    See Also

Delay the input by a time-varying integer number of sample periods.

Library

Signal Operations, in General DSP

Description

The Variable Integer Delay block delays the discrete-time input at the top (In) port by the integer number of sample intervals specified by the input to the bottom (Delay) port. Both ports must have the same rate. The delay for a sample-based input sequence is a scalar value by which to uniformly delay every channel. The delay for a frame-based input sequence can be a scalar value by which to uniformly delay every sample in every channel, or a vector containing one delay value for each sample in the input frame.

The delay values should be in the range of 0 to D, where D is the Maximum delay in samples. Delay values greater than D or less than 0 are clipped to those respective values and noninteger delays are rounded to the nearest integer value.

The Variable Integer Delay block differs from the Integer Delay block in the following three ways.

Variable Integer Delay
Integer Delay
Delay is provided as an input to the Delay port
Delay is specified as a parameter setting in the dialog box
A unique delay can be applied to each consecutive sample in an input frame (in frame-based mode)
Every sample in an input frame is always delayed by an equal amount
The same delay is always applied to every input channel
A unique delay can be applied to each input channel

The Frame-based inputs parameter allows you to choose between sample-based and frame-based operation.

Sample-Based Operation

When the check box is not selected (default), the block assumes that the input is a 1-by-N sample vector or M-by-N sample matrix. Each of the N vector elements (or M*N matrix elements) is treated as an independent channel, and the block applies the delay at the Delay port to each channel.

The Variable Integer Delay block stores the D+1 most recent samples received at the In port for each channel. At each sample time the block outputs the stored sample(s) indexed by the input to the Delay port.

For example, if the input to the In port, u, is a scalar signal, the block stores a vector, U, of the D+1 most recent signal samples. If we call the current input sample U(1), the previous input sample U(2), and so on, then the block's output is

where v is the input to the Delay port. Note that a delay value of 0 (v=0) causes the block to pass through the sample at the In port in the same simulation step that it is received. The block's memory is initialized to the Initial conditions value at the start of the simulation (see below).

The figure below shows the block output for a scalar ramp sequence at the In port, a Maximum delay in samples of 5, an Initial conditions of 0, and a variety of different delays at the Delay port.

Note that the current input at each time-step is immediately stored in memory as U(1). This allows the current input to be available at the output for a delay of 0 (v=0).

The Initial conditions parameter specifies the values in the block's memory at the start of the simulation. Unlike the Integer Delay block, the Variable Integer Delay block does not have a fixed initial delay period during which the initial conditions appear at the output. Instead, the initial conditions are propagated to the output only when they are indexed in memory by the value at the Delay port. Both fixed and time-varying initial conditions can be specified in a variety of ways to suit the dimensions of the input sequence.

Fixed Initial Conditions.    The settings shown below specify fixed initial conditions. For a fixed initial condition, the block initializes each of D samples in memory to the value entered in the Initial conditions parameter. A fixed initial condition in sample-based mode can be specified in one of the following ways:

Time-Varying Initial Conditions.    The following settings specify time-varying initial conditions. For a time-varying initial condition, the block initializes each of D samples in memory to one of the values entered in the Initial conditions parameter. This allows you to specify a unique output value for each sample in memory. A time-varying initial condition in sample-based mode can be specified in one of the following ways:

Frame-Based Operation

When the Frame-based inputs check box is selected, the block assumes that the input is an M-by-N frame matrix. Each of the frames in the matrix contains M sequential time samples from an independent channel. The illustration below shows a 6-by-4 matrix input:

The Number of channels parameter specifies the number of independent channels (columns), N, in the matrix.

In frame-based mode, the input at the Delay port can be a scalar value by which to uniformly delay every sample in every channel, or length-M vector, v = [v(1) v(2) ... v(M)], containing one delay for each sample in the input frame(s). The set of delays contained in vector v is applied identically to every channel of a multichannel input.

Vector v does not specify when the samples in the current input frame will appear in the output. Rather, v indicates which previous input samples (stored in memory) should be included in the current output frame. The first sample in the current output frame is the input sample v(1) intervals earlier in the sequence, the second sample in the current output frame is the input sample v(2) intervals earlier in the sequence, and so on.

The illustration below shows how this works for an input with a sample period of 1 and frame size of 4. The Maximum delay in samples (Dmax) is 5, and the Initial conditions parameter is set to -1. The delay input changes from [1 3 0 5] to [2 0 0 2] after the second input frame. Note that the samples in each output frame are the values in memory indexed by the elements of v.

Frame-based operation provides substantial increases in throughput rates at the expense of greater model latency.

The Initial conditions parameter specifies the values in the block's memory at the start of the simulation. Both fixed and time-varying initial conditions can be specified.

Fixed Initial Conditions.    The settings shown below specify fixed initial conditions. For a fixed initial condition, the block initializes each of D samples in memory to the value entered in the Initial conditions parameter. A fixed initial condition in frame-based mode can be one of the following:

Time-Varying Initial Condition.    The following setting specifies a time-varying initial condition. For a time-varying initial condition, the block initializes each of D samples in memory to one of the values entered in the Initial conditions parameter. This allows you to specify a unique output value for each sample in memory. A time-varying initial condition in frame-based mode can be specified in the following way:

Note
When the Variable Integer Delay block is used in a feedback loop, at least one block without direct feedthrough (e.g., an Integer Delay block with Direct feedthrough deselected) should be included in the loop as well. This prevents the occurrence of an algebraic loop when the delay of the Variable Integer Delay block is driven to zero.

If you expect to generate code for the Variable Integer Delay block using the Real-Time Workshop, you should ensure that inputs are contiguous in memory. See the Contiguous Copy block for more information.

Dialog Box

Maximum delay in samples
The maximum delay that the block can produce for any sample. Delay input values exceeding this maximum are clipped at the maximum.
Initial conditions
The values with which the block's memory is initialized.
Frame-based inputs
Selects frame-based operation.
Number of channels
For frame-based operation, the number of channels (columns) in the input matrix.

See Also

Integer Delay
Variable Fractional Delay


[ Previous | Help Desk | Next ]