E71 Lab 5 - An "Ideal" Low Pass Filter

The goal this week is to implement and characterize an ideal low pass filter on a real time DSP.

Task 0: Getting Ready (same as previous lab)

  1. You can use the same project as you did in the last lab (or you can right-click on it and create a duplicate).  If you want to keep your old program file, you can:
  2. As in last lab, set up I/O pins so that you can time your function.
  3. Choose  the "C/C++ Perspective" make sure current project is selected (left window). Then go to Project→Properties and select "C/C++ Build." Make sure the "Tool Settings" tab is selected and under "C2000 Compiler" choose "Basic Options" and select "Optimization level" and set it to "4."

Task 1: Short Length Filter

  1. Find the impulse response for an ideal low pass filter with a cutoff frequency of ω=π/8.
  2. Truncate the series to only 17 points (centered about n=0) and use these points to implement an FIR filter using Q15 math.  You'll need to somehow normalize the coefficients to minimize, or eliminate, the possibility of overflow. Note, when you examine variables in the debugger, you can right click on them and view them in Q15 format.
  3. Test the filter and demonstrate that it behaves as expected using a sampling frequency of 44.1 kHz. (i.e., it is lowpass, has appropriate cutoff frequncy, with Gibb's overshoot...)
  4. Time how long it takes to execute  "E71Func()."
  5. Save a copy of this program - you need it for the report..

Task 2: Longer Filter

Repeat the above task for a 49 point filter.   If you can't get the filter to work properly (because of speed issues), either use a 33 point filter, or change the sampling rate to 8 kHz.

To Turn in:

Strive for clarity.  The report should have different sections for "Introduction," "Theory," "Results," "Discussion," etc...  If you do everything I ask for, you will get a B+ for the lab.  To get a higher grade you need to go beyond the basics.


Make sure you include (as a start):

Things to think about and perhaps investigate (though this is not necessary):