filters_default.h¶

const uint32_t stage1_coef[STAGE1_WORDS]¶
Stage 1 PDMtoPCM Decimation Filter Default Coefficients
These are the default coefficients for the first stage filter.

const int32_t stage2_coef[STAGE2_TAP_COUNT]¶
Stage 2 Decimation Filter Default Coefficients
These are the default coefficients for the second stage filter.

const right_shift_t stage2_shr¶
Stage 2 Decimation Filter Default Output Shift
This is the nonnegative, rounding, arithmetic rightshift applied to the 40bit accumulator to produce an output sample.

STAGE1_DEC_FACTOR¶
Stage 1 PDMtoPCM Decimation Filter
Decimation Factor: 32
Tap Count: 256
The first stage decimation FIR filter converts 1bit PDM samples into 32bit PCM samples and simultaneously decimates by a factor of 32.
A typical input PDM sample rate will be 3.072M samples/sec, thus the corresponding output sample rate will be 96k samples/sec.
The first stage filter uses 16bit coefficients for its taps. Because this is a highly optimized filter targeting the VPU hardware, the first stage filter is presently restricted to using exactly 256 filter taps.
For more information about the example first stage filter supplied with the library, including frequency response and steps for using a custom first stage filter, see
. Stage 1 Decimation FactorThis is the ratio of input sample rate to output sample rate for the first filter stage.
Note
In version 5.0 of lib_mic_array, this value is fixed (even if you choose not to use the default filter coefficients).

STAGE1_TAP_COUNT¶
Stage 1 Filter Tap Count
This is the number of filter taps in the first stage filter.
Note
In version 5.0 of lib_mic_array, this value is fixed (even if you choose not to use the default filter coefficients).

STAGE1_WORDS¶
Stage 1 Filter Word Count
This is a helper macro to indicate the number of 32bit words required to store the filter coefficients.
Note
Even though the coefficients are 16bit, the related lib_mic_array structs and functions expect them to be contained in an array of
uint32_t
, rather than an array ofint16_t
. There are two reasons for this. The first is that the VPU instructions require loaded data to start at a wordaligned (0 mod 4) address.uint32_t
allocated on the heap or stack are guaranteed by the compiler to be at wordaligned addresses. The second reason is to mitigate possible confusion regarding the arrangement of the filter coefficients in memory. Not only are the 16bit coefficients not stored in order (e.g.b[0], b[1], b[2], ...
), the bits of individual 16bit coefficients are not stored together in memory. This is, again, due to the behavior of the VPU hardware.

STAGE2_DEC_FACTOR¶
Stage 2 Decimation Filter
Decimation Factor: (configurable) Tap Count: (configurable)
The second stage decimation FIR filter filters and downsamples the 32bit PCM output stream from the first stage filter into another 32bit PCM stream with sample rate reduced by the stage 2 decimation factor.
A typical first stage output sample rate will be 96k samples/sec, a decimation factor of 6 (i.e. using the default stage 2 filter) will mean a second stage output sample rate of 16k samples/sec.
The second stage filter uses 32bit coefficients for its taps. A complete description of the FIR implementation is outside the scope of this documentation, but it can be found in the
xs3_filter_fir_s32_t
documentation oflib_xs3_math
.In brief, the second stage filter coefficients are quantized to a Q1.30 fixedpoint format with input samples treated as integers. The tap outputs are added into a 40bit accumulator, and an output sample is produced by applying a rounding arithmetic rightshift to the accumulator and then clipping the result to the interval
[INT32_MAX, INT32_MIN)
.For more information about the example second stage filter supplied with the library, including frequency response and steps for using a custom filter, see
. Stage 2 Decimation Factor for default filter.This is the ratio of input sample rate to output sample rate for the second filter stage.
While the second stage filter can be configured with a different decimation factor, this is the one used for the filter supplied with this library.

STAGE2_TAP_COUNT¶
Stage 2 Filter tap count for default filter.
This is the number of filter taps associated with the second stage filter supplied with this library.