Difference between revisions of "Component: Fast Fourier Transform (FFT) (DSP)"

From Flowcode Help
Jump to navigationJump to search
Line 42: Line 42:
  
  
For example if we sample at 44.4KHz and collect 256 samples then frequency bank 10 would represent any frequencies in the range of 1734.3Hz to 1907.8Hz.
+
For example if we sample at 44.1KHz and collect 256 samples then frequency bank 10 would represent any frequencies in the range of 1723Hz to 1895Hz.
  
  

Revision as of 11:07, 25 February 2014

Author Matrix Ltd
Version 1.1
Category DSP


Image Fast Fourier Transform (FFT) component

Provides a way of converting a buffer full of time domain data into frequency domain data. The output of the FFT is a set of frequency bins which correspond to the frequencies present in the signal. The number of frequency bins is equal to half the input buffer size with each bin being responsible for a portion of the frequency up to 1/2 the nyquist.

Examples

FFT Example File

FC6 Icon.png FFT Example


Example takes 256 analogue readings using an ADC input and then passes the collection of 256 samples to the FFT function which produces 128 individual frequency banks which are then plotted from left (lowest frequency) to right (highest frequency) on the graphical LCD.

FFT.jpg


Frequency banks can be worked out by using the sample frequency and buffer size. The number of frequency banks is equal to the number of samples divided by 2 minus 1.

FrequencyBanks = (SampleCount / 2) - 1


The frequency ranges present inside a bank can be worked out as follows.

FreqMin = ((SampleRate / 2) / (SampleCount / 2)) * Bank

FreqMax = ((SampleRate / 2) / (SampleCount / 2)) * (Bank + 1)


For example if we sample at 44.1KHz and collect 256 samples then frequency bank 10 would represent any frequencies in the range of 1723Hz to 1895Hz.


Here is a spreadsheet document that will calculate the frequencies present in each bank. The highlighted green fields are editable and will update the rest of the values.

File:FFT Frequency Bank Calculator.xls

FFTBanks.jpg

Downloadable macro reference

ReadFrequencyBank

No additional information


Parameters

UINT BankIdx


Return value

BYTE


FFT

No additional information


Parameters

This macro has no parameters


Return value

This call does not return a value


Simulation macro reference

This component does not contain any simulation macros


Property reference

Buffer Manager

This property is of type Fixed list of ints and can be referenced with the variable name buffer_manager.

No additional information


Input

This property is of type Fixed list of ints and can be referenced with the variable name input_a.

No additional information


Output Real

This property is of type Fixed list of ints and can be referenced with the variable name output_c.

No additional information


Output Imaginary

This property is of type Fixed list of ints and can be referenced with the variable name output_i.

No additional information


Accuracy

This property is of type Fixed list of ints and can be referenced with the variable name FFT_accuracy.

No additional information


Bit Depth

This property is of type Fixed list of ints and can be referenced with the variable name bit_depth.

No additional information


Sample Rate

This property is of type Floating point and can be referenced with the variable name sample_rate.

No additional information


Nyquist Frequency

This property is of type Floating point and can be referenced with the variable name nyquist.

No additional information


Frequency Bin Count

This property is of type Signed integer and can be referenced with the variable name bin_count.

No additional information


Frequency Bin Size (Hz)

This property is of type Floating point and can be referenced with the variable name bin_size.

No additional information