Polyphase filter bank and fast Fourier transform—optimized for HDL code generation

The `dsp.HDLChannelizer`

System
object™ separates a broadband input signal into multiple narrowband output signals. It
provides hardware speed and area optimization for streaming data applications. The object
accepts scalar or vector input of real or complex data, provides hardware-friendly control
signals, and has optional output frame control signals. You can achieve giga-sample-per-second
(GSPS) throughput by using vector input. The object implements a polyphase filter, with one
subfilter per input vector element. The hardware implementation interleaves the subfilters,
which results in sharing each filter multiplier (*FFT Length* /
*Input Size*) times. The object implements the same pipelined Radix 2^2 FFT
algorithm as the `dsp.HDLFFT`

System
object.

To channelize input data:

Create the

`dsp.HDLChannelizer`

object and set its properties.Call the object with arguments, as if it were a function.

To learn more about how System objects work, see What Are System Objects? (MATLAB).

`channelizer = dsp.HDLChannelizer`

`channelizer = dsp.HDLChannelizer(Name,Value)`

returns a
System
object, `channelizer`

= dsp.HDLChannelizer`channelizer`

, that implements a raised-cosine filter
and an 8-point FFT.

sets properties using one or more name-value pairs. Enclose each property name in single
quotes.`channelizer`

= dsp.HDLChannelizer(`Name,Value`

)

```
[dataOut,validOut]
= channelizer(dataIn,validIn)
```

```
[dataOut,validOut]
= channelizer(dataIn,validIn,reset)
```

```
[dataOut,startOut,endOut,validOut]
= channelizer(___)
```

`[`

filters and computes a fast Fourier transform, and returns the frequency channels,
`dataOut`

,`validOut`

]
= channelizer(`dataIn`

,`validIn`

)`dataOut`

, detected in the input signal, `dataIn`

,
when `validIn`

is `1`

(true). The
`validIn`

and `validOut`

arguments are logical
scalars that indicate the validity of the input and output signals, respectively.

`[`

returns the frequency channels, `dataOut`

,`validOut`

]
= channelizer(`dataIn`

,`validIn`

,`reset`

)`dataOut`

, detected in the input
signal, `dataIn`

, when `validIn`

is
`1`

(true) and `reset`

is `0`

(false). When `reset`

is `1`

(true), the object stops
the current calculation and clears all internal state.

To use this syntax, set the ResetInputPort
property to `true`

. For example:

channelizer = dsp.HDLChannelizer(...,'ResetInputPort',true); ... [dataOut,validOut] = channelizer(dataIn,validIn,reset)

`[`

returns the frequency channels, `dataOut`

,`startOut`

,`endOut`

,`validOut`

]
= channelizer(___)`dataOut`

, computed from the input
arguments of any of the previous syntaxes. `startOut`

is
`1`

(true) for the first sample of a frame of output data.
`endOut`

is `1`

(true) for the last sample of a
frame of output data.

To use this syntax, set the StartOutputPort
and EndOutputPort
properties to `true`

. For example:

channelizer = dsp.HDLChannelizer(...,'StartOutputPort',true,'EndOutputPort',true); ... [dataOut,startOut,endOut,validOut] = channelizer(dataIn,validIn)

To use an object function, specify the
System
object as the first input argument. For
example, to release system resources of a System
object named `obj`

, use
this syntax:

release(obj)