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

15 KiB
Raw Blame History

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 не создана.