Inverse fast Fourier transform — optimized for HDL code generation

The HDL IFFT System object™ provides two architectures to optimize either throughput or area. Use the streaming Radix 2^2 architecture for high-throughput applications. This architecture supports scalar or vector input data. You can achieve giga-sample-per-second (GSPS) throughput using vector input. Use the burst Radix 2 architecture for a minimum resource implementation, especially with large FFT sizes. Your system must be able to tolerate bursty data and higher latency. This architecture supports only scalar input data. The object accepts real or complex data, provides hardware-friendly control signals, and has optional output frame control signals.

To calculate the inverse fast Fourier transform:

Create the

`dsp.HDLIFFT`

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

`IFFT_N = dsp.HDLIFFT`

`IFFT_N = dsp.HDLIFFT(Name,Value)`

returns an HDL IFFT
System
object, `IFFT_N`

= dsp.HDLIFFT`IFFT_N`

, that performs a fast Fourier transform.

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

= dsp.HDLIFFT(Name,Value)

`ifft128 = dsp.HDLIFFT('FFTLength',128)`

**For versions earlier than R2016b, use the step
function to run the System object algorithm. The arguments to
step are the object you created, followed by
the arguments shown in this section.**

**For example, y = step(obj,x) and y = obj(x) perform equivalent operations.**

```
[Y,validOut]
= IFFT_N(X,validIn)
```

```
[Y,validOut,ready]
= IFFT_N(X,validIn)
```

```
[Y,startOut,endOut,validOut]
= IFFT_N(X,validIn)
```

```
[Y,validOut]
= IFFT_N(X,validIn,resetIn)
```

```
[Y,startOut,endOut,validOut]
= IFFT_N(X,validIn,resetIn)
```

`[`

returns the inverse fast Fourier transform (IFFT) when using the burst Radix 2
architecture. The `Y`

,`validOut`

,`ready`

]
= IFFT_N(`X`

,`validIn`

)`ready`

signal indicates when the object can accept
input samples.

To use this syntax, set the Architecture
property to `'Burst Radix 2'`

. For example:

IFFT_N = dsp.HDLIFFT(___,'Architecture','Burst Radix 2'); ... [y,validOut,ready] = IFFT_N(x,validIn)

`[`

also returns frame control signals `Y`

,`startOut`

,`endOut`

,`validOut`

]
= IFFT_N(`X`

,`validIn`

)`startOut`

and
`endOut`

. `startOut`

is `true`

on
the first sample of a frame of output data. `endOut`

is
`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:

IFFT_N = dsp.HDLIFFT(___,'StartOutputPort',true,'EndOutputPort',true); ... [y,startOut,endOut,validOut] = IFFT_N(x,validIn)

`[`

returns the IFFT, `Y`

,`validOut`

]
= IFFT_N(`X`

,`validIn`

,`resetIn`

)`Y`

, when `validIn`

is
`true`

and `resetIn`

is `false`

.
When `resetIn`

is `true`

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

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

. For example:

IFFT_N = dsp.HDLIFFT(___,'ResetInputPort',true); ... [y,validOut] = IFFT_N(x,validIn,resetIn)

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)