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

152 lines
12 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 не выполнялся.