Circuit review & bench-test guide
AXS-029 — Stereo ICS-43434 I2S microphone-pair PMOD module
Document purpose#
This document explains the axs-029-stereo-mics prototype at component level and turns the design evidence into a practical manual-review and bench-test plan. It is based on the implemented schematic generator (generate_design.py), the module README, the sensor-line conventions in ../README.md, and the verified Pmod-spec notes in ../../pmod-common/PMOD-SPEC-NOTES.md.
This board is a schematic-complete prototype only. It has not been laid out, fabricated, assembled, or bench-verified. Repository status: schematic generated, ERC clean (0 errors / 0 warnings), netlist reviewed; PCB layout not started. Every numeric value below is a design target derived from the schematic and the manufacturer datasheets, not a measurement from real hardware. Datasheet figures cited here were verified against the fetched TDK InvenSense ICS-43434 datasheet (DS-000069, revision 1.0); see Section 6.
1. What the board does#
Two TDK InvenSense ICS-43434 24-bit I2S MEMS microphones share one I2S bus using slot multiplexing. The host FPGA drives SCK and WS to both microphones in parallel; each microphone drives the shared SD line only during its own hard-wired stereo slot (U1: LR pin to GND, left/WS-low slot; U2: LR pin to 3V3, right/WS-high slot) and tri-states otherwise. The module is a PMOD Type 7 (I2S) plug, 3.3 V only, host-clocked. There are no jumpers: the slot assignment is fixed by copper.
The teaching goals are stereo capture, tri-stated bus sharing, interaural delay measurement, and delay-and-sum beamforming in fabric. The layout target (not yet realized) is 10 cm microphone spacing.
Functional block diagram#
PMOD host (AruviX ECP5 rev-A or any 3.3 V Digilent-compatible socket)
|
J1 (PMOD Type 7 plug)
| pin 1 WS (LRCLK, host out) ----+---------------------+
| pin 4 SCK (BCLK, host out) ----|----+----------------|----+
| pin 3 SD (ADC data, mic out) <-+ | | |
| ^ v v v v
| R1 100R +-----------+ +-----------+
| | | U1 | | U2 |
| MIC_SD -+---------+------| ICS-43434 | | ICS-43434 |
| | | | LR = GND | | LR = 3V3 |
| R2 100k +------| SD (tri) | +----| SD (tri) |
| | | +-----------+ | +-----------+
| GND +------------------------+
| shared MIC_SD net
+-- pins 5/11 GND, pins 6/12 3V3 --> C1, C2 (100 nF at each mic)
2. Safety and scope boundaries#
- This is an unfabricated design. Nothing in this guide is evidence that an assembled board meets these targets; the first assembled article must run the full procedure in Section 9.
- 3.3 V logic only. The ICS-43434 absolute maximum supply is 3.63 V and digital pins are limited to VDD + 0.3 V; never connect a 5 V host or 5 V logic analyzer pod drive to this module.
- Do not drive SCK/WS into the module while 3.3 V is absent. The datasheet warns that clocking an unpowered ICS-43434 continuously conducts through the ESD diodes and can degrade long-term reliability.
- The microphones have bottom-facing acoustic ports. Do not poke the port hole, apply vacuum pickup over it, blow compressed air into it, or board- wash an assembled module without a port-safe process; MEMS diaphragms are mechanically fragile even though rated 10,000 g shock.
- The parts are ESD-sensitive (HBM class per datasheet ESD caution). Use a grounded mat and strap for assembly and probing.
- Keep total module draw within the PMOD guidance of roughly 100 mA (
PMOD-SPEC-NOTES.md); this design's ~1 mA budget is far inside it. - Acoustic tests below are engineering checks, not calibrated acoustic measurements. Sensitivity/SNR verification against the datasheet requires a calibrated source and anechoic conditions that a normal bench lacks.
3. Signal and power sequence#
- The host socket applies 3.3 V on J1 pins 6/12 and GND on pins 5/11. C1 and C2 provide the local decoupling the datasheet calls for (0.1 uF at the VDD pin of each microphone).
- With no clocks, both microphones idle; once SCK falls below roughly 200 kHz (or is stopped) the parts are in standby/sleep (datasheet sleep current 12 uA typical each). R2 holds the released SD bus at 0.
- The host starts SCK and WS with WS = SCK/64. Within the high-performance sample-rate window (WS 23 to 51.6 kHz) both microphones wake; output is within 1 dB of final sensitivity in at most 20 ms.
- Both microphones sample acoustics synchronously at the WS falling edge (datasheet "Synchronizing Microphones"), which is what makes the stereo pair phase-comparable.
- During the WS-low half-frame U1 drives 24-bit two's-complement data MSB-first, with the MSB delayed one SCK from the WS edge (standard I2S). SD tri-states immediately after the LSB, so U1 actively drives only SCK cycles 2-25 of its 32-cycle slot.
- During the WS-high half-frame U2 does the same. In the undriven tail of each slot (cycles 26-32) and whenever both mics are tri-stated, R2 (100 kOhm, exactly the datasheet-recommended bus pull-down) bleeds the line toward 0.
- R1 (100 Ohm) sits between the shared MIC_SD net and J1 pin 3, the sensor-line series-protection rule for every module-driven pin.
Why slot sharing works (and what would break it)#
The ICS-43434 SD pad is specified to tri-state when not actively driving its channel (t_SDD max 76 ns after the relevant SCK edge). Two outputs may therefore share one net only because their drive windows are disjoint halves of the WS frame. If both LR straps were accidentally wired to the same level, both parts would fight over the same slot: overlapping push-pull drivers, contention current on every disagreeing bit, corrupted data, and possible long-term damage. Verifying the two LR straps is therefore a first-article priority, not a formality.
4. Interfaces and pin map#
Bench contexts: either a PMOD host (AruviX ECP5 rev-A or any 3.3 V Digilent-compatible PMOD socket) driving real I2S clocks, or a bench 3.3 V current-limited supply plus DMM/oscilloscope/logic analyzer with a signal generator standing in for SCK/WS.
| J1 pin | Net | Direction | Role |
|---|---|---|---|
| 1 | WS | host to module | I2S word select (LRCLK), must be SCK/64 |
| 2 | NC | - | Type 7 DAC-data slot, unused on a mic-only module |
| 3 | SD | module to host | Shared I2S data (ADC-data slot), via R1 |
| 4 | SCK | host to module | I2S bit clock (BCLK) |
| 5, 11 | GND | - | Ground |
| 6, 12 | 3V3 | - | 3.3 V supply |
| 7-10 | NC | - | Unused |
Per PMOD-SPEC-NOTES.md, this is the corrected Type 7 mapping (1 = LRCLK, 3 = ADC data, 4 = BCLK); module pin 1 is the rightmost pin of the upper row viewed from the module top with the connector toward you.
There are no test points in the schematic. Until layout adds them, probe at the J1 pins, the R1/R2 junction (MIC_SD), and each microphone's LR pad.
5. Component-by-component review#
| Ref. | Part / datasheet summary | Function and why needed | If absent/open | If shorted, wrong, or misassembled |
|---|---|---|---|---|
| J1 | 12-pin right-angle PMOD plug (2x6, 2.54 mm) | Sole power and signal interface to the host | No function | Reversed/mis-keyed insertion can put 3.3 V on signal pins; the host-side 200 Ohm series resistors and this module's R1 limit, but do not excuse, miswiring |
| U1 | TDK InvenSense ICS-43434, 24-bit I2S MEMS mic, LR = GND | Left-slot capture; drives SD only while WS is low | No left-channel data; left slot reads 0 through R2 | LR strapped high duplicates U2's slot: bus contention, corrupted data, contention current; blocked port hole kills sensitivity |
| U2 | Same part, LR = 3V3 | Right-slot capture; drives SD only while WS is high | No right-channel data; right slot reads 0 | LR strapped low duplicates U1's slot: same contention failure |
| R1 | 100 Ohm 0603 (Yageo RC0603FR-07100RL) | Series protection on the one module-driven line, per the sensor-line rule; damps the shared-bus edge into trace/host capacitance | Miswiring or host contention couples full drive current into the mic SD pads | Wrong high value slews the bus too slowly against the 85 pF datasheet load limit and the host's setup time; short merely removes protection margin |
| R2 | 100 kOhm 0603 (Yageo RC0603FR-07100KL) | SD bus pull-down; exactly the datasheet-recommended discharge resistor so the tri-stated bus reads 0 between and after slots | Undriven bus floats: unpredictable levels in unused cycles, phantom bits, EMI pickup | Too-low value loads both mic drivers every driven bit; short to GND grounds the data line entirely |
| C1 | 100 nF 16 V X7R 0603 (Murata GRM188R71C104KA01D) | U1 VDD decoupling, the datasheet's required 0.1 uF at the VDD pin | Supply bounce during simultaneous output edges; degraded PSR (datasheet PSR is -99 dBFS with proper decoupling) | Shorted capacitor is a 3V3-GND short: board dead, possible supply damage |
| C2 | Same, at U2 | U2 VDD decoupling | Same as C1, for U2 | Same as C1 |
| #FLG01/#FLG02 | ERC power flags | Schematic-only artifacts that tell ERC 3V3/GND are driven | No physical effect; nothing to assemble | Not applicable |
ICS-43434 key datasheet parameters (verified from DS-000069 rev 1.0)#
| Parameter | Value | Bench relevance |
|---|---|---|
| Supply voltage | 1.65 to 3.63 V (abs max 3.63 V) | 3.3 V PMOD rail is in range with little headroom above |
| Supply current, high-performance mode | 490 uA typ, 550 uA max each | Module target ~1 mA total; a big excess suggests contention |
| Sleep current | 12 uA typ, 20 uA max (f_S < 3.125 kHz) | Expect tens of uA with clocks stopped |
| SCK period | 303 to 2500 ns (SCK roughly 0.4 to 3.3 MHz) | 3.072 MHz SCK / 48 kHz WS is the natural test point |
| Sample rate, high-performance mode | 23 to 51.6 kHz (low-power mode 6.25 to 18.75 kHz) | WS outside the window changes mode or sleeps the part |
| Frame format | I2S, 64 SCK per stereo frame, 24-bit two's complement, MSB-first, MSB delayed 1 SCK from the WS edge | Defines the logic-analyzer decode settings |
| SD tri-state | Tri-states immediately after the LSB; t_SDD max 76 ns; t_SDV max 75 ns; 100 kOhm pull-down recommended; max bus load 85 pF | Foundation of the shared bus; what the contention test probes |
| Sensitivity | -26 dBFS +/-1 dB at 94 dB SPL, 1 kHz | Ordinary speech should land tens of dB below full scale |
| SNR / EIN / noise floor | 64 dBA / 30 dBA SPL / -90 dBFS (A-weighted) | Silence should decode near -90 dBFS, not at 0 |
| Acoustic overload point | 120 dB SPL at 10% THD | Loud claps may legitimately near full scale |
| Wake-up time | max 20 ms to within 1 dB of final sensitivity | Discard the first ~20 ms after starting clocks |
| Digital levels | VIH min 0.7 VDD; SD VOH min 0.65 VDD | Set logic-analyzer thresholds near 1.65 V |
| Standby entry | SCK below roughly 200 kHz | A too-slow bring-up clock silently sleeps the mics |
6. Datasheet summary and design interpretation#
| Device | Key manufacturer facts used here | Board-specific interpretation |
|---|---|---|
| ICS-43434 | Verified from the fetched DS-000069 rev 1.0 datasheet PDF (also listed on the TDK InvenSense product page): pinout (1 WS, 2 LR, 3 GND, 4 SCK, 5 VDD, 6 SD), 64 SCK/frame I2S, SD tri-state behavior, 100 kOhm pull-down recommendation, 0.1 uF decoupling requirement, and the electrical/acoustic table above | The schematic follows the datasheet's own stereo application: LR straps select disjoint slots, SD pins tied together, one pull-down. The generator even patches the KiCad symbol's SD pin to tri_state so ERC models the shared bus truthfully |
| Passives | Yageo RC series resistors, Murata GRM188 capacitors (generic series data) | Commodity parts; values, not vendor limits, are what matters here |
Two documentation notes. First, the generator embeds the original invensense.tdk.com datasheet URL, which now redirects/403s; the fetched copy above is the same document number (DS-000069) at revision 1.0, while the generator names v1.2 — re-verify against v1.2 before release in case a limit moved. Second, the README/schematic note "SCK 0.5-3.6 MHz" is slightly wider than the rev 1.0 SCK-period limits (about 0.4-3.3 MHz); treat the datasheet numbers as authoritative until v1.2 is checked.
7. Expected values before bench testing#
Example clock plan used throughout: SCK = 3.072 MHz, WS = 48 kHz.
| Quantity | Design target / calculated value | What to measure |
|---|---|---|
| 3V3 rail at J1 pin 6/12 | 3.30 V nominal (mics accept 1.65-3.63 V) | DMM |
| Module supply current, both mics running | ~0.98 mA typ, 1.1 mA max (2 x datasheet HP-mode figure) | Bench supply readout / series DMM |
| Module supply current, clocks stopped | tens of uA (2 x 12-20 uA sleep) | Series DMM |
| SCK frequency | 3.072 MHz (within 0.4-3.3 MHz) | Scope/counter |
| WS frequency | 48.0 kHz, exactly SCK/64 | Scope/counter; 64 SCK per WS period |
| SD idle level (no slot driven) | 0 V via R2 | Scope on MIC_SD / J1 pin 3 |
| Left-slot data position | WS-low half; MSB one SCK after WS falling edge; bits on SCK cycles 2-25 of 32 | Logic analyzer I2S decode |
| Right-slot data position | WS-high half, same internal timing | Logic analyzer |
| Undriven slot tail | Cycles ~26-32 of each half: no active drive; slow decay through R2 into bus capacitance | Scope, look for high-impedance signature |
| Quiescent output in silence | Small codes around 0 (two's complement), roughly -90 dBFS A-weighted noise floor | FPGA capture statistics |
| 94 dB SPL, 1 kHz tone (calibrated source only) | -26 dBFS +/-1 dB | FPGA capture RMS |
| Inter-channel delay, centered source | ~0 us (both mics sample at the same WS falling edge) | Cross-correlation in fabric/offline |
| Inter-channel delay, off-axis source | ~2.9 us per mm of path difference (1/343 m/s); max ~292 us for the full 10 cm spacing endfire | Cross-correlation peak position |
| Contention current signature | None: supply flat across slot boundaries | Current probe / supply monitor |
8. Manual schematic and assembly review checklist#
- Verify J1 pin-1 orientation against
PMOD-SPEC-NOTES.mdFigure-2 rules (upper-row rightmost, square pad) before anything is powered. - Buzz U1 pin 2 (LR) to GND and U2 pin 2 (LR) to 3V3. This is the single most important continuity check on the board; a swap breaks stereo identity, and a duplicate breaks the bus.
- Buzz both U1 pin 6 and U2 pin 6 (SD) to the shared MIC_SD net, MIC_SD through R1 (100 Ohm) to J1 pin 3, and MIC_SD through R2 (100 kOhm) to GND.
- Buzz WS (J1 pin 1) to both pin 1s and SCK (J1 pin 4) to both pin 4s.
- Confirm C1/C2 sit hard against each mic's VDD pin (layout review item) and measure 3V3-GND resistance for shorts before power.
- Confirm the two acoustic port holes in the PCB are open, unplugged by paste or mask, and match the land-pattern keep-outs (layout/fab review).
- Confirm reflow followed the datasheet's microphone soldering profile and that no board wash reached the ports (assembly review).
- Confirm J1 pins 2 and 7-10 really are NC.
9. Ordered bench-test procedure#
Stop at the first abnormal result. Record captures with board serial, host/equipment IDs, thresholds, ambient noise conditions, and operator.
A. Unpowered inspection and resistance tests#
- Complete the Section 8 checklist under magnification.
- Measure 3V3-to-GND resistance in both meter polarities; investigate any hard short before power.
- Measure J1 pin 3 to GND: expect about 100.1 kOhm (R1 + R2). Grossly low readings suggest a solder bridge on the SD net.
- Verify the two LR straps one more time with the board in hand.
B. First power, no clocks (bench supply context)#
- Feed 3.3 V from a current-limited bench supply (set the limit to about 20 mA) into J1 pins 6/12 vs 5/11.
- Expect only tens of uA once settled (both mics asleep without clocks). Milliamps at this stage means a fault; stop and inspect.
- Confirm SD sits at 0 V.
C. Clock bring-up and framing capture (PMOD host or generator)#
- Attach to the PMOD host (AruviX ECP5 rev-A or any 3.3 V Digilent-compatible socket). Configure the fabric to output SCK = 3.072 MHz and WS = SCK/64 = 48 kHz, receive-only on SD.
- Confirm supply current rises to roughly 1 mA and wait 20 ms (wake-up) before trusting data.
- Scope SCK and WS: check frequency, the exact /64 ratio, and clean monotonic edges at the module (the mics tolerate 40-60% SCK duty and need rise/fall under 25 ns per the datasheet).
- Logic-analyzer capture of SCK/WS/SD, threshold ~1.65 V, I2S decode: 24-bit words, MSB one SCK after each WS edge, 32 SCK per slot, 64 per stereo frame. Verify data changes on SCK falling and is stable on SCK rising (host sampling edge).
D. L/R slot verification and SD bus-sharing checks#
- Slot ownership. Firmly cover (or gently rub a fingertip over the board area above) U1's port while playing ambient sound. The WS-low (left) words should collapse toward the noise floor while WS-high (right) words stay live. Repeat with U2 covered and confirm the mirror result. Tapping very near one mic gives the same discrimination with a sharper signature. This proves U1 owns left and U2 owns right, i.e. the LR straps match the design intent.
- Tri-state behavior. Scope SD during the tail cycles (26-32) of each half-frame: the line must show a released, slowly-decaying level toward 0 through R2, not an actively driven value. With one mic's slot silent (port covered, data near zero) its slot bits still show active drive of near-zero codes during cycles 2-25 - that is correct; only the tail is released.
- Bus contention screen. Watch supply current and the SD waveform across both WS edges. Contention shows up as current spikes aligned with slot boundaries, mushy intermediate voltage levels on SD (neither VOL nor VOH), or excessive heating of either mic. Any of these is a stop-and-fix: recheck the LR straps first.
- Confirm both slots idle to 0 within a few tail cycles; if the decay through 100 kOhm is too slow for the host's decode of the next slot's leading zero, note it - the datasheet sanctions dropping the pull-down to 10 kOhm.
E. Stereo phase and interaural-delay test (one source)#
- Place a single small sound source (phone speaker playing a 1 kHz tone, or a repeated sharp click) on the perpendicular bisector of the two microphones, equidistant from both. Capture simultaneous L/R sample streams in fabric.
- Cross-correlate L against R (an FPGA cross-correlation exercise: a few-hundred-tap sliding dot product, or export the FIFO and correlate offline). Expected peak at lag 0: both mics sample on the same WS falling edge, so an equidistant source gives in-phase channels.
- Move the source well off-axis toward one microphone. The correlation peak must shift by the acoustic path difference at roughly 2.9 us per mm (speed of sound 343 m/s); with the intended 10 cm spacing the endfire maximum is about 292 us, i.e. about 14 samples at 48 kHz.
- Check the sign convention: source nearer U1 means the left channel leads. Record lag vs angle at a few positions; this is the calibration table a delay-and-sum beamformer demo will reuse.
- Note the resolution limit honestly: at 48 kHz one sample is ~21 us, or about 7 mm of path difference, so fine angles need interpolated correlation or a higher sample rate (up to 51.6 kHz in HP mode).
F. Acoustic sanity and endurance (release-track, not first-power)#
- In a quiet room, record noise-floor statistics and compare against the -90 dBFS A-weighted target (unweighted bench numbers will read higher; log the difference rather than fail on it).
- If a calibrated 94 dB SPL source is available, verify -26 dBFS +/-1 dB sensitivity per channel; otherwise record relative L/R gain match only.
- Soak with clocks running for an extended period, monitoring current; also verify clean recovery through stop-clocks/sleep/restart cycles.
10. Troubleshooting map#
| Symptom | First measurements | Likely areas |
|---|---|---|
| No SD activity at all | 3V3 at mic pins, SCK/WS present at mic pins, WS = SCK/64 exactly | Host clocking, J1 soldering, wrong WS ratio (mics sleep), SCK below standby threshold |
| Only one slot has data | Covered-port test both ways, LR strap continuity | One dead/unsoldered mic, one blocked port, LR strap open |
| Both slots carry the same signal | LR straps, correlation of L vs R | Both LR pads wired to the same rail; contention likely - power down promptly |
| Intermediate/mushy SD levels, current spikes at WS edges | Scope SD at slot boundaries, supply current | Bus contention (LR duplication) or a solder bridge from SD to WS/SCK |
| Data decodes shifted by one bit | MSB position vs WS edge | Analyzer set to left-justified instead of I2S (MSB must lag WS edge by one SCK) |
| Random bits in the slot tail | Scope tail cycles, R2 presence | R2 open (floating bus); reduce to 10 kOhm if decay is genuinely too slow |
| Silence decodes far above the noise floor | Supply ripple, C1/C2 placement | Missing/far decoupling, supply noise (PSR), mechanical vibration coupling |
| Cross-correlation peak not at 0 when centered | Source geometry, sample alignment in fabric | Off-center source, FIFO channel misalignment (off-by-one WS), swapped channels |
| Excess current with clocks stopped | Current at pins, SCK/WS idle levels | Clocks left toggling below spec (standby not entered), leakage path, damaged mic |
11. Bench record template#
| Field | Record |
|---|---|
| Board revision / serial | |
| Assembly notes (ports inspected, reflow profile) | |
| Host / generator, analyzer, scope IDs and thresholds | |
| Ambient acoustic conditions | |
| Unpowered resistance results (3V3-GND, pin3-GND) | |
| LR strap continuity result (U1 to GND, U2 to 3V3) | |
| Sleep and running supply currents | |
| SCK/WS frequencies and ratio | |
| Framing capture reference (file/path) | |
| Slot-ownership result (cover U1 / cover U2) | |
| Tri-state and contention screen result | |
| Centered-source correlation lag | |
| Off-axis lag table (position vs us) | |
| Noise-floor / sensitivity notes | |
| Deviations, raw-file paths | |
| Reviewer / date / disposition |
12. Review conclusion#
The design is a faithful implementation of the ICS-43434 datasheet's own stereo application circuit: disjoint hard-wired LR slots, tied SD pins, the recommended 100 kOhm pull-down, the required per-mic 0.1 uF decoupling, and the sensor-line 100 Ohm series rule on the one module-driven pin. The ERC-level modeling is unusually honest (the SD pin was re-typed to tri-state so the shared bus is checked, not waived). The principal risks are all downstream of the schematic: the unstarted layout (10 cm spacing, port keep-outs, decoupling placement, bus stub lengths against the 85 pF load limit), assembly quality around the acoustic ports, first-article LR strap verification, and re-verification of clock limits against datasheet v1.2. Until a fabricated board passes Sections 9.A-9.E, every number here remains a target.