# Implementing Radix-2 Fft Algorithms on the Tms470R1X

Topics: Discrete Fourier transform, Fast Fourier transform, Cooley–Tukey FFT algorithm Pages: 16 (4793 words) Published: May 16, 2013
Application Report
SPNA071A – November 2006

Implementing Radix-2 FFT Algorithms on the TMS470R1x
..................................................................................................................................................... ABSTRACT This application report describes implementing Radix-2 FFT algorithms on the TMS470R1x. The FFT is implemented to work with complex input data. The key objective is to get a fast execution time, with obtaining a small code size secondary.

Contents 1 Introduction .......................................................................................... 2 TMS470R1x Architecture .......................................................................... 3 Fourier Transform .................................................................................. 4 FFT ................................................................................................... 5 Implementation ...................................................................................... 6 Results ............................................................................................... Appendix A Creating a COFF .......................................................................... List of Figures 1 2 3

1 2 2 2 6 7 8

Twiddle Factors (W8) .............................................................................. 3 8-Point DIT-Radix2-FFT ........................................................................... 5 Examples of Bit-Reversed Address .............................................................. 6 List of Tables

1 A-1

Radix-2 FFT Algorithm Results ................................................................... 7 Files Needed to Create a COFF .................................................................. 8

1

Introduction
In many applications, specific signals are measured with sensors. These signals contain information necessary for the application to perform its tasks. The signal has to be transformed by special algorithms before the application can get the information from it. In most cases, it is useful to convert the signal from its time domain into the frequency domain to determine the spectrum of the signal and the different frequencies it is made up of. To complete this conversion, a Fourier transform has to be performed. Different algorithms were developed for this task, such as discrete Fourier transforms (DFT) or fast Fourier transforms (FFT). This application report explains a Radix-2 FFT algorithm to convert a signal into the frequency domain. It works on complex input data, where the real and imaginary parts are stored in two separate arrays. Other algorithms, such as the L-Shaped Butterfly, Hadamard Transform, etc., have a better execution speed. However, they have certain limitations, for example, resolution. As the Radix-2 is the most common transform used and therefore offers a good basis for performance comparison, we limit ourselves to this FFT. The other algorithms are not explained in this application report.

SPNA071A – November 2006 Submit Documentation Feedback

Implementing Radix-2 FFT Algorithms on the TMS470R1x

1

www.ti.com

TMS470R1x Architecture

2

TMS470R1x Architecture
The TMS470R1x contains a 16/32bit RISC CPU with a von Neumann architecture. All arithmetic operations have to be performed in registers (of a load/store architecture). Therefore, all the parts of a calculation have to be loaded into registers first. It also has a 32x8 hardware-multiplier implemented. The instruction cycle time of the hardware multiplier depends on the format of the input data. It varies between 2 and 5 cycles for a multiplication. All other data processing instructions need 1 or 2 cycles. This difference in the cycle time leads to the conclusion that the implemented algorithm should use as few multiplications as possible.

3

Fourier Transform
With the Fourier transform, a function is split up in a sum of sine...