14 KiB
Lab059 — пределы восстановления несущей только по преамбуле
Что произошло простыми словами
У штатного приёмника есть только 2,56 мс известной преамбулы, чтобы предсказать фазу несущей на весь burst длительностью около 204,8 мс. Для ограничения ухода фазы 30 градусами ошибка частоты должна быть не больше 0,4069 Гц. Штатная двухблочная оценка на B1/B2 ошиблась примерно на +4,73/+4,76 Гц и поэтому повернула решения почти на полный оборот к концу burst.
Один из новых диагностических методов, P3, оказался очень удачным именно на двух сохранённых B-сегментах: ошибки составили −0,125 и +0,392 Гц, а средняя доля ошибочных символов упала с 52,4169% до 3,6170%. Это почти совпало с диагностически достижимыми 3,4959% Lab058. Однако это две реализации, и они не доказывают устойчивость. В 5100 синтетических испытаниях качества B P3 попадал в ±0,5 Гц только в 9,61% случаев; лучший по RMSE метод P1 имел RMSE 3,728 Гц и попадал в ±0,5 Гц в 10,47% случаев.
Следовательно, текущая реализация P0 действительно слаба, и P3 может дать хорошую начальную оценку. Одновременно 1280 символов при 500 ксимв/с и наблюдаемом качестве B не дают надёжной субгерцовой точности сами по себе. Для устойчивого результата требуется сопровождать фазу или частоту в ходе самого пакета. Это задаёт следующий программный эксперимент. Физический предел B, установленный Lab058 — около 3,50% ошибочных символов даже при диагностическом выравнивании — остаётся отдельной задачей.
Границы и целостность
Lab059 выполнялась только офлайн. HackRF Plus не опрашивался, аппаратные команды
и передачи не запускались, RF TX = 0. Прочитаны сохранённые Lab056, Lab054 и
Lab047. Размеры и SHA-256 пяти исходных IQ-файлов проверены до и после расчёта;
совпадение полное. Исторический результат Lab054 не изменён: NOT_A, 0/16.
P0 baseline физически записан в baseline_p0.json до вычисления P1–P3. Он
воспроизвёл Lab057 для Lab054: максимальное расхождение CFO равно
1,42e-13 Гц, ошибки преамбулы 7767/7767, HEADER/CRC 0/0. Для четырёх
сегментов Lab056 различия P0 с Lab058 по CFO, BER и EVM находятся на уровне
округления floating point.
Независимая проверка обнаружила, что первая реализация P1–P3 удаляла DC по всему burst до выделения преамбулы. Из-за этого RAW полезной части менял вход оценивателя, хотя правильные payload-биты ему не передавались. Исправленный вариант ограничивает DC и FIR-опору P1/P3 полной преамбулой, а P2 — только TRAIN. Отдельный тест изменяет RAW после преамбулы и подтверждает неизменность P1–P3. P0 намеренно оставлен точным baseline со штатной глобальной обработкой.
Требуемая точность
Использовано delta_f_max = phase_limit / (360*T), где T = 0,2048 с.
| Допустимый уход фазы | Максимальная ошибка частоты |
|---|---|
| 15° | 0,203451 Гц |
| 30° | 0,406901 Гц |
| 45° | 0,610352 Гц |
| 60° | 0,813802 Гц |
| 90° | 1,220703 Гц |
Порог 0,4069 Гц — инженерная цель для 30°, а не новый обязательный порог протокола. Катастрофическая ошибка Monte Carlo заранее определена как больше 2,441406 Гц, что соответствует уходу более 180° за burst.
Аудит штатной математики P0
Активный код получает точки после номинального переноса 50 кГц, RRC-фильтра и
штатного timing. Он возводит BPSK в квадрат, усредняет символы [0,512) и
[512,1024), затем берёт разность фаз. Центры находятся в моментах 256/Rs и
768/Rs, расстояние равно 512/Rs. Формула имеет вид
delta_phase / (4*pi*(512/Rs)); 4*pi правильно учитывает удвоение фазы после
BPSK². Компенсация использует отрицательный знак, gain относится к t=0, центр
символа k — к (k+0.5)/Rs. Повторной компенсации не обнаружено.
Для 500 ксимв/с однозначный диапазон P0 равен ±244,140625 Гц, поэтому +4,7 Гц не является алиасом. Главный практический недостаток — две фазовые точки без избыточности; последние 256 символов преамбулы не участвуют в частотной оценке. Для 20 ксимв/с диапазон P0 всего ±9,765625 Гц, поэтому synthetic ±20 и ±100 Гц преднамеренно показывают алиас и увеличивают сводный RMSE P0.
Методы
| Метод | Использованные символы | Оценка | Проверка |
|---|---|---|---|
| P0 CURRENT | 1024 | два блока BPSK² по 512 | P2 VALIDATION только как диагностика |
| P1 FULL PHASE SLOPE | 1280 | Huber-fit фаз 64 despread-блоков по 20 | фиксированная преамбула |
| P2 SPLIT | 576 TRAIN | Huber-fit 36 despread-блоков по 16 | 576 VALIDATION без переоценки |
| P3 SQUARED FULL | 1280 | Huber-fit фаз 64 BPSK²-блоков по 20, наклон /2 | фиксированная преамбула |
P2 использует TRAIN 32…607 и VALIDATION 672…1247; разбиение зафиксировано до результата. Timing одинаков для P0–P3, чтобы эксперимент изолировал carrier recovery. P1/P3 получают RAW-опору только полной преамбулы, P2 — только TRAIN. Ни один новый оцениватель не получает header, magic, payload, JPEG, FEC или CRC.
Lab056 A/B
Ошибки частоты ниже считаются относительно whole-burst diagnostic reference Lab058, подключённого только после заморозки preamble-only оценки.
| Метод | B1 ошибка CFO | B2 ошибка CFO | Средняя |ошибка| | B1 SER | B2 SER | Средняя SER B |
|---|---|---|---|---|---|---|
| P0 | +4,730655 Гц | +4,760847 Гц | 4,745751 Гц | 52,5218% | 52,3121% | 52,4169% |
| P1 | −3,318571 Гц | +2,179939 Гц | 2,749255 Гц | 61,2846% | 42,1677% | 51,7262% |
| P2 | −19,977856 Гц | +46,721234 Гц | 33,349545 Гц | 49,7775% | 50,2294% | 50,0035% |
| P3 | −0,124881 Гц | +0,391708 Гц | 0,258294 Гц | 3,3089% | 3,9250% | 3,6170% |
P3 дал средние EVM 0,84378 и matched/residual +1,4944 дБ, практически совпав с физической диагностикой Lab058 (0,84535 и +1,46485 дБ). Разница его средней SER с нижней диагностической ссылкой составляет +0,1211 процентного пункта.
Для A1/A2 все методы сохранили среднюю SER 0,01776%. P3 дал EVM 0,31283/0,32516 и ошибки CFO −0,0171/+0,0935 Гц относительно diagnostic reference. P2 сильнее ухудшил EVM A2 до 0,41255, что дополнительно показывает слабость короткого TRAIN.
Synthetic Monte Carlo
Чистая преамбула получена действующим TX/RX RRC-трактом при Fs 8 Мвыб/с: 400 отсчётов/символ и 4001 tap для 20 ксимв/с, 16 отсчётов/символ и 161 tap для 500 ксимв/с. После этого на выходе выбора символов добавлен комплексный AWGN с заранее заданным EVM 0,317390, 0,55 или 0,845350. Поэтому тест учитывает реальный RRC и дискретизацию в чистой форме, но не моделирует цветной или частотно-селективный остаток реального OTA-тракта.
Для каждой из 17 частот, каждого качества и каждой скорости выполнено 300 реализаций. В строке качества B для 500 ксимв/с каждый метод имеет 5100 оценок.
| Метод | Bias | RMSE | Median abs | P95 abs | P99 abs | Катастрофические | P(≤0,25 Гц) | P(≤0,5 Гц) | P(≤1 Гц) |
|---|---|---|---|---|---|---|---|---|---|
| P0 | −0,018 Гц | 6,808 Гц | 4,643 Гц | 13,265 Гц | 17,805 Гц | 72,08% | 3,06% | 5,86% | 11,61% |
| P1 | +0,050 Гц | 3,728 Гц | 2,498 Гц | 7,437 Гц | 9,895 Гц | 50,98% | 5,24% | 10,47% | 21,27% |
| P2 | +0,078 Гц | 12,264 Гц | 8,256 Гц | 23,709 Гц | 31,583 Гц | 83,12% | 1,65% | 3,67% | 7,20% |
| P3 | +0,049 Гц | 7,089 Гц | 2,935 Гц | 8,528 Гц | 11,383 Гц | 57,94% | 4,90% | 9,61% | 18,25% |
Модельная граница Крамера—Рао для известных символов, неизвестной постоянной
фазы и комплексного AWGN равна
sqrt(6*EVM²*Rs² / ((2*pi)²*N*(N²−1))). При N=1280, Rs=500000 и
EVM=0,845350 она даёт СКО не меньше примерно 3,598 Гц. P1 с RMSE 3,728 Гц
близок к этому масштабу. Это model-dependent sanity check, а не утверждение,
что реальный OTA-остаток является AWGN.
При 20 ксимв/с P1 на том же EVM получил RMSE 0,1465 Гц и 99,92% попаданий в ±0,5 Гц; длительность преамбулы там 64 мс. Разница показывает, что ограничение 500 ксимв/с связано прежде всего с 25-кратно более коротким временем наблюдения, а не с ошибкой единиц или знака.
Lab047 и Lab054
Положительный контроль Lab047 не ухудшился: P0, P1, P2 и P3 каждый получили 36/36 HEADER_ACCEPTED, 36/36 FEC_STARTED, 36/36 CRC_PASS и 36/36 PACKET_OUTPUT. Во всех методах суммарно осталось две ошибки преамбулы и ноль ошибок заголовка.
Lab054 осталась отрицательной для всех методов:
| Метод | Ошибки преамбулы, сумма | Raw header errors | Voted header errors | HEADER_ACCEPTED | FEC_STARTED | CRC_PASS | PACKET_OUTPUT |
|---|---|---|---|---|---|---|---|
| P0 | 7767 | 946 | 283 | 0/16 | 0/16 | 0/16 | 0/16 |
| P1 | 8264 | 1000 | 313 | 0/16 | 0/16 | 0/16 | 0/16 |
| P2 | 8871 | 1085 | 348 | 0/16 | 0/16 | 0/16 | 0/16 |
| P3 | 9020 | 1140 | 373 | 0/16 | 0/16 | 0/16 | 0/16 |
Эти данные не превращают Lab054 в новый опыт и не меняют его исторический вердикт. Плохое физическое качество Lab054 не исправляется заменой одной оценки частоты.
Инженерный вывод
PREAMBLE_ONLY_INSUFFICIENT.
P3 показывает, что штатный P0 можно существенно улучшить на конкретной записи, но ни один preamble-only метод не обеспечивает устойчивую ошибку менее 0,5 Гц при качестве B. Следующий один шаг — полностью офлайн проверить decision-directed carrier tracking на протяжении burst, используя решения BPSK без знания правильного payload. Это сохраняет текущий формат пакета и позволяет использовать P3 как начальную оценку. Costas loop остаётся разумной альтернативой, но потребует отдельной настройки динамики петли. Periodic pilots дают явную опору, однако меняют формат и добавляют overhead, поэтому их логично рассматривать позже.
Lab058 commit: 82f17499ace5e655991240348401b9700c7c3349.
Lab059 не коммитировалась. Push не выполнялся. RF TX = 0. Lab060 не создавалась.




