Лабораторная 11.24 — Захват WAV монитором RTL-SDR при DDS-тоне TX в stock и runtime режимах¶
Цель¶
Использовать RTL-SDR как внешний монитор для захвата одиночного тона, сформированного DDS устройства cf-ad9361-dds-core-lpc ZynqSDR, и в режиме стокового shell, и в режиме runtime-overlay, и сохранить запись WAV каждого для офлайн-проверки частотного плана.
Тоны DDS проще подтвердить, чем пакеты BPSK, потому что ожидаемый сигнал: единственный спектральный пик на известном смещении от несущей. Это делает их чистой RF-проверкой здравого смысла, которая может выполняться без какой-либо логики модема PL.
Зачем эта работа¶
После подтверждения работоспособности BPSK TX в Lab 11.21–11.22 следующий вопрос:
Ведёт ли себя тон DDS по-разному в стоковом shell и в runtime-overlay? В частности, влияет ли перезагрузка
fpga_managerв runtime на тракт тона DDS (частота, амплитуда, включение тона)?
Если тон смещается по частоте или исчезает после перезагрузки overlay, это означает, что состояние периферии DDS AD9361 неверно восстанавливается runtime-последовательностью загрузки.
Аппаратная установка¶
антенна TX1 ZynqSDR ─── (воздушный промежуток, ~1–5 м) ─── антенна RTL-SDR
DDS настроен на формирование тона на +50 кГц от LO (915 МГц). Ожидаемый пик RTL-SDR: 915,050 МГц.
Файлы¶
| Путь | Назначение |
|---|---|
blocks/block_11_integrated_sdr_project/python/lab_11_24_capture_dds_tone_rtl_monitor_wav.py |
настроить DDS, захватить WAV RTL-SDR в стоковом и/или runtime режиме, сохранить манифест |
Запуск (только стоковый shell)¶
python blocks/block_11_integrated_sdr_project/python/\
lab_11_24_capture_dds_tone_rtl_monitor_wav.py \
--mode stock \
--center-frequency-hz 915000000 \
--tone-offset-hz 50000 \
--sample-rate-hz 2400000 \
--tuner-gain-db10 200 \
--capture-duration-s 3.0 \
--wav-out datasets/lab11_24_dds_tone/stock_tone_50kHz.wav \
--manifest-out datasets/lab11_24_dds_tone/stock_manifest.yaml
Запуск (runtime режим)¶
python blocks/block_11_integrated_sdr_project/python/\
lab_11_24_capture_dds_tone_rtl_monitor_wav.py \
--mode runtime \
--bit-bin tmp/bridge_txrx_mux.wordswap.bit.bin \
--center-frequency-hz 915000000 \
--tone-offset-hz 50000 \
--sample-rate-hz 2400000 \
--tuner-gain-db10 200 \
--capture-duration-s 3.0 \
--wav-out datasets/lab11_24_dds_tone/runtime_tone_50kHz.wav \
--manifest-out datasets/lab11_24_dds_tone/runtime_manifest.yaml
Ожидаемая офлайн-проверка¶
После захвата проанализируйте оба WAV читателем Блока 9 и сравните положения пиков:
python blocks/block_09_recording_and_analysis_tools/python/lab_9_4_read_wav_iq_and_analyze.py \
--manifest datasets/lab11_24_dds_tone/stock_manifest.yaml
python blocks/block_09_recording_and_analysis_tools/python/lab_9_4_read_wav_iq_and_analyze.py \
--manifest datasets/lab11_24_dds_tone/runtime_manifest.yaml
Ожидайте пик FFT на +50 кГц от центра в обоих случаях.
Живой результат 2026-06-24¶
Тоны DDS и в стоковом shell, и в runtime-overlay были захвачены на RTL-SDR. Частота пика подтверждена на +50 кГц от 915 МГц в обоих случаях. Разница амплитуд между стоковым и runtime режимами: < 1 дБ (в пределах неопределённости измерения RTL-SDR). Тракт тона DDS не затронут перезагрузкой runtime-overlay.
Это подтверждает, что периферия DDS AD9361 корректно восстанавливается runtime-последовательностью загрузки и что любая оставшаяся проблема запуска ограничена трактом PL BPSK RX.
Последующее исправление (Лабораторная 11.26). Измерения тона выше верны, но вывод о том, что сломанным остался только тракт PL RX: нет. DDS-тон идёт по пути DDS → ЦАП; поток PL BPSK нужно отдельно переключить на ЦАП, а после перезагрузки оверлея этого не происходило (режим DDS-only). Именно исправный DDS-тон и создавал впечатление, что тракт PL TX исправен. См. Лабораторную 11.26.
Чек-лист отчёта¶
- Приложен манифест WAV для захвата в стоковом shell.
- Приложен манифест WAV для runtime-захвата.
- Записано положение пика FFT в каждом режиме.
- Записана разница амплитуд пика между режимами.
- Указано, затронут ли тракт тона DDS перезагрузкой overlay.
Шаблон инженерного вывода¶
Тон DDS на +____ кГц от ____ МГц захвачен RTL-SDR и в стоковом shell, и в runtime-overlay.
Пик в стоковом shell: ____ кГц (смещение от LO). Пик в runtime: ____ кГц. Разница амплитуд:
____ дБ. Тракт тона DDS затронут / не затронут перезагрузкой runtime fpga_manager, потому что ______.