Lab059: establish limits of preamble-only carrier estimation

This commit is contained in:
LittleSam129
2026-09-11 13:08:32 +03:00
parent 82f17499ac
commit e16ec23fdb
16 changed files with 5632 additions and 0 deletions

View File

@@ -0,0 +1,78 @@
# Lab059 — границы и заранее зафиксированный план
## Цель
Lab059 проверяет только по сохранённым данным, достаточно ли 1280-символьной
преамбулы для оценки остаточного частотного сдвига на весь burst длительностью
около 0,2048 с. Штатный приёмник, формат пакета, преамбула, RRC, FEC и CRC не
изменяются. Оборудование не опрашивается, аппаратные команды не выполняются,
RF TX = 0.
Исходный HEAD после отдельной фиксации Lab058:
`82f17499ace5e655991240348401b9700c7c3349`.
## Зафиксированные методы
- **P0 CURRENT.** Дословно воспроизводится активная ветвь штатного приёмника:
первые 1024 символа возводятся в квадрат, делятся на два блока по 512,
частота определяется по разности фаз центров блоков с делением на `4*pi`.
Последние 256 символов преамбулы в оценке частоты не участвуют.
- **P1 FULL PREAMBLE PHASE SLOPE.** Известные BPSK-знаки удаляются на всей
преамбуле. Фазы когерентных 20-символьных блоков аппроксимируются линейной
моделью с заранее заданными Huber-весами.
- **P2 SPLIT PREAMBLE.** TRAIN заранее фиксирован как индексы 32…607,
VALIDATION — 672…1247. Между ними оставлен разрыв 64 символа; по 32 символа
у начала и конца преамбулы не используются. Частота и фаза оцениваются только
по TRAIN, а VALIDATION проверяет экстраполяцию без переоценки.
- **P3 SQUARED FULL PREAMBLE.** Все 1280 символов возводятся в квадрат,
фаза 20-символьных блоков аппроксимируется той же устойчивой моделью,
частотный наклон делится на два из-за удвоения фазы BPSK.
P0 сохраняет точную активную ветвь, включая штатное удаление среднего DC по
всему переданному в неё фрагменту: это часть воспроизводимого baseline, а не
новое решение. Для P1 и P3 удаление DC и RRC-фильтрация ограничены RAW-опорой
полной преамбулы; для P2 — RAW-опорой только TRAIN. Поэтому полезная часть RAW
не влияет на вход новых оценивателей. Все методы получают Fs, Rs, RRC,
номинальную несущую и уже найденное начало кандидата. Для изоляции carrier
recovery timing остаётся штатным P0 и не подбирается отдельно по методу.
Начальная фаза относится к `t=0`; центр символа `k` расположен в
`(k+0.5)/Rs`.
Header, payload, magic, FEC и CRC не участвуют в оценке. Известные переданные
биты подключаются только после заморозки параметров для подсчёта ошибок, EVM и
matched/residual. Диагностическая оценка по всему burst служит только внешней
справочной величиной после расчёта preamble-only оценки.
## Baseline и реальные данные
До сравнения P1–P3 программа отдельно сохраняет P0 baseline для Lab056
A1/B1/A2/B2, 16 кадров Lab054 и 36 ранее принятых кадров Lab047. Lab047 служит
положительным контролем. Исторический результат Lab054 остаётся `NOT_A, 0/16`.
Сохранённые raw-файлы открываются только для чтения; их SHA-256 проверяются до и
после расчёта.
## Synthetic Monte Carlo
Фиксированные частоты: `0, ±0.25, ±0.5, ±1, ±2, ±5, ±10, ±20, ±100 Гц`.
Проверяются 20 и 500 ксимв/с, Fs = 8 Мвыб/с, действующие RRC и преамбула 1280
символов. Чистые точки решения формируются реальным TX/RX RRC-трактом, после
чего добавляется воспроизводимый комплексный гауссов шум на символьном выходе.
Уровни EVM заранее фиксированы: 0,317390 (качество A Lab058), 0,55 и 0,845350
(среднее физическое качество B Lab058). Последний уровень не подгоняется по
исходу оценивателя.
Для каждой комбинации используются 300 реализаций и фиксированная схема seed.
Катастрофическая ошибка заранее определена как `|frequency error| > 1/(2T)`,
то есть фазовый уход более 180° за `T = 0,2048 с`; порог равен 2,44140625 Гц.
Публикуются bias, RMSE, median/P95/P99 абсолютной ошибки, катастрофическая доля
и вероятности ошибки не более 0,25/0,5/1,0 Гц.
## Критерий вывода
`PREAMBLE_ONLY_SUFFICIENT` требует одновременно приблизить Lab056 B к
диагностическому результату, устойчиво пройти Monte Carlo, не ухудшить Lab056 A
и сохранить положительный контроль Lab047. Нестабильная субгерцовая точность
даёт `PREAMBLE_ONLY_MARGINAL`; принципиально недостаточная стабильность на
качестве B даёт `PREAMBLE_ONLY_INSUFFICIENT`.
Lab059 не коммитируется. Push не выполняется. Lab060 автоматически не создаётся.