<< Chapter < Page Chapter >> Page >
This module describes a processor exercise in which students implement a spectrum analyzer using mixed C and assembly code. Students are to acquire a block of 1024 samples, apply a Hamming window, compute a length-1024 Discrete Fourier Transform using provided Fast Fourier Transform code, and display the magnitude-squared spectrum on an oscilloscope.

Implementation

As this is your first experience with the C environment, you will have the option to add most of the required code in C or assembly.A C skeleton will provide access to input samples, output samples, and interrupt handling code. You will add code to transfer theinputs and outputs (in blocks at a time), apply a hamming window, compute the magnitude-squared spectrum, and include a trigger pulse.After the hamming window is created, either an assembly or C module that bit reverses the input and performs an FFT calculation is called.

As your spectrum analyzer works on a block of samples at a time, you will need to use interrupts to pause your processingwhile samples are transferred from/to the CODEC (A/D and D/A) buffer. Fortunately, the interrupt handling routines havebeen written for you in a C shell program available at v:\ece420\54x\dspclib\lab4main.c and the core code.

Interrupt basics

Interrupts are an essential part of the operation of any microprocessor. They are particularly important in embeddedapplications where DSPs are often used. Hardware interrupts provide a way for interacting with external devices whilethe processor executes code. For example, in a key entry system, a key press would generate a hardware interrupt.The system code would then jump to a specified location in program memory where a routine could process the key input.Interrupts provide an alternative to polling. Instead of checking for key presses at a predetermined rate (requires aclock), the system could be busy executing other code. On the TI-C54x DSP, interrupts provide a convenient way totransfer blocks of data to/from the CODEC in a timely fashion.

Interrupt handling

The lab4main.c code and the core code are intended to make your interaction with the hardware much simpler. Asthere was a core file for working in the assembly environment (Labs 0-3), there is a core file for the C environment(V:\ece420\54x\dspclib\core.asm) which handles the interrupts from the CODEC (A/D and D/A) and the serial port. Here, wewill describe the important aspects of the core code necessary to complete the assignment.

At the heart of the hardware interaction is the auto-buffering serial port. In the auto-buffering serial mode, the TI-C54xprocessor is able to do processing uninterrupted while samples are transferred to/from a buffer of length BlockLen 64 samples. However, the spectrum analyzer to be implemented in this lab works over a block of N 1024 samples. If it were possible to compute a 1024-point FFT in the sample time of one BlockLen , then no additional interrupt handling routines would be necessary. Samples could be collected ina 1024-length buffer and a 1024-point FFT could be computed uninterrupted while the auto-buffering buffer fills.Unfortunately, the DSP is not fast enough to accomplish this task.

Get Jobilize Job Search Mobile App in your pocket Now!

Get it on Google Play Download on the App Store Now




Source:  OpenStax, Ece 320 spring 2004. OpenStax CNX. Aug 24, 2004 Download for free at http://cnx.org/content/col10225/1.12
Google Play and the Google Play logo are trademarks of Google Inc.

Notification Switch

Would you like to follow the 'Ece 320 spring 2004' conversation and receive update notifications?

Ask