Лабораторная 11.28 — Runtime QPSK через внешний RTL-SDR¶
Цель¶
Передать детерминированный кадр QPSK из PL двойного модема через AD9361/TX1, записать его независимым RTL-SDR и измерить BER, EVM, остаточный сдвиг частоты и ограничение относительно точного содержимого RTL ROM.
Команды¶
Используйте маломощный антенный тракт или рассчитанный ослабленный кабельный тракт. Измеренный антенный прогон использовал:
python blocks/block_11_integrated_sdr_project/python/lab_11_22_capture_runtime_pl_rtl_monitor_wav.py `
--modulation qpsk `
--bit-bin-path tmp/bridge_txrx_mux.qpsk.cdcfix_20260707.wordswap.bit.bin `
--center-frequency-hz 868300000 `
--tx-attenuation-db -50 `
--rtl-tuner-gain-db10 300 `
--start-offset 62 `
--qpsk-symbol-count 140 `
--runtime-repeat-count 30 `
--runtime-repeat-gap-ms 40 `
--rebind-runtime-dds-driver `
--rebind-runtime-adc-driver `
--runtime-dds-ratecntrl 3
Проанализируйте созданный манифест:
python blocks/block_11_integrated_sdr_project/python/lab_11_28_read_rtl_wav_ota_qpsk.py `
--manifest datasets/lab11_22_runtime_pl_rtl_monitor/manifest_live_20260707_qpsk_ota_cdcfix_02.yaml
Расчёт метрик¶
Анализатор использует точный QPSK RTL ROM в качестве эталона. Он убирает одну глобальную оценку DC, обнаруживает энергию пакета по порогу медиана/MAD, применяет согласованный фильтр RRC и требует нормированную корреляцию с эталоном >= 0,8. Затем он оценивает CFO по линейному наклону фазы rx * conj(reference), убирает один комплексный коэффициент усиления/фазы и принимает решения по знакам I/Q.
Эти метрики получены с опорой на эталон. Наклон CFO и коэффициент усиления/фазы подгоняются по всему известному кадру из 140 символов, а из кандидатов (фазы отсчёта и пики корреляции) анализатор оставляет тот, у которого меньше всего битовых ошибок. Приёмник не может сделать ни того, ни другого: полезная нагрузка ему неизвестна. Поэтому эти числа: верхняя граница качества линии, а не BER приёмника.
С 2026-09-24 анализатор для каждого пакета печатает также оценку приёмника: кандидат выбирается только по корреляции с синхрословом, CFO/фаза/усиление берутся только из 16 синхросимволов, фазу на полезной нагрузке отслеживает PLL по решениям, а BER считается по 124 символам полезной нагрузки (248 бит). В таблицах ниже приведены обе оценки.
Точные формулы BER, FER, EVM, SNR по EVM, CFO, ограничения и доверительных интервалов определены на странице Расчёт метрик цифрового канала. В частности, snr_from_evm_db = -20 log10(EVM_RMS): диагностическая оценка при доминировании шума, а не калиброванный RF SNR.
Измеренный результат по нескольким пакетам: 2026-07-07¶
| Метрика | прогон -55 дБ | прогон -50 дБ |
|---|---|---|
| Заданные / обнаруженные пакеты | 40 / 40 | 30 / 30 |
| Пакеты с BER=0 | 23 / 40 | 30 / 30 |
| Доля ошибочных кадров | 42,5 % | 0 % |
| Сравнено бит / битовых ошибок | 11 200 / 18 | 8 400 / 0 |
| Оценка приёмника: пакетов с BER=0 | 18 / 40 | 30 / 30 |
| Оценка приёмника: бит нагрузки / битовых ошибок | 9 920 / 39 | 7 440 / 0 |
| Оценка приёмника: общий BER (Уилсон 95 %) | 3,93e-3 (2,88e-3…5,37e-3) | 0 |
| Суммарный BER | 1,607143e-3 | 0 |
| Медианный EVM RMS | 35,684 % | 21,317 % |
| Медианный SNR по EVM | 8,95 дБ | 13,43 дБ |
| Медианный остаточный сдвиг частоты | +1963,9 Гц | +1963,6 Гц |
| Медианная нормированная корреляция | 0,940 | 0,975 |
| Доля ограничения | 0 | 0 |
При -50 дБ 95-процентный интервал Уилсона для доли пакетов без ошибок: 88,65 %…100 %. При нуле ошибок на 8 400 сравнённых битах верхняя граница по правилу трёх: BER < 3,571429e-4; это граница по размеру выборки, а не измеренный пол BER.
При -50 дБ обе оценки совпадают. При -55 дБ оценка приёмника находит более чем вдвое больше ошибок, чем оценка с опорой на эталон (39 битовых ошибок на меньшем числе бит и 18 чистых пакетов вместо 23): вблизи предела по шуму подгонка фазы по известной нагрузке скрывает ошибки, которые делает реальный приёмник.
Графики, файлы доказательств и ограничения см. в reports/hardware/qpsk-rtl-sdr-qualification-20260707.md.
Квалификация между сессиями: 2026-07-07¶
Три дополнительные независимые сессии stock→runtime→stock использовали ту же нагрузку и рабочую точку -50 дБ. В каждой сессии задавалось 30 пакетов.
| Сессия | Обнаружено / задано | Пакеты BER=0 | Битовых ошибок / сравнено бит | Медианный EVM | Медианный CFO | Безопасная перезагрузка в stock |
|---|---|---|---|---|---|---|
| 01 | 30 / 30 | 30 / 30 | 0 / 8 400 | 18,396 % | +1964,1 Гц | да |
| 02 | 30 / 30 | 30 / 30 | 0 / 8 400 | 19,013 % | +1975,1 Гц | да |
| 03 | 30 / 30 | 30 / 30 | 0 / 8 400 | 19,728 % | +1966,1 Гц | да |
| Вместе | 90 / 90 | 90 / 90 | 0 / 25 200 | 19,038 % по кадрам | +1968,7 Гц по кадрам | 3 / 3 |
Число бит в этой таблице: оценка с опорой на эталон. Оценка приёмника (синхрослово + PLL, только нагрузка) тоже даёт 30 / 30 чистых пакетов и 0 битовых ошибок в каждой сессии: суммарно 0 / 22 320 бит нагрузки, граница по правилу трёх BER < 1,344e-4.
Совокупный 95-процентный интервал Уилсона для доли пакетов без ошибок: 95,91 %…100 %. Граница BER по правилу трёх при нуле ошибок: BER < 1,190476e-4. Интервал успеха по сессиям составляет лишь 43,85 %…100 %, потому что три сессии: всё ещё малая выборка на уровне сессий.
Пересоберите агрегат командой:
python tools/aggregate_lab11_28_sessions.py `
"docs/assets/lab1128_lab11_22_runtime_pl_rtl_monitor_live_20260707_qpsk_ota_crosssession_*_metrics.json" `
--json-out docs/assets/lab1128_qpsk_ota_crosssession_qualification_20260707.json `
--plot-out docs/assets/lab1128_qpsk_ota_crosssession_summary_20260707.png
Для калиброванных заявлений о бюджете линии и долговременной надёжности по-прежнему необходимы контролируемый кабельный прогон и большее число независимых сессий.