We used an ADAU1772 to create a simple microphone beamforming application, with two omnidirectional ADMP504 MEMS microphones mounted in an endfire configuration.
While the ADAU1772 has no delay cells in its library, you can still create delay by using IIR filters and manually setting the coefficients to create delay paths. Setting coefficient B2 to 1 (and all other coefficients set to 0) creates a delay path of 2 samples, whereas setting coefficient B1 to 1 (and all other coefficients set to 0) creates a delay path of 1 sample.
Using the attached Excel sheet to perform the calculations, we calculated that a total of 12 IIR filters are required to generate a delay appropriate for a microphone spacing of 42 mm.
|Distance between microphones (mm)||42|
|Speed of sound (mm per sample @ 48 kHz)||7|
|Speed of sound (mm per sample @ 192 kHz)||1.75|
|Samples to cover microphone distance @ 192 kHz||24|
|IIR Filters with B2 = 1 required to produce delay||12|
The following project was created to realize the signal flow. The first 11 filters have IIR coefficients set with B2=1 and all other coefficients set to 0.
The very last filter serves as a delay and an inverter, with B2 set to -1 instead of 1.