DSP_fir_r8

DSP_fir_r8

FIR Filter (when 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 word aligned.

 

 

nh

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

 

 

nr

Number of samples to calculate. Must be multiple of 4.

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;

}

}

Special Requirements

-The number of coefficients, nh, must be a multiple of 8 and greater than or equal to 8. Coefficients must be in reverse order.

-The number of outputs computed, nr, must be a multiple of 4 and greater than or equal to 4.

-Array r[ ] must be word aligned.

4-48

Page 76
Image 76
Texas Instruments TMS320C64X manual DSPfirr8