Files
SDR-Rover/docs/lab060_offline_result.md
2026-09-11 14:13:51 +03:00

187 lines
15 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Lab060 — сопровождение несущей по решениям приёмника
## Что получилось простыми словами
Оценка P3 из Lab059 хорошо задаёт начальные частоту и фазу, но после преамбулы
перестаёт наблюдать сигнал. T0 поэтому лишь продолжает начальную прямую через
весь пакет. T1 после каждого принятого BPSK-символа сам решает, был передан
`+1` или `−1`, и по ошибке этого решения слегка поправляет фазу. T2 тем же
способом поправляет и фазу, и скорость её изменения, то есть остаточную ошибку
частоты.
На сохранённой записи Lab056 исходный T0 уже был близок к физически достижимому
результату: средняя доля ошибочных символов B равнялась 3,616990%. T1 снизил её
до 3,509691%, T2 — до 3,501780%. Основная польза сопровождения проявилась в
заранее отделённой синтетической проверке устойчивости: при качестве Lab056 B
и начальной ошибке частоты от −10 до +10 Гц T0 потерял захват в 55,128205%
случаев, а T1 и T2 — в 0% случаев. T2 дополнительно оценивал частотное состояние
и оказался лучшим из проверенных методов по заранее заданному правилу.
Это не восстановило пакеты Lab054. У T0, T1 и T2 осталось 0/16 принятых
заголовков, 0/16 запусков FEC и CRC и 0/16 пакетов. Исторический результат
Lab054 остаётся `NOT_A, 0/16`. Сопровождение несущей устраняет одну причину
неустойчивости, но не убирает физический предел сохранённого OTA-сигнала:
диагностическая доля ошибок символов около 3,495896%, EVM 0,845350,
отношение согласованной составляющей к остатку 1,464846 дБ и неравномерность
усиления в полосе 5,471382 дБ.
## Границы эксперимента
Lab060 выполнена только по сохранённым IQ Lab056, Lab054, Lab047 и по
синтетическим данным. Исходные пять IQ-файлов хешированы до и после анализа;
размеры и SHA-256 совпали. Оборудование не опрашивалось, аппаратные команды не
выполнялись, `RF TX = 0`.
Штатные BPSK, RRC, timing, преамбула, заголовок, FEC, CRC и формат пакета не
менялись. T1/T2 реализованы только внутри диагностической ветви Lab060 и пока
не встроены в штатный receiver. Параметры выбирались только на синтетической
настройке, были заморожены до чтения результатов реальных IQ и затем одинаково
применены ко всем наборам.
После преамбулы петля получает только текущий комплексный символ, собственное
жёсткое решение `+1/−1` и своё предыдущее состояние. Правильный payload,
заголовок, magic, JPEG, CRC, переданный waveform и будущие символы в петлю не
поступают. TX truth применяется только после вычисления всей траектории для
диагностических метрик.
## Проверенные методы
| Метод | Работа после P3 | Выбранная нормированная полоса | Коэффициент фазы | Коэффициент частоты |
|---|---|---:|---:|---:|
| T0 `P3_FIXED` | сопровождения нет | 0 | 0 | 0 |
| T1 `DD_PHASE_ONLY` | поправляется только фаза | 0,0005 | 0,003136663015 | 0 |
| T2 `DD_PHASE_FREQUENCY` | поправляются фаза и частота | 0,0005 | 0,001332444741 | 0,000000888296 |
Нормированный фазовый детектор вычисляет угол между скорректированным символом
и собственным жёстким решением приёмника. Амплитуда не меняет усиление петли.
Одна ошибка ограничена диапазоном `±π/3`. Для T2 частотное состояние хранится в
радианах на символ и переводится в герцы только при выводе.
Настройка проверила ровно пять заранее ограниченных полос:
`0,0002; 0,0005; 0,001; 0,002; 0,004`. Для каждой применены одни и те же 39
сочетаний начальной ошибки частоты и фазы и одинаковый шум. Выбор шёл по доле
катастрофических срывов, затем по средней SER, затем в пользу более узкой
полосы. У выбранных T1 и T2 срывов на наборе настройки не было; их средние SER
равнялись 4,701903% и 4,698099% соответственно.
## Независимая синтетическая проверка
Синтетический сигнал проходит генератор Lab056, квантование int8, TX/RX RRC при
Fs 8 Мвыб/с, а затем получает AWGN. Для проверки применены другие seed, две
реализации каждого сочетания, скорости 20 и 500 ксимв/с, три фиксированных EVM,
ошибки частоты `0, ±0,25, ±0,5, ±1, ±2, ±5, ±10 Гц` и ошибки фазы
`−0,35; 0; +0,35 рад`.
Ключевой набор 500 ксимв/с при EVM 0,845350:
| Метод | Случаи | Катастрофический срыв | Потеря захвата | Средняя SER | P95 SER | Средняя абсолютная конечная ошибка частоты |
|---|---:|---:|---:|---:|---:|---:|
| T0 | 78 | 55,128205% | 55,128205% | 26,103132% | 50,185077% | 2,884615 Гц |
| T1 | 78 | 0% | 0% | 4,729529% | 4,841574% | 2,884615 Гц |
| T2 | 78 | 0% | 0% | 4,725104% | 4,832229% | 0,677354 Гц |
T1 намеренно не меняет частотное состояние, поэтому его конечная ошибка частоты
остаётся начальной. T2 одновременно сохранил нулевую долю срывов и снизил
частотную ошибку.
На 20 ксимв/с искусственные начальные ошибки до ±10 Гц намного тяжелее в
нормированных единицах. При EVM 0,317390 доля потерь T1/T2 равна 30,769231%.
Этот результат не скрывается и не использовался для отдельной перенастройки.
Реальный контроль Lab047 начинается с собственной точной P3 и у всех методов
остаётся 36/36, поэтому регрессии штатного контрольного файла не обнаружено.
Потеря захвата определена независимо от CRC: два соседних из 16 временных
блоков с SER не менее 25%. Восстановление — два последующих соседних блока с
SER не более 10%. TX truth участвует только в этой послесобытийной диагностике,
но не в работе петли.
## Сохранённая OTA-запись Lab056
| Сегмент | Скорость | T0 SER | T1 SER | T2 SER | Срыв T0/T1/T2 |
|---|---:|---:|---:|---:|---:|
| A1 | 20 ксимв/с | 0,035511% | 0,035511% | 0,035511% | 0/0/0 |
| B1 | 500 ксимв/с | 3,308940% | 3,268394% | 3,253560% | 0/0/0 |
| A2 | 20 ксимв/с | 0% | 0% | 0% | 0/0/0 |
| B2 | 500 ксимв/с | 3,925040% | 3,750989% | 3,750000% | 0/0/0 |
| **Среднее A** | **20 ксимв/с** | **0,017756%** | **0,017756%** | **0,017756%** | **0/0/0** |
| **Среднее B** | **500 ксимв/с** | **3,616990%** | **3,509691%** | **3,501780%** | **0/0/0** |
Во всех B-сегментах 16/16 блоков имеют receiver-side признак захвата. Ни один
метод не пересёк критерий потери. T1 и T2 дали небольшое, но согласованное
улучшение B1 и B2 относительно фиксированного T0. T2 ближе всего подошёл к
диагностическому нижнему ориентиру 3,495896%, поэтому дополнительная ошибка от
неподвижной экстраполяции P3 практически устранена. Оставшаяся SER относится к
качеству сохранённого общего OTA-тракта TX–канал–RX и не локализует один
физический узел.
## Пакетные контроли
| Набор | Метод | HEADER | FEC started/pass | CRC started/pass | Пакеты |
|---|---|---:|---:|---:|---:|
| Lab047 | T0 | 36/36 | 36/36 | 36/36 | 36/36 |
| Lab047 | T1 | 36/36 | 36/36 | 36/36 | 36/36 |
| Lab047 | T2 | 36/36 | 36/36 | 36/36 | 36/36 |
| Lab054 | T0 | 0/16 | 0/0 | 0/0 | 0/16 |
| Lab054 | T1 | 0/16 | 0/0 | 0/0 | 0/16 |
| Lab054 | T2 | 0/16 | 0/0 | 0/0 | 0/16 |
Для Lab054 FEC и CRC не достигнуты: заголовок не принят ни в одном из 16 кадров.
T1/T2 немного меняют число диагностических ошибок заголовка, но строгий verdict
не меняется и новый успешный пакет не объявляется.
На сохранённом фоне T1 и T2 дали 0 ложных заголовков, 0 ложных пакетов и 0/16
блоков с признаком захвата; устойчивый lock не объявлен. Это отделяет
решение-направленное движение петли по шуму от доказанного приёма BPSK.
## Проверка отсутствия утечки payload truth
Автоматический контроль изменил только правильную диагностическую
последовательность payload после преамбулы и повторно вычислил метрики для той
же принятой последовательности. У T1 и T2 побитово совпали фазовая траектория,
частотная траектория и собственные решения. Диагностическая SER изменилась с
примерно 0,7–1,0% до 99%, то есть контроль действительно заменил truth, но не
смог повлиять на tracker. Результат: `PASS`.
## Инженерный вывод
`DECISION-DIRECTED TRACKING VERDICT = SUCCESS`.
Лучший кандидат в пределах Lab060 — **T2**. Он выбран потому, что:
1. на независимом наборе 500 ксимв/с/EVM 0,845350 снизил долю срывов с
55,128205% у T0 до 0%;
2. дал наименьшую среднюю SER реального Lab056 B — 3,501780%;
3. сохранил Lab047 36/36;
4. не создал ложных пакетов или ложного устойчивого захвата на фоне;
5. прошёл контроль отсутствия payload-truth leakage.
Этот успех означает, что decision-directed сопровождение пригодно как отдельный
кандидат на последующее внедрение в штатный receiver. Он не означает packet
PASS для Lab054 и не доказывает, что весь оставшийся предел связан с carrier.
Следующий единственный шаг — отдельно рассмотреть и согласовать внедрение T2 в
штатный receiver с сохранением строгих PHY/FEC/CRC критериев. В Lab060
production-код не менялся.
Независимый read-only verifier повторил 20 целевых проверок без JIT и записи
артефактов, проверил причинность изменением будущих символов, пересчитал
уравнение фазового состояния с расхождением менее `1e−12` рад и независимо
воспроизвёл метрики из NPZ/CSV. Воспроизводимых несоответствий не обнаружено;
граница вывода сохраняется: это проверка петли на готовых символах, а не всего
потокового поиска пакетов и RAW-тракта.
## Артефакты
- `data/processed/lab060/summary.json` — машинно-читаемый итог;
- `tuning_results.csv`, `synthetic_results.csv`,
`synthetic_by_initial_cfo.csv` — настройка и независимая синтетика;
- `real_results.csv`, `real_blocks.csv`, `real_trajectories.npz` — метрики и
траектории A1/B1/A2/B2;
- `packet_results.csv`, `background_results.csv` — строгие пакетные и фоновые
контроли;
- `phase_trajectory_b1.png`, `phase_trajectory_b2.png`,
`frequency_state_trajectory.png`, `lab056_b_block_symbol_error_rate.png`,
`synthetic_failure_by_initial_cfo.png`, `tracker_comparison.png`,
`lab054_result_by_tracker.png` — проверенные графики.
`RF TX = 0`. Lab060 не коммитировалась. Push не выполнялся. Lab061 не создана.