Examples¶
Worked examples across every doppler subsystem — each one a runnable script
under src/doppler/examples/,
grouped below by DSP domain. Most pages render a figure; run make gallery
to regenerate every image, or run a single script directly (each page lists
its command under Reproduce / Run it).
C programs calling the library directly live on the C examples page; the end-to-end ZMQ pipeline is on the Streaming page.
Sources & Waveforms¶
- Waveform Generator — tone / PN / QPSK / BPSK from one declarative
Synth. - Symbols: bring your own constellation — pi/4-QPSK and 16-QAM from an arbitrary complex stream.
- Waveform Scenes — sum, add, headroom; a SoI under a CW interferer over one noise floor.
- Waveform I/O — one capture written to raw / CSV / BLUE / SigMF and read back.
- Waveform JSON Round-Trip —
--recorda scene to JSON and replay it byte-identically. - Waveform Write — the shortest path from a
Composerto a file and back. - WCDMA Carriers — four RRC channels measured with
PSDandAccTrace. - AWGN — complex Box-Muller noise, amplitude histogram, and flat PSD.
- LO — complex phasor generator with FM control and phase continuity.
- NCO — raw uint32 phase accumulator with overflow carry and fixed-point scaling.
Filters & Resampling¶
- CIC Decimation — wideband IQ → CIC → narrowband slice; ~90 dB alias rejection.
- RateConverter — automatic CIC / halfband / polyphase cascade for any rate ratio.
- Farrow Interpolator — fractional-delay resampling.
- HBDecimQ15 — fixed-point Q15 halfband 2:1 decimator for interleaved IQ int16.
Down-Conversion (DDC)¶
- Functional DDCR — real passband in, complex baseband out, caller-owned buffer, thread-per-shard scaling.
Detection & Acquisition¶
- Correlation — coherent integration, 2-D template matching, streaming CFAR.
- Detection Curves — Pd vs SNR and dwell from closed-form Marcum Q.
- Monte Carlo — 30,000-trial validation of the Marcum Q curves.
- 2-D Acquisition — GPS/CDMA Doppler × code-phase search with Bonferroni-corrected CFAR.
- DSSS Acquisition & Despreading — burst acquisition into a streaming despreader.
- DSSS Acquisition: Pd/Pfa — detection characterisation curves.
- Streaming Async Despreader —
Dll(segments)PN-epoch despreader.
Synchronization Loops¶
- Carrier Loop Stress — Costas loop pull-in under noise.
- Costas Loop (theory) — loop-filter design and steady-state behaviour.
- Code Loop Tracking — delay-locked loop code tracking.
- DLL Code Loop (theory) — discriminator and loop-filter derivation.
- Symbol Timing Recovery — timing-error-detector-driven resampling.
- Timing Loop (theory) — the timing loop's transfer function.
- M-PSK Carrier Loop (theory) — decision-directed carrier recovery.
- NDA Carrier Loop (theory) — non-data-aided carrier recovery.
- Tracking Channel — a combined carrier + code tracking channel.
Constellations & Receivers¶
- M-PSK Constellation — M-PSK mapping and constellation rendering.
- M-PSK Receiver — integrated carrier + timing + bit recovery.
Measurement¶
- Measurement Suite — SNR / SINAD / THD / SFDR / ENOB from
ToneMeasure. - Measurement Suite: IMD & NPR — two-tone IMD/IM3, TOI, and notched-noise NPR.
Quantization & Fixed-Point¶
- ADC Quantisation — staircase resolution and noise floor across 3–8 bits.
- Q15 vs UQ15 — bipolar vs offset-binary encodings of the same Q15 step.
- cvt Quantization — the three cvt formats overlaid at identical noise floor.
Gain Control¶
- AGC — closed-loop power controller with decimated and per-sample loop updates.
Fundamentals¶
- FFT — per-instance 1-D and 2-D FFT with plan reuse.
- Ring Buffers — double-mapped lock-free ring buffers for producer/consumer pipelines.
- C examples — minimal C99 programs calling the library directly.
- Streaming — ZMQ-based signal streaming end-to-end.