Files
SDR-Rover/docs/lab067_offline_result.md
2026-09-15 17:45:38 +03:00

12 KiB
Raw Permalink Blame History

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