# 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`. Нулевая итоговая строка не отменяет ненулевое промежуточное наблюдение. Причину расхождения без исходного кода используемой версии придумывать нельзя. ## Графики и машинные результаты - [Локальная задержка](../data/processed/lab063/local_delay_vs_time.png) - [Нормированная корреляция](../data/processed/lab063/normalized_correlation_vs_time.png) - [Амплитуда коэффициента передачи](../data/processed/lab063/gain_vs_time.png) - [Фаза коэффициента передачи](../data/processed/lab063/phase_vs_time.png) - [Принятая мощность по пакетам](../data/processed/lab063/received_power_by_packet.png) - [SER по пакетам](../data/processed/lab063/symbol_error_rate_by_packet.png) - [Matched/residual по пакетам](../data/processed/lab063/matched_residual_by_packet.png) - [Сравнение Lab056 B и Lab062](../data/processed/lab063/lab056_b_vs_lab062_packets.png) - [Сводка JSON](../data/processed/lab063/summary.json) - [Качество пакетов CSV](../data/processed/lab063/packet_quality.csv) - [Локальное сопоставление CSV](../data/processed/lab063/local_alignment.csv) ## Инженерный вывод `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`