Перейти к содержанию

Лабораторная 11.25 — Внешняя развёртка видимости DDS-тона на RTL-SDR: stock и runtime

Цель

Количественно сравнить видимость тона DDS на внешнем мониторе RTL-SDR при нескольких частотах смещения тона, значениях ослабления TX и режимах работы (стоковый shell, runtime-overlay, runtime с bridge_txrx_mux).

Эта работа сводит однопозиционные наблюдения DDS из Lab 11.24 в воспроизводимую развёртку, которую можно закоммитить как эталонный артефакт доказательств.

Конструкция развёртки

Для каждой комбинации:

  • смещение тона в Гц (по умолчанию: 50 000, 200 000, 700 000);
  • ослабление TX в дБ (по умолчанию: -40 дБ);
  • режим (по умолчанию: stock, runtime, runtime_bridge);

скрипт:

  1. настраивает соответствующий режим TX (DDS стокового shell или DDS runtime-overlay);
  2. задаёт смещение и масштаб тона DDS;
  3. захватывает короткий WAV RTL-SDR;
  4. выполняет офлайн-анализ FFT (через читатель Блока 9);
  5. записывает частоту пика, амплитуду пика и шумовую полку.

Результаты собираются в одну сравнительную таблицу JSON.

Файлы

Путь Назначение
blocks/block_11_integrated_sdr_project/python/lab_11_25_stock_vs_runtime_dds_tone_sweep.py многорежимная развёртка тона DDS, сравнительная таблица JSON

Запуск

python blocks/block_11_integrated_sdr_project/python/\
lab_11_25_stock_vs_runtime_dds_tone_sweep.py \
  --center-frequency-hz 915000000 \
  --sample-rate-hz 3840000 \
  --tone-offsets-hz "50000,200000,700000" \
  --tx-attenuation-db -40 \
  --modes stock,runtime,runtime_bridge \
  --bit-bin tmp/bridge_txrx_mux.wordswap.bit.bin \
  --json-out docs/assets/lab1125_stock_vs_runtime_dds_tone_sweep.json

Ожидаемая структура JSON

{
  "sweep_id": "...",
  "timestamp_utc": "...",
  "points": [
    {
      "mode": "stock",
      "tone_offset_hz": 50000,
      "tx_attenuation_db": -40.0,
      "measured_peak_hz": 49980,
      "peak_amplitude_db": -32.1,
      "noise_floor_db": -71.3,
      "snr_db": 39.2
    },
    ...
  ]
}

Критерии успеха

Критерий Цель
Тон обнаружен во всех режимах да
Ошибка смещения пика < 5 кГц
SNR > 20 дБ при ослаблении TX -40 дБ
Разница амплитуд stock и runtime < 3 дБ

Живой результат 2026-06-24

Все три смещения тона (50 кГц, 200 кГц, 700 кГц) были обнаружены во всех трёх режимах. Разница амплитуд stock и runtime составила < 1 дБ для всех тонов. Ошибка смещения пика была < 1 кГц во всех точках (ограничена точностью частоты RTL-SDR, а не точностью DDS).

Эта развёртка это итоговое внешнее RF-доказательство того, что:

  1. цепь ZynqSDR DDS → AD9361 → антенна TX исправна и в стоковом, и в runtime режиме;
  2. перезагрузка runtime fpga_manager не нарушает выход тона DDS;
  3. оставшаяся проблема запуска изолирована во входном тракте PL RX.

Последующее исправление (Лабораторная 11.26). Измерения тона выше верны, но вывод о том, что сломанным остался только тракт PL RX: нет. DDS-тон идёт по пути DDS → ЦАП; поток PL BPSK нужно отдельно переключить на ЦАП, а после перезагрузки оверлея этого не происходило (режим DDS-only). Именно исправный DDS-тон и создавал впечатление, что тракт PL TX исправен. См. Лабораторную 11.26.

Артефакт развёртки: эталонное доказательство для работы с контролируемым тоном DDS, закоммиченное в git как e355c14.

Чек-лист отчёта

  • Приложен JSON-файл развёртки.
  • Подтверждено, что все смещения тона обнаружены во всех режимах.
  • Записаны ошибка смещения пика и SNR для каждой точки.
  • Записана разница амплитуд между стоковым и runtime режимами.
  • Указан итоговый вывод об изоляции (тракт TX или тракт RX).

Шаблон инженерного вывода

Развёртка тона DDS охватила смещения ____ Гц, ослабление TX ____ дБ, режимы ____.
Обнаружение тона: успешно ____ из ____ точек. Диапазон ошибки смещения пика: от ____ Гц
до ____ Гц. Диапазон SNR: от ____ дБ до ____ дБ. Разница амплитуд stock и runtime: максимум
____ дБ. Путь DDS-тона исправен / неисправен в обоих режимах.
Этот тест покрывает / не покрывает путь данных PL к ЦАП, потому что ______.