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 | ||
|
| 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;
}
}
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.