# Lab067: офлайн-анализ отказов PHY-заголовка Lab066 ## Результат Причина шести отказов совместима с кратковременным ростом несогласованного остатка именно в области заголовка. Данных за небольшую ошибку логики приёмника, временной привязки, сопровождения несущей или состояния кандидатов нет. `HEADER_FAILURE_ROOT_CAUSE = LOCAL_RF_QUALITY` `ONE SMALL FIX JUSTIFIED = NO` `BRANCH DECISION = NO_SMALL_FIX_JUSTIFIED` Исторический результат Lab066 остаётся 10/16 для legacy и 10/16 для T2. Oracle-расчёты ниже диагностические и не меняют строгий результат. ## Целостность и геометрия данных SHA-256 TX и RX совпали с зафиксированными значениями Lab066. RX имеет 16 000 000 комплексных отсчётов, 32 000 000 байт и длительность 2,0 с при 8 Мвыб/с. Все 16 ожидаемых позиций подтверждены строгими кандидатами; уточнённое смещение для каждого пакета равно 0 отсчётов. ## Сводная таблица `P err` означает ошибки 1280-символьной преамбулы. `H raw` означает ошибки среди 144 переданных символов заголовка. `H vote` означает ошибки после штатной мягкой суммы трёх повторений. Локальная метрика рассчитана по фиксированному окну: последние 128 символов преамбулы и весь заголовок. | Пакет | Строгий результат | P err | P corr | H raw | Копии 1/2/3 | H vote | Поля с ошибкой | CFO legacy, Hz | CFO T2/P3, Hz | Timing, отсч. | Локальный M/R, dB | RMS | Legacy/T2 diff | Классификация | |---:|---|---:|---:|---:|---:|---:|---|---:|---:|---:|---:|---:|---:|---| | 1 | HEADER FAIL | 15 | 0,898114 | 3 | 1/2/0 | 1 | length | -2,662 | -5,388 | 0 | 5,127352 | 0,554156 | 0 | HEADER_SPECIFIC_FAILURE | | 2 | HEADER FAIL | 10 | 0,892575 | 6 | 3/2/1 | 1 | length | -11,085 | -5,424 | 0 | 3,453566 | 0,671926 | 1 | HEADER_SPECIFIC_FAILURE | | 3 | HEADER FAIL | 11 | 0,883245 | 3 | 1/1/1 | 1 | magic | -2,144 | 2,717 | 0 | 4,588577 | 0,589619 | 0 | HEADER_SPECIFIC_FAILURE | | 4 | PASS | 12 | 0,870256 | 0 | 0/0/0 | 0 | none | -4,970 | 0,501 | 0 | 4,498689 | 0,595752 | 0 | PASSED | | 5 | PASS | 15 | 0,882299 | 0 | 0/0/0 | 0 | none | 3,163 | -1,271 | 0 | 8,091353 | 0,393942 | 0 | PASSED | | 6 | PASS | 17 | 0,883426 | 0 | 0/0/0 | 0 | none | 5,595 | 1,262 | 0 | 7,317955 | 0,430628 | 0 | PASSED | | 7 | PASS | 7 | 0,895704 | 1 | 0/0/1 | 0 | none | -1,265 | -1,236 | 0 | 6,319905 | 0,483064 | 1 | PASSED | | 8 | PASS | 10 | 0,893515 | 3 | 1/2/0 | 0 | none | 9,131 | -0,471 | 0 | 4,986495 | 0,563216 | 0 | PASSED | | 9 | HEADER FAIL | 13 | 0,883101 | 4 | 1/2/1 | 1 | length | 6,363 | -1,982 | 0 | 3,775053 | 0,647511 | 0 | HEADER_SPECIFIC_FAILURE | | 10 | PASS | 14 | 0,875698 | 1 | 0/0/1 | 0 | none | 10,521 | 4,784 | 0 | 4,964081 | 0,564672 | 0 | PASSED | | 11 | PASS | 14 | 0,873945 | 0 | 0/0/0 | 0 | none | -4,338 | 5,576 | 0 | 5,008753 | 0,561775 | 0 | PASSED | | 12 | PASS | 15 | 0,869109 | 0 | 0/0/0 | 0 | none | -14,662 | -12,429 | 0 | 6,568840 | 0,469416 | 0 | PASSED | | 13 | PASS | 19 | 0,887088 | 0 | 0/0/0 | 0 | none | 2,006 | -3,871 | 0 | 7,449922 | 0,424135 | 0 | PASSED | | 14 | PASS | 13 | 0,897960 | 1 | 0/0/1 | 0 | none | 7,211 | 3,326 | 0 | 5,493857 | 0,531260 | 1 | PASSED | | 15 | HEADER FAIL | 12 | 0,888738 | 7 | 2/2/3 | 2 | magic, length | -5,732 | -3,520 | 0 | 4,055203 | 0,626960 | 0 | HEADER_SPECIFIC_FAILURE | | 16 | HEADER FAIL | 16 | 0,880510 | 5 | 1/2/2 | 2 | version, length | 4,734 | 228,105 | 0 | 4,237157 | 0,613963 | 107 | HEADER_SPECIFIC_FAILURE | Полные строки битов `EXPECTED HEADER BITS`, `RECEIVED RAW HEADER BITS`, `VOTED HEADER BITS`, причины строгого отказа и позиции ошибок находятся в `summary.json` и `header_packet_comparison.csv`. ## Преамбула: распределения | Метрика | Passed min / median / max | Failed min / median / max | |---|---:|---:| | Ошибки, бит | 7 / 14 / 19 | 10 / 12,5 / 16 | | Доля ошибок | 0,005469 / 0,010938 / 0,014844 | 0,007813 / 0,009766 / 0,012500 | | Корреляция | 0,869109 / 0,882862 / 0,897960 | 0,880510 / 0,885991 / 0,898114 | | RMS отклонение | 0,489327 / 0,532530 / 0,567221 | 0,489090 / 0,523373 / 0,538197 | | Matched power | 7,774573 / 8,330450 / 8,667865 | 7,968245 / 8,385475 / 8,982336 | | Residual power | 2,053382 / 2,346123 / 2,645143 | 2,118219 / 2,258980 / 2,379173 | | Matched/residual, dB | 4,924949 / 5,473142 / 6,208025 | 5,381167 / 5,624735 / 6,212224 | Преамбула не отделяет отказавшие пакеты от принятых: медианные физические показатели failed-группы не хуже. Ухудшение появляется после последних 128 символов преамбулы и внутри заголовка. В этом окне медиана residual power равна 3,089822 у failed и 2,219458 у passed; медиана `matched/residual` равна 4,146180 и 5,906881 dB соответственно. ## Карта ошибок заголовка У отказавших пакетов найдено 28 сырых ошибочных решений. Ни одна позиция не повторяется в двух failed-пакетах. Ошибки встречаются во всех трёх копиях: 9, 11 и 8 ошибок соответственно. После мягкой суммы остаётся 1 ошибка у пакетов 1, 2, 3 и 9 и 2 ошибки у пакетов 15 и 16. Общей позиции, стабильно плохой копии, концентрации только в начале или только в конце заголовка нет. Это не поддерживает гипотезу о систематической ошибке формата или индексации заголовка. ## Переход преамбула → заголовок На последних 128 символах преамбулы медиана фазовой RMS-ошибки составляет 0,361 rad у passed и 0,541 rad у failed. На заголовке значения составляют 0,388 и 0,627 rad. У failed-пакетов ошибки заголовка лежат в диапазоне 3–7 сырых решений, а в первых 128 символах после заголовка медиана ошибок равна 0. Медианная амплитуда остаётся близкой к единице. Общего скачка амплитуды, смещения точки выборки или одинакового фазового скачка не найдено. Наблюдается короткое ухудшение фазового остатка, различное по позиции в каждом пакете. ## Timing, CFO и T2 Штатное timing-смещение и диагностическое oracle-смещение равны 0 отсчётов для всех 16 пакетов. Расхождение legacy CFO с контрольной оценкой создаёт за весь 144-символьный заголовок фазовую ошибку от -0,02488 до +0,02079 rad. Этот масштаб недостаточен для объяснения 1–2 ошибок после мягкого голосования. T2 начинает влиять с символа 1280, то есть с начала заголовка. Для пакетов 1, 3, 4–6, 8–13 и 15 его жёсткие решения заголовка побитно совпадают с legacy. Различия равны одному биту для пакетов 2, 7 и 14. У пакета 16 оценка P3 стала выбросом 228,105 Hz и изменила 107 решений. Это ухудшение одного пакета не объясняет шесть legacy-отказов и не даёт основания менять T2 в этой ветке. ## Паузы и положение в сеансе Для пакета 1 исследован внешний guard длиной 800 000 отсчётов. Для пакетов 2–16 исследованы реальные паузы по 40 000 отсчётов. AC RMS перед пакетами лежит в диапазоне 0,744879–1,302893. Признаков хвоста предыдущей формы по критерию превышения первых 8000 отсчётов над серединой паузы на 3 dB нет. После пакета 16 отдельно проверен конечный guard. Группы START и END имеют больше ошибок заголовка, чем MIDDLE 1, однако пакет 9 отказывает в середине, пакеты 4, 13 и 14 проходят, а timing, CFO и фон не дают монотонного временного тренда. Расположение пакетов не доказывает `START_END_TRANSIENT`. ## 145 кандидатов Строгий журнал содержит 145 проверок: - 27 проверок на точных позициях преамбулы, 16 уникальных позиций и 11 повторных проверок той же позиции; - 54 локальных максимума повторяющейся PRBS-структуры внутри формы пакета; - 56 кандидатов в нулевых паузах; - 8 кандидатов вне этих областей. Каждый кандидат получает новый `PacketMeasure` и полностью независимый строгий проход. Состояние после отказа не переносится. Граница `accepted_until` изменяется только после CRC PASS. Большое число кандидатов увеличивает объём работы, но не объясняет выборочные ошибки настоящих заголовков. ## TX и решение по ветке Все 16 TX-заголовков побитно идентичны. Magic `0xD391`, версия 1, длина 268 байт, checksum и тройное повторение корректны. Текущий программный прогон дал 16/16 точных пакетов и для legacy, и для T2. Конкретная небольшая ошибка приёмника, которая объяснила бы значимую часть шести отказов, не найдена. Зафиксирован достигнутый результат: 10/16 точных полных пакетов при 500 ксимв/с и TX VGA 20 dB в аппаратно валидной OTA-записи. Текущую диагностическую ветку следует закрыть. Следующая проектная ветка: CRSF/ELRS для управления и телеметрии. QPSK с меньшей скоростью символов остаётся будущим кандидатом для видеоканала. В Lab067 QPSK, новый PHY и изменения BPSK не выполнялись. RF TX = 0. Lab067 не коммитировалась. Push не выполнялся.