# dsphdl.FFT

Compute fast Fourier transform (FFT)

## Description

The `dsphdl.FFT`

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 gigasamples-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 fast Fourier transform:

Create the

`dsphdl.FFT`

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?

**Note**

You can also generate HDL code for this hardware-optimized algorithm, without creating a
MATLAB^{®} script, by using the DSP HDL IP Designer app. The app
provides the same interface and configuration options as the System object.

## Creation

### Description

returns an HDL FFT
System object, `FFT_N`

= dsphdl.FFT`FFT_N`

, that performs a fast Fourier transform.

sets properties using one or more name-value arguments.`FFT_N`

= dsphdl.FFT(`Name=Value`

)

**Example: **`fft128 = dsphdl.FFT(FFTLength=128)`

## Properties

## Usage

### Syntax

### Description

`[`

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

,`validOut`

,`ready`

]
= FFT_N(`X`

,`validIn`

)`ready`

signal indicates when the object has memory available for new
input samples. You must apply input `data`

and
`valid`

signals only when `ready`

is
`1`

(true). The object ignores any input `data`

and
`valid`

signals when `ready`

is
`0`

(false).

To use this syntax, set the `Architecture`

property to `'Burst Radix 2'`

. For example:

FFT_N = dsphdl.FFT(___,Architecture='Burst Radix 2'); ... [y,validOut,ready] = FFT_N(x,validIn)

`[`

also returns frame control signals `Y`

,`startOut`

,`endOut`

,`validOut`

]
= FFT_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:

```
FFT_N = dsphdl.FFT(___,StartOutputPort=true,EndOutputPort=true);
...
[y,startOut,endOut,validOut] = FFT_N(x,validIn)
```

`[`

returns the FFT when `Y`

,`validOut`

]
= FFT_N(`X`

,`validIn`

,`resetIn`

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

```
FFT_N = dsphdl.FFT(___,ResetInputPort=true);
...
[y,validOut] = FFT_N(x,validIn,resetIn)
```

### Input Arguments

### Output Arguments

## Object Functions

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)

## Examples

## Algorithms

## Extended Capabilities

## Version History

**Introduced in R2014b**