<< Chapter < Page | Chapter >> Page > |
This module is a lab assignment for implementing an FIR filter using a circular buffer.
In this lab you will be writing a function
fir_filt
that will take as its input one new sample and produce one output sample. The
fir_filt
function will have the following basic structure:
Store the input value in a circular buffer
Compute the new output value
Return the new output value
Store the coefficients in in a header file
Here are some tips for writing the function.
float
values.Int16
values (use a global variable or a local static variable). This is not very good programming practice but we will do it to simplify the processing.float
variable to an
Int16
before output. e.g.
return (Int16) var;
outbuf[2*i] = fir_filt(inbuf[2*i]);
window
and
sinc
.fopen
,
fprintf
,
fclose
). Your header file should have the coefficients in an array, be saved in a format like this:
3.007445391758509e-003
and be data type
float
.fir_filt
that takes as its input one input time point and outputs one filtered time point. Use the coefficients designed above. Use a circular buffer to store the saved values of the input.fir_filt
.fir_filt
should be located in a separate file from you main program. Also, create a header file to contain the declaration of your function
fir_filt
.DSK6713_audio.c
- contains your main code for sending and receiving data and filtering the signal.bpf.h
- contains your filter coefficients and a macro definition for the length of your filter (e.g.
#define N 70
). This file will be included in
fir_filt.c
.fir_filt.c
- contains your FIR filter function called
fir_filt
.fir_filt.h
- contains the declaration of your FIR filter
fir_filt
. This will be included in the
DSK6713_audio.c
file.Notification Switch
Would you like to follow the 'Dsp lab with ti c6x dsp and c6713 dsk' conversation and receive update notifications?