20 KiB
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_RXLOCAL 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.
Нулевая итоговая строка не отменяет ненулевое промежуточное наблюдение. Причину расхождения без исходного кода используемой версии придумывать нельзя.
Графики и машинные результаты
- Локальная задержка
- Нормированная корреляция
- Амплитуда коэффициента передачи
- Фаза коэффициента передачи
- Принятая мощность по пакетам
- SER по пакетам
- Matched/residual по пакетам
- Сравнение Lab056 B и Lab062
- Сводка JSON
- Качество пакетов CSV
- Локальное сопоставление 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 = 0LAB063 COMMIT = NOT PERFORMEDPUSH = NOT PERFORMEDLAB064 = NOT CREATED