15 KiB
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. Он выбран потому, что:
- на независимом наборе 500 ксимв/с/EVM 0,845350 снизил долю срывов с 55,128205% у T0 до 0%;
- дал наименьшую среднюю SER реального Lab056 B — 3,501780%;
- сохранил Lab047 36/36;
- не создал ложных пакетов или ложного устойчивого захвата на фоне;
- прошёл контроль отсутствия 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 не создана.