Files
SDR-Rover/docs/lab063_offline_result.md
2026-09-14 15:11:46 +03:00

20 KiB
Raw Permalink Blame History

Lab063: офлайн-локализация TX underrun и ухудшения пакетов Lab062

Что установлено

Lab062 остаётся аппаратно невалидным опытом: во время единственной передачи журнал показал 1 underruns, longest 16672 bytes, хотя итоговая строка показала ноль. Офлайн-анализ не нашёл в RX-записи временного скачка, пропуска или повтора ожидаемого масштаба в 221 надёжном внутреннем окне. Локальная задержка в них составляет 0…1 отсчёт. Ещё в 22 внутренних окнах корреляция ниже 0,15, поэтому задержку там установить нельзя.

Качество сигнала при этом хуже Lab056 B на протяжении всего потока. Все 16 пакетов имеют большую долю ошибочных символов и EVM, а отношение согласованной полезной составляющей к остатку у всех ниже. Пакеты 3, 4, 12 и 13 содержат дополнительные всплески AC-мощности и остатка при почти неизменной TX-согласованной амплитуде. Это указывает на добавочную помеху или искажение, а не на провал полезной несущей в этих пакетах. По сохранённой записи нельзя установить конкретный аппаратный источник.

Цифровые значения далеки от пределов cs8: по пакетам max |I| = 3…6, max |Q| = 4…7. Сильная аналоговая перегрузка поэтому менее вероятна. Отсутствие rail clipping не является измерением аналоговой линейности, и без отдельного прибора аналоговую компрессию исключить нельзя.

Итоговый выбор: B. GLOBAL_RF_DEGRADATION. Единичный локальный underrun недостаточен для объяснения всего результата, а его положение по RX не локализовано.

Целостность и границы анализа

Анализ выполнен без RF и без опроса аппаратуры:

  • TX SHA-256: e84bbce227426c0aac13a48ded1286ca4a44fc6e3efce01f6e5a513217c87ff5;
  • RX SHA-256: ce0bd603e4ca356af67d504ee11c9e9f38171f31c7427fbe61216a28126b2b32;
  • TX: 1 476 096 комплексных отсчётов;
  • RX: 24 000 000 комплексных отсчётов;
  • сохранённое начало TX в RX: отсчёт 4 256 091;
  • RF TX = 0;
  • аппаратных запросов: 0.

Поиск использует известный TX только после строгого результата 0/16; это диагностическая привязка, которая не превращает пакет в принятый и не меняет verdict legacy или T2.

Фактические паузы между пакетами

Проверка длины даёт точное равенство:

92 256 отсчётов × 16 пакетов = 1 476 096 отсчётов.

Следовательно:

ACTUAL INTER-PACKET GAP = 0 additional samples = 0 s.

Запланированных пауз 5 мс в TX-файле нет. Внутренние защитные интервалы и хвосты RRC, входящие в каждый 92 256-отсчётный waveform, присутствуют.

Код prepare() в experiments/lab062_full_packet_rf_preflight.py записывает шестнадцать результатов build_parameterized_tx_cs8(...) непосредственно друг за другом. Между вызовами нет параметра паузы, массива нулей или другой операции, которая добавила бы 5 мс. Причина: ошибка реализации подготовки Lab062. Возможность сформировать паузы в других генераторах проекта означает, что это не установленное ограничение PHY-генератора.

Масштаб сообщения TX underrun

Для cs8 один комплексный отсчёт занимает два байта:

Величина Значение
Журнал, bytes 16 672
Комплексные отсчёты 8 336
Длительность при 8 Мвыб/с 1,042 мс
Символы при 500 ксимв/с 521
Доля waveform одного пакета 9,035727 %

Это только пересчёт масштаба строки журнала. Он не доказывает фактическую потерю, повтор или замену 8 336 отсчётов в эфире.

Локальное сопоставление TX и RX

TX разбит на окна по 512 символов, то есть по 8 192 отсчёта. Шаг равен 256 символам, или 4 096 отсчётам. Для каждого окна независимо искалось положение в RX в пределах ±12 000 отсчётов, затем вычислялись нормированная корреляция, комплексный коэффициент h, его амплитуда и фаза, а также остаточная мощность.

Повторяющаяся PRBS-преамбула создаёт ложные корреляционные максимумы с периодом 2 032 отсчёта. Поэтому решение о временном скачке использует внутреннюю часть каждого пакета от отсчёта 24 000 до 86 000 и требует корреляцию не ниже 0,15. Края, преамбула и внутренние окна ниже порога остаются в local_alignment.csv для проверки, но их выбранная задержка не участвует в verdict.

Показатель Значение
Всего окон 359
Надёжных окон 221
Внутренних окон с корреляцией ниже 0,15 22
Корреляция, минимум по всем окнам 0,071665
Корреляция, медиана по всем окнам 0,265526
Корреляция, максимум по всем окнам 0,287394
Локальная задержка в надёжных окнах 0…1 отсчёт
Кандидаты на скачок 0
  • UNDERRUN LOCATION = NOT_LOCALIZED_FROM_RX
  • LOCAL DELAY DISCONTINUITY = NO IN 221 RELIABLE WINDOWS; UNDETERMINED IN 22 INTERNAL LOW-CORRELATION WINDOWS

