28
FOURIER TRANSFORMS CENG 5931: GNU RADIO Dr. George Collins

FOURIER TRANSFORMS CENG 5931: GNU RADIO Dr. George Collins

Embed Size (px)

Citation preview

FOURIER TRANSFORMSCENG 5931: GNU RADIO Dr. George Collins

Contents

Introduction

GSL

Modules and Blocks

FFTW

GCELL

Classes

Functions

Conclusion

Introduction

Fourier Transform:

Mathematical operation that decomposes a

signal into its constituent frequencies.

Frequency domain.

One complex-valued function of a real

variable into

another (Mathematical Terms)

Essential for high-speed computing.

2 types: DFT & FFT

Introduction

Fast Fourier transform:

Efficient algorithm to compute the discrete

Fourier

transform (DFT) and its inverse.

Algorithms involving a wide range of

mathematics,

from simple complex-number arithmetic

to group

theory and number theory.

DFT decomposes a sequence of values into

components of different frequencies.

FFT is a way to compute the same result more

quickly.

Introduction

GNU RADIO:

Free software development toolkit that provides

the

signal processing runtime and processing blocks

to

implement software radios.

Used in hobbyist, academic and commercial

environments to support wireless

communications

research.

Applications are written using Python.

Signal processing path is implemented in C++

using

processor floating point extensions.

GSL

GNU Scientific Library (GSL):

Numerical library for C and C++ programmers.

Free software under the GNU General Public License.

Provides a wide range of mathematical routines such as

random number generators, special functions and least-

squares fitting.

1000 functions. Some of them are:

Complex Numbers, Roots of Polynomials, Vectors

and Matrices, Permutations, Linear Algebra, Eigen

systems,

Fast Fourier Transforms, Differential Equations, IEEE

Floating-Point, Interpolation,

MODULES

GNU Radio C++ Signal Processing Blocks Digital Filter Design Miscellaneous Implementation Details Applications

ATSCRadarPager

USRP USRP2 gcell: Cell Broadband Engine SPE Scheduler & RPC

Mechanism Misc Hardware Control

BLOCKS

C++ Signal Processing Blocks:Top Block and Hierarchical Block Base ClassesSignal SourcesSignal SinksFiltersMathematicsSignal ModulationSignal DemodulationInformation Coding and DecodingSynchronizationType ConversionsSignal Level Control (AGC)Fourier TransformWavelet TransformOFDM BlocksPager BlocksMiscellaneous BlocksSlicing and Dicing StreamsVoice Encoders and DecodersBase classes for GR Blocks

Collaboration diagram

FFTW

FFTW:

C subroutine library for computing the Discrete Fourier

Transform in one or more dimensions, of both real and

complex data, and of arbitrary input size.

Benchmarks, performed on a variety of platforms

Superior

to other publicly available FFT software.

Portable: the program will perform well on most

architectures

without modification.

Appears to be the fastest program most of the time for in-

order transforms, especially in the multi-dimensional and

real-

complex cases.

GCELL

gcell:

Solves the problem of efficiently distributing potentially

small tasks across the SPEs by using a distributed SPE-

centric scheduler that pulls work to SPEs as they

become available. 

Provides high-performance DMA of arguments to and

from the SPEs.

Task completion notification to client processes.

Binding and rendezvous between PPE and SPE code.

GCELL

struct  gc_job_desc: "job description" that is DMA'd to/from the SPE.

class  gc_job_manager: Abstract class that manages SPE jobs.

class  gcell_fft_vcc: Compute forward or reverse FFT. Complex vector in /complex vector out.

Fourier Transform

CLASSES:

gr_goertzel_fc

gr_fft_vcc

gr_fft_vcc_fftw

gr_fft_vfc

gcell_fft_vcc

CLASSES

gr_goertzel_fc

Goertzel single-bin DFT calculation

CLASSES

gr_fft_vcc

Compute forward or reverse FFT. complex vector in /

complex vector out. Abstract base class.

CLASSES

gr_fft_vcc_fftw

Compute forward or reverse FFT. complex vector in /

complex vector out. Concrete class that uses FFTW

CLASSES

gr_fft_vfc

Compute forward FFT. float vector in / complex vector

out

CLASSES

gcell_fft_vcc

Compute forward or reverse FFT. complex vector in /

complex vector out. Concrete class that uses gcell to

offload FFT to SPEs.

FUNCTIONS

fft (a, n, dim)

a is a matrix

 fft (a) computes the FFT for each column of a.

n is expected to be an integer specifying the number of

elements of a to use

dim is an integer specifying the dimension of the matrix

along which the FFT is performed

FUNCTIONS

ifft (a, n, dim)

a is a matrix

 fft (a) computes the inverse FFT for each column

of a.

n is expected to be an integer specifying the number

of

elements of a to use

dim is an integer specifying the dimension of the

matrix

along which the inverse FFT is performed

FUNCTIONS

fft2 (a, n, m)

Computes the two-dimensional FFT of a

The optional arguments n and m may be used to specify

the

number of rows and columns of a to use.

If either of those is larger than the size of a, a is resized

and padded with zeros.

If a is a multi-dimensional matrix, each two-dimensional

sub-

matrix of a is treated separately

ifft2(a, n, m)… similar to the above

function.

FUNCTIONS

fftn (a, size) Compute the N-dimensional FFT of a.

The optional vector argument size may be used specify

the

dimensions of the array to be used.

If an element of size is smaller than the corresponding

dimension, then the dimension is truncated prior to

performing the FFT.

Otherwise if an element of size is larger than the

corresponding dimension a is resized and padded with

zeros.

ifftn (a, size)…similar to the above function.

FUNCTIONS

fftconv (a, b, n)

Return the convolution of the vectors a and b, as a vector

with length equal to the length (a) + length (b) - 1.

If a and b are the coefficient vectors of two polynomials,

the returned value is the coefficient vector of the product

polynomial.

The computation uses the FFT by calling the function fftfilt.

If the optional argument n is specified, an N-point FFT is

used.

FUNCTIONS

fftfilt (b, x, n)

With two arguments, fftfilt filters x with the FIR filter b 

using the FFT.

Given the optional third argument, n, fftfilt uses the

overlap-

add method to filter x with b using an N-point FFT.

If x is a matrix, filter each column of the matrix.

CONCLUSION

We had discussed several kind of blocks that are used in

GNU python programming on c++ platform.

We had seen different kinds of functions and classes that

are used in GNU library to calculate the fourier transforms,

in common the FFT.

REFERENCES

http://en.wikipedia.org/wiki/Fourier_transform

http://en.wikipedia.org/wiki/Fast_Fourier_transform

http://gnuradio.org/redmine/wiki/gnuradio

http://www.gnuradio.org/redmine/wiki/1/Gcell

http://www.fftw.org/

http://directory.fsf.org/project/fftw/

http://www.network-theory.co.uk/docs/octave3/octave_256.html

http://www.gnu.org/software/gsl/

http://gnuradio.org/doc/doxygen/modules.html

http://gnuradio.org/doc/doxygen/group__block.html

http://gnuradio.org/doc/doxygen/group__dft__blk.html

http://gnuradio.org/doc/doxygen/classgr__goertzel__fc.html#_details

Thank You...

By

Bhargav Chava

Queries…

Any Queries???