Лабораторная 3.5 — Сложность FFT и selected-bin detection¶
Эта лабораторная усиливает фундамент DSP без notebook-подхода. Это детерминированная script-driven работа, которая связывает вычислительную сложность спектрального анализа с SDR-измерениями и FPGA-архитектурой.
Цель¶
Сравнить три стратегии анализа:
| Стратегия | Когда полезна | Инженерное следствие |
|---|---|---|
| Direct DFT | Малые эталонные векторы и обучение. | Простая, но плохо масштабируется. |
| Full FFT | Spectrum display, measurement dashboard и неизвестные сигналы. | Эффективный полный спектр, но появляются требования к памяти, порядку данных и архитектуре. |
| Selected-bin detection | Известные тоны, пилоты, узкополосные проверки. | Может быть дешевле FFT, если нужны только несколько частот. |
Команда запуска¶
Из корня репозитория:
python blocks/block_03_dsp_basics/python/lab_3_5_fft_complexity.py
Или через общий reproducibility suite:
python tools/run_all_labs.py
Генерируемые артефакты¶
| Артефакт | Назначение |
|---|---|
docs/assets/lab35_dft_fft_complexity.png |
Рост вычислительных затрат Direct DFT и FFT. |
docs/assets/lab35_selected_bin_tradeoff.png |
Full-spectrum FFT против selected-bin detector. |
docs/assets/lab35_fft_complexity_metrics.json |
Машиночитаемые отношения сложности для CI и отчёта. |
Инженерные вопросы¶
- Начиная с каких размеров
Ndirect DFT становится непрактичной для SDR-анализа? - Когда оправдан полный FFT, а когда selected-bin detection?
- Как изменится выбор при FPGA streaming design?
- Какие компромиссы по памяти и latency возникают при переходе от скрипта к RTL?
Что включить в отчёт¶
- Оба сгенерированных графика.
- Отношение сложности DFT/FFT на максимальном
N. - Отношение FFT/selected-bin на максимальном
N. - Обоснование выбора метода для:
- мониторинга спектра;
- обнаружения одиночного pilot tone;
- wideband unknown-signal search;
- FPGA-реализации с ограниченными ресурсами.
Связь со следующими блоками¶
Эта лабораторная напрямую связана с:
- Block 05: ресурсы FFT и streaming architecture;
- Block 08: обнаружение pilot/synchronization;
- Block 09: анализ спектра записанных IQ;
- Block 11: measurement dashboard design.
Чего ожидать¶
DFT/FFT ratio at N=65536: 4096.0
FFT/selected-bin ratio at N=65536: 4.0
- Числа операций это нормированные модели: прямое ДПФ стоит
N^2, БПФ этоN/2 * log2(N), а вычислениеKвыбранных бинов этоK * N. - При N = 65 536 прямое ДПФ в 4096 раз дороже БПФ (
2N / log2 N). Это отношение растёт неограниченно: поэтому полный спектр прямым ДПФ никто не считает. - Четыре выбранных бина всё ещё в 4 раза дешевле полного БПФ при этом размере. Точка равенства это
K = log2(N) / 2 = 8бинов: выше неё полное БПФ выигрывает, даже если нужно лишь несколько частот. Это ровно то решение «Гёрцель или БПФ», которое принимают при обнаружении пилотов или тонов.
Упражнения¶
- Посчитайте отношение ДПФ/БПФ для N = 64, 1024 и 65 536 вручную и сверьте с графиком.
- Сколько выбранных бинов можно позволить при N = 4096, прежде чем полное БПФ станет дешевле?
- Модель не учитывает память. Потоковому БПФ нужен буфер на
Nкомплексных слов, детектору Гёрцеля: два слова на бин. Что вы выберете для обнаружения 3 известных пилотов в FPGA с малым объёмом блочной памяти и почему?
Ответы (проверены запуском скрипта лабораторной)
- При модельных стоимостях
N²иN/2·log2 Nотношение равно2N / log2 N: 21,3 при N = 64, 204,8 при 1024, 4096 при 65 536. Kвыбранных бинов стоятK·N, FFT:N/2·log2 N, поэтому точка равенства:K = log2(N)/2 = 6бинов при N = 4096. Пять бинов и меньше дешевле считать по одному.- Goertzel: трём детекторам нужно 6 слов состояния вместо буфера на 4096 слов и
3·Nумножений на блок, меньше одного FFT. При малом объёме блочной RAM и немногих известных частотах он выигрывает по обоим пунктам.