Внутренние окна с низкой корреляцией распределены так:

  • пакет 3: 5 окон, позиции 69 440…85 824 отсчёта внутри пакета;
  • пакет 4: 7 окон, позиции 26 336…46 816 и 55 008 отсчётов;
  • пакет 12: 7 окон, позиции 58 336…82 912 отсчётов;
  • пакет 13: 3 окна, позиции 27 520…35 712 отсчёта.

Низкая корреляция совпадает с пакетами, где выросли AC-мощность и остаток. Она подтверждает локальные участки сильного искажения. Без надёжной оценки задержки эти участки не доказывают пропуск или повтор отсчётов и не локализуют TX underrun.

Поиск не подгонялся под ожидаемые 8 336 отсчётов. Он способен обнаружить синтетически вставленный скачок и проверяет переходы между пакетами; оба свойства закрыты отдельными тестами.

Качество пакетов 1–16

raw означает полную принятую мощность вместе с DC. useful в таблице означает AC-мощность пакета после вычитания средней фоновой AC-мощности до и после потока. Это избыточная над фоном мощность, а не доказанная мощность только полезного TX-сигнала. M/R означает отношение TX-согласованной составляющей к остатку. Остаток включает шум, помехи, искажения канала и возможное влияние underrun.

№ raw, код² useful, код² SER, % EVM RMS matched / residual, код² M/R, дБ ripple, дБ CFO, Гц phase, рад
1 4,900592 0,062620 8,517888 1,088322 0,707513 / 0,838011 -0,735151 6,642520 +1,007302 5,396055
2 4,865147 0,056422 9,795571 1,104921 0,670874 / 0,819037 -0,866627 6,598551 +1,641699 0,911620
3 6,015186 1,184291 10,221465 1,357844 0,618128 / 1,139667 -2,656997 7,370969 -0,961988 0,917422
4 8,462127 3,605520 15,587734 1,663418 0,694253 / 1,920969 -4,420028 10,617549 +2,584550 5,388297
5 4,954615 0,062684 8,986371 1,099196 0,702182 / 0,848399 -0,821507 6,409726 -1,235846 0,834217
6 4,919648 0,053559 7,580920 1,102402 0,644466 / 0,783214 -0,846803 6,364293 -1,779543 5,318132
7 4,958322 0,059386 8,390119 1,100152 0,681935 / 0,825370 -0,829054 6,236828 -0,248409 1,461754
8 4,913306 0,063207 8,262351 1,149257 0,638148 / 0,842861 -1,208345 6,714921 -1,078363 0,781772
9 4,886956 0,065556 8,943782 1,141831 0,658122 / 0,858045 -1,152037 6,809132 +0,832282 1,073865
10 4,915355 0,067571 8,347530 1,092396 0,697137 / 0,831913 -0,767600 6,678161 -1,337873 0,770315
11 4,919918 0,072081 8,049404 1,085344 0,688251 / 0,810740 -0,711347 6,630624 +1,139696 0,886944
12 6,800707 1,948029 12,819421 1,456604 0,631331 / 1,339491 -3,266829 7,945032 -0,158710 1,085095
13 7,571594 2,728649 16,013629 1,542472 0,670672 / 1,595675 -3,764344 9,871896 -3,768748 1,477869
14 4,931040 0,060762 9,454855 1,125042 0,631853 / 0,799750 -1,023377 6,450866 +0,071570 0,850015
15 4,914640 0,056175 9,284497 1,156613 0,648517 / 0,867557 -1,263765 7,550267 +0,636870 5,326811
16 4,976760 0,059023 8,603066 1,063657 0,702947 / 0,795290 -0,536031 6,391673 +1,336558 0,741441

Полные значения, включая локальную задержку, корреляцию, |h|, DC и разности относительно Lab056 B, находятся в data/processed/lab063/packet_quality.csv.

Уровень RX и DC во время передачи

Средняя фоновая AC-мощность соседних окон равна 0,525282 код², что соответствует AC RMS 0,724764 кода. На RX-only preflight было 0,985483 кода AC RMS.

№ RMS full AC RMS mean I mean Q max |I| max |Q| max |IQ|
1 2,213728 0,766748 0,969270 1,836629 3 4 4,472136
2 2,205708 0,762695 0,967753 1,829453 3 4 4,472136
3 2,452588 1,307507 0,970094 1,834266 6 7 7,211102
4 2,908974 2,032438 0,960349 1,846362 6 7 7,615773
5 2,225897 0,766789 0,964512 1,853744 3 4 4,242640
6 2,218028 0,760816 0,968934 1,844444 3 4 4,472136
7 2,226729 0,764636 0,963515 1,856150 3 4 4,472136
8 2,216598 0,767131 0,958919 1,845343 3 4 4,472136
9 2,210646 0,768660 0,954128 1,840043 3 4 4,472136
10 2,217060 0,769969 0,947830 1,850438 3 4 4,242640
11 2,218089 0,772893 0,943039 1,852898 3 4 4,472136
12 2,607816 1,572676 0,954995 1,848075 6 7 8,062258
13 2,751653 1,803866 0,952307 1,846828 6 7 7,810249
14 2,220594 0,765535 0,952166 1,854286 3 4 4,472136
15 2,216899 0,762534 0,949651 1,852389 3 4 4,472136
16 2,230865 0,764399 0,956903 1,864616 3 4 4,472136

