![]() |
Project Ne10
An open, optimized software library for the ARM architecture.
|
Functions | |
| ne10_result_t | ne10_fir_init_float (ne10_fir_instance_f32_t *S, ne10_uint16_t numTaps, ne10_float32_t *pCoeffs, ne10_float32_t *pState, ne10_uint32_t blockSize) |
| void | ne10_fir_float_c (const ne10_fir_instance_f32_t *S, ne10_float32_t *pSrc, ne10_float32_t *pDst, ne10_uint32_t blockSize) |
| Specific implementation of ne10_fir_float using plain C. More... | |
| void | ne10_fir_float_neon (const ne10_fir_instance_f32_t *S, ne10_float32_t *pSrc, ne10_float32_t *pDst, ne10_uint32_t blockSize) asm("ne10_fir_float_neon") |
| Specific implementation of ne10_fir_float using NEON SIMD capabilities. More... | |
Variables | |
| void(* | ne10_fir_float )(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 | ||
| ) |
Specific implementation of ne10_fir_float using plain C.
Definition at line 111 of file NE10_fir.c.
| void ne10_fir_float_neon | ( | const ne10_fir_instance_f32_t * | S, |
| ne10_float32_t * | pSrc, | ||
| ne10_float32_t * | pDst, | ||
| ne10_uint32_t | blockSize | ||
| ) |
Specific implementation of ne10_fir_float using NEON SIMD capabilities.
| ne10_result_t ne10_fir_init_float | ( | ne10_fir_instance_f32_t * | S, |
| ne10_uint16_t | numTaps, | ||
| ne10_float32_t * | pCoeffs, | ||
| ne10_float32_t * | pState, | ||
| ne10_uint32_t | blockSize | ||
| ) |
| [in,out] | *S | points to an instance of the floating-point FIR filter structure. |
| [in] | numTaps | Number of filter coefficients in the filter. |
| [in] | *pCoeffs | points to the filter coefficients buffer. |
| [in] | *pState | points to the state buffer. |
| [in] | blockSize | number of samples that are processed per call. |
Description:
pCoeffs points to the array of filter coefficients stored in time reversed order:
{b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}
pState points to the array of state variables. pState is of length numTaps+blockSize-1 samples, where blockSize is the number of input samples processed by each call to arm_fir_f32(). Definition at line 53 of file NE10_fir_init.c.
| void(* ne10_fir_float) (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. |
Points to ne10_fir_float_c or ne10_fir_float_neon.
Definition at line 163 of file NE10_init_dsp.c.
1.8.11