Documentation

# CIC Decimation

Decimate signal using cascaded integrator-comb filter

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

## Description

The CIC Decimation block performs a sample rate decrease (decimation) on an input signal by an integer factor. Cascaded Integrator-Comb (CIC) filters are a class of linear phase FIR filters comprised of a comb part and an integrator part.

The block supports real and complex fixed-point inputs. In its normal mode of operation, the CIC Decimation block allows the adder’s numeric values to overflow and wrap around [1] [3]. The Fixed-Point infrastructure then causes overflow warnings to appear on the command line. This overflow is of no consequence.

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

## Ports

### Input

expand all

Data input, specified as a vector or matrix. The number of input rows must be a multiple of the decimation factor.

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 decimated 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 (1/R)✕Num, where R is the decimation 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 Decimation factor (R), Differential delay (M) and Number of sections (N), in the block dialog.

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

Different items appear on the CIC Decimation block dialog depending on whether you select `Dialog parameters` or `Filter object` in the Coefficient source parameter.

Decimation 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 Filter Structure.

#### 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. All word lengths (WL) are set to:

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

where,

• I –– Input word length

• M –– Differential delay

• N –– Number of sections

• R –– Decimation factor

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 block automatically selects the word lengths of the filter sections and all fraction lengths such that each of the section word lengths is as small as possible. The precision of each filter section is less than in ```Full precision``` mode, but the range of each section is preserved.

• `Specify word lengths` — Specify the word lengths of the filter sections and output in the Section word lengths and Output word length parameters. The block automatically selects fraction lengths for the filter sections and output such that the range of each section is preserved when the least significant bits are discarded.

• `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 the rate processing rule for the block:

• `Enforce single-rate processing` — The block performs frame-based processing and produces an output that has the same sample rate as the input. To decimate the signal while maintaining the input sample rate, the block decreases the output frame size. In this mode, the input column size must be a multiple of Decimation Factor (R).

• `Allow multirate processing` — The block performs sample-based processing. In this mode, the block produces an output with a sample rate that is `R` times slower than the input sample rate.

Specify the name of the multirate filter object that you want the block to implement. You must specify the filter as a `dsp.CICDecimator` 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 (MATLAB).

#### 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 `base integer` | `fixed point` Multidimensional Signals `No` Variable-Size Signals `No`

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.

[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.

Watch now