124 lines
10 KiB
Markdown
124 lines
10 KiB
Markdown
# Lab057 — диагностика ошибок символов и заголовка Lab054
|
||
|
||
## Дата
|
||
|
||
10 сентября 2026 года.
|
||
|
||
## Зафиксированная постановка до расчёта альтернатив
|
||
|
||
Работа согласована пользователем: только сохранённые IQ, RF TX = 0,
|
||
без обращения к оборудованию, изменения штатного PHY, коммита и push.
|
||
Исторический Lab054 остаётся NOT_A, 0/16.
|
||
|
||
Исходный HEAD: `92477a4632d2172578c859afd823e6d3b39f42a6`.
|
||
Исходные status/diff, версии пакетов, размеры и SHA256 исходников и данных
|
||
сохранены в `data/processed/lab057/initial_state.json` и
|
||
`initial_worktree.diff`. Прежние изменения Lab054 не принадлежат Lab057.
|
||
|
||
Карта изменений: новые `experiments/lab057_symbol_diagnosis.py`,
|
||
`tests/test_lab057_symbol_diagnosis.py`, документы и результаты Lab057;
|
||
после проверки — только новая запись журнала и новый раздел индекса.
|
||
Штатные анализаторы Lab043–Lab056 и `protocol/` не редактируются.
|
||
|
||
### Разделение преамбулы
|
||
|
||
Индексы символов нулевые, интервалы полуоткрытые:
|
||
|
||
- TRAIN = `[32, 608)`, 576 символов;
|
||
- VALIDATION = `[672, 1248)`, 576 символов;
|
||
- `[608, 672)` — защитный промежуток 64 символа;
|
||
- крайние участки преамбулы исключены из обучения и проверки.
|
||
|
||
RRC TX/RX имеет span 10 символов каждый. Защитный промежуток превышает
|
||
суммарную память 20 символов, локальный сдвиг 0,5 символа и поддержку
|
||
интерполяции ±8 исходных отсчётов. Заголовок начинается с символа 1280.
|
||
Все альтернативные CFO/фазы оцениваются только на TRAIN. Baseline использует
|
||
всю преамбулу, как исторически. D0/D1/D2 наследуют штатный timing, который
|
||
также видел всю преамбулу: их VALIDATION скрыта от новой оценки CFO/фазы,
|
||
но не от унаследованной оценки timing. D3 оценивает timing только на TRAIN
|
||
около заранее известного начала кадра. Это диагностика при известном начале,
|
||
а не новый независимый поиск.
|
||
|
||
Дополнительно D0 наследует штатный CFO, который тоже использовал VALIDATION.
|
||
Для D0 скрыт только участок от новой оценки комплексного h; для D1/D2 —
|
||
от новой оценки CFO/h, при сохранённом штатном timing.
|
||
|
||
### Неизменные варианты
|
||
|
||
- S0: исходный строгий путь и штатная нормировка.
|
||
- D0: штатный timing/CFO; комплексный коэффициент по TRAIN.
|
||
- D1: тот же timing; остаточный CFO = 0; тот же коэффициент по TRAIN.
|
||
- D2: тот же timing; максимум корреляции после снятия PRBS7 на TRAIN.
|
||
- D3: как D2; совместный поиск timing/CFO только на TRAIN.
|
||
|
||
Для 500K частотная сетка `[-250, +250]` Гц с шагом 1 Гц; после сетки
|
||
одно параболическое уточнение внутреннего максимума, ограниченное ±0,5 шага.
|
||
Диапазон покрывает ранее зарегистрированные штатные оценки −217…+182 Гц
|
||
и область однозначности штатной ветви ±244,140625 Гц. Для 20K положительного
|
||
контроля сохраняется тот же диапазон в циклах на символ: ±10 Гц, шаг 0,04 Гц;
|
||
штатная область однозначности там ±9,765625 Гц. Граничный максимум явно
|
||
помечается; диапазон автоматически не расширяется.
|
||
|
||
D3: timing в пределах ±0,5 символа относительно известного начала,
|
||
шаг 1/32 символа; оконная sinc-интерполяция с полуопорой 8 отсчётов.
|
||
Критерий выбора — нормированная энергия корреляции TRAIN, без заголовка,
|
||
VALIDATION, payload и CRC. Частота/фаза используют одну шкалу
|
||
`t[k] = (k + 0.5) / Rs`; постоянная фаза задана при t = 0 этой шкалы.
|
||
Снятие цифровой несущей +50 кГц сохраняется во всех вариантах.
|
||
|
||
Положительные контроли: все 16 кадров сохранённого TX Lab054 и все 36
|
||
принятых кадров сохранённого RX Lab047. Отрицательный контроль: 16
|
||
фиксированных окон RX Lab054 вне передачи, начиная с 8 000 000 отсчётов,
|
||
с шагом 100 000 отсчётов. Контроль не является самостоятельным поиском пакетов.
|
||
Синтетика: фиксированные seed, фаза, остаточный CFO и дробная задержка;
|
||
сравнение скоростей при одинаковом Es/N0, а не одинаковой мощности и N0.
|
||
|
||
Никакой вариант не выбирается по CRC для отдельного кадра. При естественно
|
||
валидном заголовке длина берётся только из него, затем вызывается существующий
|
||
строгий декодер тела. Успешные диагностические пакеты сохраняются отдельно.
|
||
|
||
### Исправление изоляции TRAIN до итогового расчёта
|
||
|
||
Verifier воспроизвёл утечку через штатное вычитание среднего всего probe:
|
||
изменение сырого VALIDATION влияло на вход оценивателя TRAIN. В штатном S0
|
||
это историческое поведение сохраняется. Для оценивания D0–D3 используется
|
||
короткая свёртка только сырой опоры TRAIN с её собственным средним, теми же
|
||
RRC-коэффициентами, нормировкой и снятием +50 кГц. Опора определяется как
|
||
`[nominal + 32*SPS - (len(taps)-1) - margin,
|
||
nominal + 607*SPS + margin + 1)`, `margin=ceil(SPS/2)+8`.
|
||
При 500K это `[752,10145)`, при 20K `[18992,253409)`.
|
||
Вне этой опоры IQ не участвует даже в FFT-свёртке оценивателя.
|
||
|
||
**Сами решения символов во всех вариантах используют один прежний штатный
|
||
фильтр с глобальным DC mean.** Локальная подготовка применяется только для
|
||
оценки параметров. Поэтому S0→D0 меняет комплексную фазовую нормировку,
|
||
сохраняя штатные timing/CFO и символы до нормировки. Вычисляемый остаток
|
||
относится к штатному выходу RRC, а не к локально центрированному TRAIN.
|
||
Скрытая VALIDATION означает отсутствие её участия в новых параметрах;
|
||
штатная предобработка выходных символов по-прежнему использует весь probe.
|
||
Диапазоны поиска и разделение преамбулы после находки не изменялись.
|
||
|
||
Остаток включает также рассогласование TRAIN-only DC подготовки оценивателя
|
||
и глобальной DC подготовки выхода. Он не объявляется чистым шумом или
|
||
исключительно ошибкой частотной компенсации.
|
||
|
||
## Итог выполненной Lab057
|
||
|
||
Полный независимый baseline воспроизведён: 100 прежних кандидатов в том же
|
||
порядке, 100 PHY_HEADER_MAGIC_MISMATCH, 0/16, FEC/CRC NOT_REACHED.
|
||
Ошибки VALIDATION S0/D0/D1/D2/D3: 3494/3775/3355/3440/3466 из 9216.
|
||
Все варианты дают 0/16 заголовков и пакетов. Вклад компенсации частоты
|
||
ограниченно подтверждён; дополнительный timing устойчивого улучшения не дал.
|
||
TX054: все варианты 16/16; RX047: все 36/36; отрицательный контроль 0/16.
|
||
|
||
19 новых тестов, полный pytest **886 passed, 0 failed**; quick_gate
|
||
**886/31/13 PASS**, diff check PASS. Verifier подтвердил числа, сохранность,
|
||
контроли, закрытие утечки и корректность ограничений отчёта.
|
||
|
||
[Итоговый отчёт](lab057_offline_result.md),
|
||
[машинная приёмка](../data/processed/lab057/acceptance.json),
|
||
[манифест артефактов](../data/processed/lab057/artifact_manifest.json).
|
||
Журнал: новая запись 051. Прежние изменения Lab054 сохранены.
|
||
HEAD остаётся `92477a4632d2172578c859afd823e6d3b39f42a6`.
|
||
RF TX=0; COMMIT/PUSH NOT PERFORMED. STOP; следующий анализ не запускался.
|