
Supermic performes variable delay and sum beamforming on 8 mcirophones and outputs an I2S stream for easy processing. First the microphone data is passed in through 8 input pins in DDR(Double Data Rate) format. From there the chip converts the data to SDR (Single Data Rate); 1 wire per microphone. Individual microphone data is then passed through a third order CIC (Cascading Integrator Comb) Filter to convert it from PDM (Pulse Density Modulation) format to PCM (Pulse-code Modulation). Each microphone's data is then passed through a shift register that acts as a configurable delay and summed.This is then outputted by a I2S bus. Additionally, it passesthrough individual PCM output for ease of use.
3.072Mhz clock to bit_clk(uio_in[0])48khz clock to lr_clk(uio_in[1])VCC and GND pins to their respective sourcesclk pin to a 3.072Mhz clockui_in[2:5]Beamformed PCM Output pin (uio[5])uio[4:0] to confiure delays from the table below. A delay of 1 represents a delay of 1 sample at a sample rate of lr_clkuo[0:7]You need 8 digital microphones, a clock generator (can be a raspberry pi, microcontroller, etc.), and something that recieves the I2S output (this can be a rapberry pi or most audio output devices).
delay_select |
mic_delays[0] | mic_delays[1] | mic_delays[2] | mic_delays[3] | mic_delays[4] | mic_delays[5] | mic_delays[6] | mic_delays[7] |
|---|---|---|---|---|---|---|---|---|
| 0 | 0 | 0 | 4 | 4 | 8 | 8 | 12 | 12 |
| 1 | 0 | 0 | 4 | 4 | 10 | 10 | 12 | 12 |
| 2 | 0 | 1 | 2 | 4 | 5 | 5 | 5 | 6 |
| 3 | 0 | 1 | 1 | 2 | 3 | 4 | 5 | 6 |
| 4 | 0 | 1 | 2 | 4 | 7 | 8 | 9 | 11 |
| 5 | 0 | 0 | 0 | 6 | 6 | 10 | 10 | 10 |
| 6 | 0 | 3 | 6 | 6 | 8 | 9 | 11 | 14 |
| 7 | 0 | 5 | 5 | 6 | 10 | 10 | 10 | 15 |
| 8 | 0 | 0 | 3 | 5 | 5 | 8 | 11 | 11 |
| 9 | 0 | 5 | 5 | 5 | 10 | 10 | 10 | 15 |
| 10 | 0 | 3 | 3 | 7 | 7 | 10 | 10 | 14 |
| 11 | 0 | 1 | 3 | 5 | 7 | 10 | 11 | 12 |
| 12 | 0 | 2 | 3 | 5 | 8 | 10 | 11 | 13 |
| 13 | 0 | 4 | 4 | 7 | 7 | 10 | 10 | 14 |
| 14 | 0 | 2 | 3 | 5 | 8 | 10 | 11 | 13 |
| 15 | 0 | 1 | 1 | 3 | 4 | 7 | 11 | 14 |
| 16 | 0 | 2 | 3 | 4 | 4 | 6 | 12 | 13 |
| 17 | 0 | 0 | 1 | 2 | 6 | 7 | 8 | 12 |
| 18 | 0 | 3 | 4 | 4 | 5 | 10 | 11 | 11 |
| 19 | 0 | 0 | 4 | 7 | 8 | 8 | 11 | 12 |
| 20 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 |
| 21 | 0 | 3 | 3 | 3 | 3 | 4 | 4 | 4 |
| 22 | 0 | 5 | 5 | 5 | 5 | 6 | 6 | 6 |
| 23 | 0 | 5 | 6 | 6 | 6 | 6 | 7 | 7 |
| 24 | 0 | 4 | 5 | 5 | 5 | 6 | 6 | 6 |
| 25 | 0 | 0 | 0 | 0 | 6 | 6 | 6 | 6 |
| 26 | 0 | 3 | 5 | 5 | 7 | 8 | 10 | 13 |
| 27 | 0 | 2 | 4 | 5 | 7 | 8 | 10 | 13 |
| 28 | 0 | 5 | 7 | 7 | 9 | 10 | 12 | 15 |
| 29 | 1 | 5 | 7 | 7 | 9 | 10 | 12 | 15 |
| 30 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 31 | 0 | 2 | 4 | 6 | 8 | 10 | 12 | 14 |
| # | Input | Output | Bidirectional |
|---|---|---|---|
| 0 | Bit Clock (3.072 Mhz) | PCM Out Mic 0 | Delay Select 0 |
| 1 | LR Clock (48Khz) | PCM Out Mic 1 | Delay Select 1 |
| 2 | PDM Input Mics 0,1 | PCM Out Mic 2 | Delay Select 2 |
| 3 | PDM Input Mics 2,3 | PCM Out Mic 3 | Delay Select 3 |
| 4 | PDM Input Mics 4,5 | PCM Out Mic 4 | Delay Select 4 |
| 5 | PDM Input Mics 6,7 | PCM Out Mic 5 | Beamformed PCM Output |
| 6 | PCM Out Mic 6 | Mic Clock | |
| 7 | PCM Out Mic 7 |