Digital Signal Processing Reference
In-Depth Information
dly[0] = input_sample(); //new input @ beginning of
buffer
yn = 0; //initialize filter's output
for (i = 0; i< N; i++)
yn += (h[i] * dly[i]); //y(n) += h(i)* x(n-i)
for (i = N-1; i > 0; i—) //starting @ end of buffer
dly[i] = dly[i-1]; //update delays with data move
output_sample(yn >> 15); //scale output filter
return;
}
void main()
{
comm_intr(); //init DSK, codec, McBSP
while(1); //infinite loop
}
Digital filtering with IIR filter
//IIR.c IIR filter using cascaded Direct Form II
//Coefficients a's and b's correspond to b's and a's from
MATLAB
#include “bs1750.cof” //BS @ 1750 Hz coefficient file
short dly[stages][2] = {0}; //delay samples per stage
interrupt void c_int11() //ISR
{
int i, input;
int un, yn;
input = input_sample(); //input to 1st stage
for (i = 0; i < stages; i++) //repeat for each stage
{
un=input-((b[i][0]*dly[i][0])>>15) -
((b[i][1]*dly[i][1])>>15);
yn=((a[i][0]*un)>>15)+((a[i][1]*dly[i][0])>>15)+((a[i][2
]*dly[i][1])>>15);
 
Search WWH ::




Custom Search