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[n1] + b[2] * x[n2] + ...+ b[numTaps1] * x[nnumTaps+1]
pCoeffs
points to a coefficient array of size numTaps
. Coefficients are stored in time reversed order. {b[numTaps1], b[numTaps2], b[N2], ..., 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[nnumTaps+1], x[nnumTaps], x[nnumTaps1], x[nnumTaps2]....x[0], x[1], ..., x[blockSize1]}
blockSize1
. 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 floatingpoint 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[numTaps1], b[numTaps2], b[N2], ..., b[1], b[0]}
pState
points to the array of state variables. pState
is of length numTaps+blockSize1
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 floatingpoint 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.