DSP_fir_r8_hM16_rM8A8X8

DSP_fir_r8_hM16_rM8A8X8 FIR Filter (the number of coefficients is a multiple of 8)

Function

void DSP_fir_r8_hM16_rM8A8X8 (short *x, short *h, short *r, int nh, int nr)

Arguments

x[nr+nh−1]

Pointer to input array of size nr + nh – 1.

 

h[nh]

Pointer to coefficient array of size nh (coefficients must be in

 

 

reverse order).

 

r[nr]

Pointer to output array of size nr. Must be double word

 

 

aligned.

 

nh

Number of coefficients. Must be multiple of 8, 16.

 

nr

Number of samples to calculate. Must be multiple of 8, .8.

Description

Computes a real FIR filter (direct-form) using coefficients stored in vector h[ ].

 

The real data input is stored in vector x[ ]. The filter output result is stored in

 

vector r[ ]. This FIR operates on 16-bit data with a 32-bit accumulate. The filter

 

calculates nr output samples using nh coefficients.

Algorithm

This is the C equivalent of the assembly code without restrictions. Note that

 

the assembly code is hand optimized and restrictions may apply.

void DSP_fir_r8 (short *x, short *h, short *r, int nh, int nr)

{

int i, j, sum;

for (j = 0; j < nr; j++) { sum = 0;

for (i = 0; i < nh; i++) sum += x[i + j] * h[i];

r[j] = sum >> 15;

}

}

4-50

Page 78
Image 78
Texas Instruments TMS320C64X manual DSPfirr8hM16rM8A8X8