# CIC Interpolation

Interpolate signal using cascaded integrator-comb filter

• Library:
• DSP System Toolbox / Filtering / Multirate Filters

DSP System Toolbox HDL Support / Filtering

## Description

The CIC Interpolation block performs a sample rate increase (interpolation) on an input signal by an integer factor. cascaded integrator-comb (CIC) filters are a class of linear phase FIR filters that consist of a comb part and an integrator part.

The CIC Interpolation block requires a Fixed-Point Designer™ license.

## Ports

### Input

expand all

Data input, specified as a vector or matrix. If the input is fixed point, it must be signed integer or signed fixed point with power-of-two slope and zero bias.

Data Types: `int8` | `int16` | `int32` | `int64` | `fixed point`
Complex Number Support: Yes

### Output

expand all

CIC interpolated output, returned as a vector or a matrix. The data type of the output is determined by the settings in the block dialog. The complexity of the output matches that of the input. The number of output rows is RNum, where R is the interpolation factor and Num is the number of input rows.

Data Types: `int8` | `int16` | `int32` | `int64` | `fixed point`
Complex Number Support: Yes

## Parameters

expand all

Source of the filter information, specified as one of the following:

• `Dialog parameters` — Enter information about the filter, such as Interpolation factor (R), Differential delay (M) and Number of sections (N), in the block dialog.

• `Filter object` — Specify the filter using a `dsp.CICInterpolator` System object™.

Interpolation factor of the filter, specified as an integer greater than 1.

#### Dependencies

This parameter appears when you set Coefficient source to `Dialog parameters`.

Specify the differential delay of the comb part of the filter, M, as a positive integer. For more details, see CIC Interpolation Filter.

#### Dependencies

This parameter appears when you set Coefficient source to `Dialog parameters`.

Specify the number of filter sections. The number you specify determines the number of sections in either the comb part of the filter or the integrator part of the filter. This value does not represent the total number of sections in the comb and integrator parts combined.

#### Dependencies

This parameter appears when you set Coefficient source to `Dialog parameters`.

Choose how you specify the fixed-point word length and fraction length of the filter sections and/or output:

• `Full precision` — The word and fraction lengths of the filter sections and outputs are automatically selected for you. The output and last section word lengths (WL) are set to:

`$\text{WL}=\mathrm{ceil}\left({\mathrm{log}}_{2}\left(\frac{{\left(RM\right)}^{N}}{R}\right)\right)+I$`

where,

• I –– Input word length

• M –– Differential delay

• N –– Number of sections

• R –– Interpolation factor

The other section word lengths are set to accommodate the bit growth, as described in Hogenauer's paper [1]. All fraction lengths are set to the input fraction length.

• `Minimum section word lengths` — Specify the word length of the filter output in the Output word length parameter. The word lengths of the filter sections are set in the same way as in `Full precision` mode.

The section fraction lengths are set to the input fraction length. The output fraction length is set to the input fraction length minus the difference between the last section word length and the output word length.

• `Specify word lengths` — Specify the word lengths of the filter sections and output in the Section word lengths and Output word length parameters. The fraction lengths of the filter sections are set such that the spread between word length and fraction length is the same as in full-precision mode. The output fraction length is set to the input fraction length minus the difference between the last section word length and the output word length.

• `Binary point scaling` — Specify the word and fraction lengths of the filter sections and output in the Section word lengths, Section fraction lengths, Output word length, and Output fraction length parameters.

#### Dependencies

This parameter appears when you set Coefficient source to `Dialog parameters`.

Word lengths of filter sections, specified as a scalar or a vector of length equal to 2N, where N is the number of filter sections. The section word length must be in the range [2, 128].

#### Dependencies

This parameter appears when you set Coefficient source to `Dialog parameters` and Data type specification mode to either `Specify word lengths` or `Binary point scaling`.

Fraction lengths of filter sections, specified as an integer.

#### Dependencies

This parameter appears when you set Coefficient source to `Dialog parameters` and Data type specification mode to `Binary point scaling`.

Word length of the filter output, specified as an integer in the range [2, 128].

#### Dependencies

This parameter appears when you set Coefficient source to `Dialog parameters` and Data type specification mode to any option other than ```Full precision```.

Fraction length of the filter output, specified as an integer.

#### Dependencies

This parameter appears when you set Coefficient source to `Dialog parameters` and Data type specification mode to `Binary point scaling`.

Specify how the block should process the input. You can set this parameter to one of the following options:

• `Columns as channels (frame based)` — The block treats each column of the input as a separate channel. In this mode, the block always performs single-rate processing.

• `Elements as channels (sample based)` — The block treats each element of the input as a separate channel. In this mode, the input to the block must be a scalar or a vector. You can use the Rate options parameter to specify whether the block performs single-rate or multirate processing.

Specify the rate processing rule for the block. You can select one of the following options:

• `Enforce single-rate processing` — The block maintains the sample rate of the input.

• `Allow multirate processing` — The block produces an output with a sample rate that is R times faster than the input sample rate. To select this option, you must set the Input processing parameter to ```Elements as channels (sample based)```.

Specify the name of the multirate filter object that you want the block to implement. You must specify the filter as a `dsp.CICInterpolator` System object.

You can define the System object in the block dialog or in a MATLAB® workspace variable.

For information on creating System objects, see Define Basic System Objects.

#### Dependencies

This parameter appears when you set Coefficient source to `Filter object`.

This button opens the Filter Visualization Tool (FVTool) from the Signal Processing Toolbox™ product and displays the filter response of the filter defined in the block. For more information on FVTool, see the Signal Processing Toolbox documentation.

Note

If you specify a filter in the Filter object parameter, you must apply the filter by clicking the button before using the button.

## Block Characteristics

 Data Types `fixed point` | `integer` Direct Feedthrough `no` Multidimensional Signals `no` Variable-Size Signals `no` Zero-Crossing Detection `no`

expand all

expand all

## References

[1] Hogenauer, E.B. “An Economical Class of Digital Filters for Decimation and Interpolation” IEEE Transactions on Acoustics, Speech and Signal Processing. Vol. 29, Number 2, 1981, pp. 155–162, 1981.

[2] Meyer-Baese, U. Digital Signal Processing with Field Programmable Gate Arrays. New York: Springer Verlag, 2001.

[3] Harris, Fredric J., Multirate Signal Processing for Communication Systems. Upper Saddle River, NJ: Prentice Hall PTR, 2004.

## Version History

Introduced before R2006a