Files
SDR-Rover/docs/lab059_current_state.md

6.5 KiB
Raw Blame History

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 автоматически не создаётся.