Accelerating the pace of engineering and science

# CIC Interpolation

Interpolate signal using Cascaded Integrator-Comb filter

## Library

Filtering / Multirate Filters

dspmlti4

## 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 transfer function of a CIC interpolator filter is

$H\left(z\right)={H}_{I}{}^{N}\left(z\right){H}_{C}{}^{N}\left(z\right)=\frac{{\left(1-{z}^{-RM}\right)}^{N}}{{\left(1-{z}^{-1}\right)}^{N}}={\left[\sum _{k=0}^{RM-1}{z}^{-k}\right]}^{N}$

where

• HI is the transfer function of the integrator part of the filter.

• HC is the transfer function of the comb part of the filter.

• N is the number of sections. The number of sections in a CIC filter is defined as the number of sections in either the comb part or the integrator part of the filter. This value does not represent the total number of sections throughout the entire filter.

• R is the interpolation factor.

• M is the differential delay.

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

The block supports real and complex fixed-point inputs. In its normal mode of operation, the CIC Interpolation 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.

### CIC Filter Structure

The filter structures supported by the CIC Interpolation and CIC Decimation blocks exactly match those created by the mfilt.cicinterp and mfilt.cicdecim objects. You can create an mfilt object in any workspace and specify that object in the Multirate filter variable parameter of this block. Alternatively, you can set the Coefficient source to Dialog parameters and specify information about the CIC filter using the available block dialog parameters.

You can use this block to create the following CIC filter structure. This interpolator has a latency of N, where N is the number of sections in either the comb or the integrator part of the filter.

## Dialog Box

### Coefficient Source

The CIC Interpolation block can operate in two different modes. Select the mode in the Coefficient source group box. If you select:

• Dialog parameters, you enter information about the filter such as structure and coefficients in the block mask

• Multirate filter object (MFILT), you specify the filter using an mfilt object.

Different items appear on the CIC Interpolation block dialog depending on whether you select Dialog parameters or Multirate filter object (MFILT) in the Coefficient source group box. See the following sections for details:

### Specify Filter Characteristics in Dialog

The Main pane of the CIC Interpolation block dialog appears as follows when you select Dialog parameters in the Coefficient source group box.

Interpolation factor (R)

Specify the interpolation factor of the filter.

Differential delay (M)

Specify the differential delay of the comb portion of the filter, M, as shown in the diagram in CIC Filter Structure.

Number of sections (N)

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

Data type specification mode

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

• Full precision — In this mode, the word and fraction lengths of the filter sections and outputs are automatically selected for you. The output and last section word lengths are set to

where

• I = input word length

• M = differential delay

• N = number of sections

• R = interpolation factor

The other section word lengths are set is such a way as 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 — In this mode, you 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 and output word lengths.

• Specify word lengths — In this mode you 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 and output word lengths.

• Binary point scaling — In this mode you fully 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.

Section word lengths

Specify the word length, in bits, of the filter sections.

This parameter is only visible if you select Specify word lengths or Binary point scaling for the Data type specification mode parameter.

Section fraction lengths

Specify the fraction length of the filter sections.

This parameter is only visible if you select Binary point scaling for the Data type specification mode parameter.

Output word length

Specify the word length, in bits, of the filter output.

This parameter is only visible if you select Minimum section word lengths, Specify word lengths or Binary point scaling for the Data type specification mode parameter.

Output fraction length

Specify the fraction length of the filter output.

This parameter is only visible if you select Binary point scaling for the Data type specification mode parameter.

Input processing

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

• Columns as channels (frame based) — When you select this option, 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) — When you select this option, 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.

 Note:   The option Inherit from input (this choice will be removed - see release notes) will be removed in a future release. See Frame-Based Processing in the DSP System Toolbox™ Release Notes for more information.
Rate options

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

• Enforce single-rate processing — When you select this option, the block maintains the sample rate of the input.

• Allow multirate processing — When you select this option, 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).

View filter response

This button opens the Filter Visualization Tool (fvtool) from the Signal Processing Toolbox™ product. The tool then displays the filter response of the mfilt object specified in the Multirate filter variable parameter. For more information on FVTool, see the Signal Processing Toolbox documentation.

 Note:   If you specify an mfilt object in the Multirate filter variable parameter, you must click the Apply button to apply the filter before using the View filter response button.

### Specify Multirate Filter Object

The Main pane of the CIC Interpolation block dialog appears as follows when you specify Multirate filter object (MFILT) in the Coefficient source group box.

Multirate filter variable

Specify the multirate filter object (mfilt) that you want the block to implement. You can specify the mfilt object in one of three ways:

• You can fully specify the mfilt object in the block mask.

• You can enter the variable name of a mfilt object that is defined in any workspace.

• You can enter a variable name for a mfilt object that is not yet defined, as shown in the default value.

For more information on creating mfilt objects, see the mfilt function reference page.

Input processing

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

• Columns as channels (frame based) — When you select this option, 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) — When you select this option, 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.

 Note:   The option Inherit from input (this choice will be removed - see release notes) will be removed in a future release. See Frame-Based Processing in the DSP System Toolbox Release Notes for more information.
Rate options

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

• Enforce single-rate processing — When you select this option, the block maintains the sample rate of the input.

• Allow multirate processing — When you select this option, 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).

View filter response

This button opens the Filter Visualization Tool (fvtool) from the Signal Processing Toolbox product. The tool then displays the filter response of the mfilt object specified in the Multirate filter variable parameter. For more information on FVTool, see the Signal Processing Toolbox documentation.

 Note:   If you specify an mfilt object in the Multirate filter variable parameter, you must click the Apply button to apply the filter before using the View filter response button.

## HDL Code Generation

This block supports HDL code generation using HDL Coder™. HDL Coder provides additional configuration options that affect HDL implementation and synthesized logic. For more information on implementations, properties, and restrictions for HDL code generation, see CIC Interpolation in the HDL Coder documentation.

## References

[1] Hogenauer, E.B., "An Economical Class of Digital Filters for Decimation and Interpolation," IEEE Transactions on Acoustics, Speech and Signal Processing, ASSP-29(2): pp. 155–162, 1981.

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

[3] Harris, Fredric J., Multirate Signal Processing for Communication Systems, Prentice Hall PTR, 2004.

## Supported Data Types

• Fixed point (signed only)

• 8-, 16-, and 32-bit signed integers