
This project is a self-contained acoustic drone detector. A one-bit PDM
microphone stream enters on ui[0]; an active-high detection signal appears on
uo[1], uo[2], and uo[3]. The complete model is fixed in the logic, with
no processor, firmware, RAM, or external weight storage.
The multiplier-free integer pipeline is:
uo[0].The shipped drone_dads_lvl12_s4 weights were trained on DADS with every clip
re-levelled across a −12…0 dB span, so the template is not tied to one
recording level. Scored with the bit-exact chip model they reach 99.15 % AUC on
the validation split and 98.98 % on the held-out test split; the seed was chosen
on validation only. The RTL subtracts the header's own feature centre
(FEAT_OFF = WW_CENTRE = 8) and asserts the equality at elaboration, and the
classifier dot product is computed exactly before the six-bit saturation --
both are fixes to the earlier drone_4 build, which ran a different model from
the one it was measured on. Hardening of this build completed in one IHP
sg13g2 1×1 tile at 93.78% final core utilization with zero DRC, LVS, antenna,
max-fanout, setup and hold violations at all three corners.

ui[0] and clock pin to
uo[0], together with the appropriate board power and ground.ui[7:1] = 7'd64, which gives the
shipped threshold of 5, the validation max-accuracy point. Detection
appears on uo[3:1].uo[7:4] for a changing band-level value to confirm that microphone
data is reaching the front end.Each trim increment changes the decision threshold by four score units. On the held-out test split the operating points were 96.6% recall / 4.4% negative clips firing at threshold 5 (trim 64), 74.8% / 1.1% at threshold 9 (trim 65) and 99.7% / 13.9% at threshold 1 (trim 63). Synthetic room tone never fires at threshold 5. These clip-level figures do not predict alarms per hour in a real deployment.
ui[0] and microphone clock from
uo[0].ui[7:1] for threshold trim.uo[1], uo[2], or uo[3].All uio pins are debug outputs: uio[3:0] is the frame index, uio[4] is
detection, uio[6:5] is the internal FSM state, and uio[7] is the microphone
tick.
The detector was evaluated on DADS clips, not long-duration recordings at a deployed site. Detection range is unknown. Rotorcraft, engines, lawn equipment, and other sustained low-frequency sounds are plausible confusers. Treat the output as a sensor indication that requires deployment-specific validation, not as an authenticated identification of an aircraft.
| # | Input | Output | Bidirectional |
|---|---|---|---|
| 0 | PDM microphone data input | PDM microphone clock (1.5625 MHz) | Frame index bit 0 |
| 1 | Threshold trim bit 0 (LSB) | Drone detected | Frame index bit 1 |
| 2 | Threshold trim bit 1 | Drone detected (mirror) | Frame index bit 2 |
| 3 | Threshold trim bit 2 | Drone detected (mirror) | Frame index bit 3 |
| 4 | Threshold trim bit 3 | Band level bit 0 | Drone detected (debug) |
| 5 | Threshold trim bit 4 | Band level bit 1 | FSM state bit 0 |
| 6 | Threshold trim bit 5 | Band level bit 2 | FSM state bit 1 |
| 7 | Threshold trim bit 6 (MSB) | Band level bit 3 | Microphone tick |