12 KiB
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 не выполнялся.