PDM microphone interface¶
The PDM microphone interface converts Pulse Density Modulation (PDM) audio input from the microphones to Pulse Code Modulation (PCM) format allowing further processing. The PDM microphone interface consists of the physical pins connecting to the two microphones and a series of filters resulting in a 16kHz PCM, two-channel output stream suitable for far-field voice processing. Please refer to the datasheet for the physical and electrical details of the PDM pins.
The processing consists of four filter stages:
Decimate by 8 FIR filter to 384kHz
Decimate by 4 FIR filter to 96kHz
Decimate by 6 FIR filter to 16kHz
DC Blocking, single-pole IIR filter
The PDM microphone interface uses 32-bit internal processing to provide very low distortion with a specification exceeding -110dB THD+N with a 140dB dynamic range.
The frequency response of the FIR filter has a stopband attenuation of at least 70dB with a passband ripple of less than 0.9dB and a passband of 6.8kHz. The total group delay from pin to the XVF3610 audio pipeline input is 1.125 milliseconds.
A DC blocking filter is placed at the end of the PDM microphone interface pipeline and is tuned to have a 5Hz -6dB point and removes any DC offset present in the PDM input.
The output from the PDM microphone interface may optionally be shifted or attenuated providing a ‘power of two’ gain control. Saturation may be applied in the case that the gain is greater than one.
By default, the gain block shift is set to zero (a gain of 20 = 1) and this is the recommended setting for normal use.
The PDM interface control parameters are shown below:
Command |
Type |
Value |
Description |
---|---|---|---|
SET _MIC_SHIFT_SATURATE |
uint32 |
arg1 <shift value (left shift)> arg2 <saturate , enable if !=0> |
Write the gain (power of 2) on the raw mic signals before entering the audio pipeline. |
GET _MIC_SHIFT_SATURATE |
uint32 |
Read the gain (power of 2) on the raw mic and Saturate Enable signals before entering the audio pipeline. |