DC стабилен: mean I = 0,943039…0,970094, mean Q = 1,829453…1,864616. Ступени AC-амплитуды есть в пакетах 3, 4, 12 и 13. При этом медиана локального |h| по пакетам меняется только от 0,004488 до 0,004805. Рост полной AC-мощности в этих пакетах создаёт главным образом остаток, а не согласованный полезный компонент.

Пакеты 3, 4, 12 и 14

У четырёх ранее отмеченных пакетов нет общего признака underrun:

  • у всех четырёх нет скачка задержки;
  • у них нет общего провала мощности;
  • у них нет общей потери локальной корреляции;
  • пакет 14 близок к обычным пакетам по AC RMS, SER, EVM и неравномерности полосы;
  • пакеты 3, 4 и 12 имеют всплески AC-мощности и остатка; аналогичный, ещё более выраженный всплеск есть у пакета 13.

Поэтому связывать набор 3, 4, 12, 14 с одним TX underrun оснований нет. По сводному ранжированию наиболее повреждены пакеты 13, 4, 12, 3.

Тренд по четвертям потока

Пакеты useful, среднее код² SER, % EVM RMS matched, код² residual, код² M/R, дБ CFO, Гц phase error, рад local phase span, рад медиана |h|
1–4 1,227213 11,030664 1,303626 0,672692 1,179421 -2,169701 +1,067891 3,153349 0,117419 0,004637
5–8 0,059709 8,304940 1,112752 0,666683 0,824961 -0,926427 -1,085540 2,098969 0,150020 0,004608
9–12 0,538309 9,540034 1,194044 0,668710 0,960047 -1,474453 +0,118849 0,954055 0,128511 0,004658
13–16 0,726152 10,839012 1,221946 0,663497 1,014568 -1,646879 -0,430938 2,099034 0,098633 0,004536

Согласованная составляющая и локальный коэффициент передачи стабильны по четвертям. Средний локальный фазовый размах лежит в пределах 0,098633…0,150020 рад; последовательного роста к концу потока нет. Остаток и SER меняются вместе со всплесками избыточной мощности. Базовое качество всех четвертей хуже Lab056 B.

Сравнение с Lab056 B

Метрика Lab056 B Lab062, диапазон пакетов Результат
SER 3,495896 % 7,580920…16,013629 % все 16 хуже
EVM RMS 0,845350 1,063657…1,663418 все 16 хуже
Matched/residual +1,464846 дБ -4,420028…-0,536031 дБ все 16 хуже
Неравномерность полосы 5,471382 дБ 6,236828…10,617549 дБ все 16 хуже

Ухудшение не ограничено одним пакетом или коротким участком. Локальный TX-согласованный gain не показывает потери длиной около 8 336 отсчётов. Поэтому наблюдавшийся TX underrun остаётся достаточной причиной признать Lab062 невалидной, но не является достаточным объяснением глобально худшего качества.

Смысл счётчиков hackrf_transfer

Сохранены обе строки:

  • промежуточная: 1 underruns, longest 16672 bytes;
  • итоговая: 0 underruns, longest 0 bytes.

В локальной установке исходный файл hackrf_transfer.c и документация с описанием сброса этих счётчиков не найдены. В бинарном файле обнаружены только строки формата статистики. Поэтому:

COUNTER SEMANTICS = NOT_ESTABLISHED.

Нулевая итоговая строка не отменяет ненулевое промежуточное наблюдение. Причину расхождения без исходного кода используемой версии придумывать нельзя.

Графики и машинные результаты

Инженерный вывод

LAB062 QUALITY DISTRIBUTION = GLOBAL.

PRIMARY CAUSE STATUS = PARTIALLY_LOCALIZED.

Найдена ошибка подготовки TX: обещанные межпакетные паузы не были записаны. Подтверждено глобальное ухудшение относительно Lab056 B и отдельные всплески помехи или искажения. Положение underrun и точная физическая причина общего ухудшения не установлены.

NEXT SINGLE STEP = до нового TX отдельно исследовать уровень RX, усиления, геометрию и возможную аналоговую компрессию либо слишком слабый полезный сигнал; будущий TX-процесс должен иметь явные паузы и однозначное журналирование underrun.

Новый RF-сеанс требует отдельного разрешения. В рамках Lab063 параметры PHY, приёмник, усиления и частота не менялись.

  • RF TX = 0
  • LAB063 COMMIT = NOT PERFORMED
  • PUSH = NOT PERFORMED
  • LAB064 = NOT CREATED