Lab 8.21 — CSS dechirp and FFT detector¶
Lab 8.21 — CSS dechirp and FFT detector¶
Goal¶
Turn the waveform from Lab 8.20 into a reproducible symbol detector and quantify its limits:
- build a complete symbol bank for the selected spreading factor;
- derive the noiseless symbol-to-FFT-bin mapping;
- detect random symbols after dechirping;
- measure symbol error rate (SER) versus SNR;
- measure sensitivity to carrier-frequency offset (CFO);
- report peak-to-second-peak separation as a detector confidence metric.
Detector structure¶
flowchart LR
RX[received CSS symbol] --> MIX[dechirp with conjugate reference]
REF[reference upchirp] --> MIX
MIX --> FFT[FFT]
FFT --> ARGMAX[maximum-magnitude bin]
ARGMAX --> MAP[inverse bin-to-symbol mapping]
MAP --> OUT[detected symbol]
Run¶
python blocks/block_08_modulation_and_synchronization/python/lab_8_21_css_dechirp_fft.py
Generated artifacts¶
docs/assets/lab821_css_ser_vs_snr.png
docs/assets/lab821_css_ser_vs_cfo.png
docs/assets/lab821_css_example_fft.png
docs/assets/lab821_css_detector_metrics.json
Default experiment¶
- spreading factor:
SF=7; - bandwidth:
125 kHz; - 800 random symbols per sweep point;
- SNR sweep:
-18 ... 0 dB; - normalized CFO sweep:
-0.45 ... +0.45FFT-bin spacings.
The normalized CFO axis is useful because one FFT-bin spacing equals BW / 2^SF. It makes the experiment portable across bandwidth and spreading-factor choices.
Acceptance criteria¶
The executable lab checks or exposes enough data to verify that:
- the noiseless symbol-to-bin mapping is a permutation;
- the example symbol is detected correctly;
- SER at 0 dB is zero for the deterministic default seed;
- the lowest-SNR point has a clearly nonzero SER;
- fractional-bin CFO degrades the detector before the FFT peak crosses into a neighbouring bin.
Why SER, not only SNR¶
A spectrum or SNR estimate does not prove that a digital link works. This lab therefore reports the actual symbol decisions. The same principle should later be extended to BER, packet error rate (PER), missed detections and false alarms.
Follow-on work¶
The next packet-level CSS laboratory should add:
- a repeated-chirp preamble;
- packet-start detection;
- coarse and fine CFO estimation;
- sample-rate offset;
- sync-word and downchirp handling;
- BER/PER and false-alarm measurements.
Report checklist¶
- [ ] Include the SER-versus-SNR curve.
- [ ] Include the normalized-CFO sensitivity curve.
- [ ] Include one dechirped FFT example.
- [ ] State the number of compared symbols at every point.
- [ ] Explain why peak-to-second-peak ratio is useful but does not replace SER/PER.