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 | |
| The real data input is stored in vector x[ ]. The filter output result is stored in | |
| vector r[ ]. This FIR operates on | |
| 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;
}
}