![]() |
Project Ne10
An Open Optimized Software Library Project for the ARM Architecture
|
Functions | |
void | ne10_fir_float_c (const ne10_fir_instance_f32_t *S, ne10_float32_t *pSrc, ne10_float32_t *pDst, ne10_uint32_t blockSize) |
blockSize
samples through the filter. pSrc
and pDst
points to input and output arrays containing blockSize
values.b[n]
is multiplied by a state variable which equals a previous input sample x[n]
. y[n] = b[0] * x[n] + b[1] * x[n-1] + b[2] * x[n-2] + ...+ b[numTaps-1] * x[n-numTaps+1]
pCoeffs
points to a coefficient array of size numTaps
. Coefficients are stored in time reversed order. {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}
pState
points to a state array of size numTaps + blockSize - 1
. Samples in the state buffer are stored in the following order. {x[n-numTaps+1], x[n-numTaps], x[n-numTaps-1], x[n-numTaps-2]....x[0], x[1], ..., x[blockSize-1]}
blockSize-1
. The increased state buffer length allows circular addressing, which is traditionally used in the FIR filters, to be avoided and yields a significant speed improvement. The state variables are updated after each block of data is processed; the coefficients are untouched. *ne10_fir_instance_f32_t S = {numTaps, pState, pCoeffs};
where numTaps
is the number of filter coefficients in the filter; pState
is the address of the state buffer; pCoeffs
is the address of the coefficient buffer.
void ne10_fir_float_c | ( | const ne10_fir_instance_f32_t * | S, |
ne10_float32_t * | pSrc, | ||
ne10_float32_t * | pDst, | ||
ne10_uint32_t | blockSize | ||
) |
[in] | *S | points to an instance of the floating-point FIR filter structure. |
[in] | *pSrc | points to the block of input data. |
[out] | *pDst | points to the block of output data. |
[in] | blockSize | number of samples to process per call. |
Definition at line 121 of file NE10_fir.c.