Lab066: validate 500 ksymbol/s full-packet OTA reception
This commit is contained in:
@@ -700,3 +700,44 @@
|
||||
- **Независимая проверка:** прямой пересчёт CS8 подтвердил SHA, счётчики,
|
||||
локализацию, фон, matched/residual, `h`, CFO и спектральные полосы. Расхождений
|
||||
нет. Quick gate1000/38/13 PASS, pytest1000 passed, diff check PASS.
|
||||
- **Фиксация:** Lab065 зафиксирована локальным коммитом
|
||||
`dacf04f2d0a15c0c1b56a7fb527db61fc2e38462`; push не выполнялся.
|
||||
|
||||
## Lab066 — исправленный повтор полного 500K PHY-сеанса
|
||||
|
||||
- **Основание:** Lab062 остаётся `RF_SESSION_INVALID_TX_UNDERRUN`, legacy/T2
|
||||
0/16. Lab066 исправляет отсутствовавшие межпакетные паузы и использует
|
||||
максимальный наблюдавшийся счётчик потерь.
|
||||
- **TX:** 16 полных PHY-пакетов по256 байт, packet waveform92256 отсчётов;
|
||||
15 нулевых пауз по40000 отсчётов/5мс и guards по800000 отсчётов/100мс.
|
||||
Всего3676096 отсчётов,0,459512с; SHA-256
|
||||
`621b0bb8ec72bba4f522c79a5c77669c850740ea481270c4dcc2a7317819f199`.
|
||||
- **Параметры:** 1400МГц, Fs8Мвыб/с,500ксимв/с, несущая+50кГц,
|
||||
TX VGA20дБ, RX LNA/VGA24/24дБ, amplifier/Bias-Tee OFF; прежняя геометрия.
|
||||
- **Software gate:** legacy и T2 независимо дали16/16 HEADER/FEC/CRC,
|
||||
packet output и точных упорядоченных payload. Fallback отсутствует; T2
|
||||
инициализируется по собственной преамбуле каждого пакета.
|
||||
- **RX-only preflight:** MASTER/SLAVE reg29=0x26, CLKIN DETECTED через132,113мс;
|
||||
AC RMS0,827637, max|I|/|Q|=4/5, clipping0, maximum overruns0. Cleanup PASS,
|
||||
процессы CLEAR.
|
||||
- **Проверки:** quick gate1013/39/13 PASS, pytest1013 passed, diff check PASS;
|
||||
verifier и adversary не оставили открытых замечаний.
|
||||
- [Состояние](lab066_current_state.md), [RX-only отчёт](lab066_rx_preflight.md),
|
||||
[подготовка](../data/processed/lab066/preparation.json),
|
||||
[software gate](../data/processed/lab066/software_gate.json),
|
||||
[preflight](../data/processed/lab066/preflight_result.json).
|
||||
- **STOP:** RF TX=0; требуется отдельное прямое разрешение на один TX. Lab066
|
||||
не коммитировалась, push не выполнялся, Lab067 не создавалась.
|
||||
- **Единственный RF-сеанс:** один TX, повторов0; maximum underrun/overrun0/0,
|
||||
clipping0, cleanup PASS, процессы CLEAR. RX16000000 отсчётов, SHA-256
|
||||
`72ff7ddd8b30baa4a5c066361ca1f8dfa664f1da37f65c0c373b211ce6cf00f0`.
|
||||
- **Строгий результат:** legacy и T2 совпали — по10/16 точных пакетов;
|
||||
приняты4–8 и10–14, отказали на header пакеты1–3,9,15,16. Выигрыша T2 нет.
|
||||
- **Физическое качество:** SER0,011047, RMS0,528374, matched/residual
|
||||
+5,542117дБ, медианная неравномерность2,870070дБ. Все четыре показателя лучше
|
||||
Lab056 B и невалидной Lab062.
|
||||
- **Итог:** `PARTIAL_PACKET_RECOVERY_NO_T2_GAIN`. [RF-отчёт](lab066_rf_result.md),
|
||||
[RF summary](../data/processed/lab066/rf_summary.json),
|
||||
[packet CSV](../data/processed/lab066/packet_comparison.csv).
|
||||
- **После сеанса:** RF TX=0, второй TX не выполнялся. Lab066 не
|
||||
коммитировалась, push не выполнялся, Lab067 не создавалась.
|
||||
|
||||
92
docs/lab066_current_state.md
Normal file
92
docs/lab066_current_state.md
Normal file
@@ -0,0 +1,92 @@
|
||||
# Lab066 — исправленный повтор полного 500K PHY-сеанса
|
||||
|
||||
## Цель и границы
|
||||
|
||||
Lab066 повторяет исходную цель Lab062 после двух установленных дефектов того
|
||||
сеанса: пакеты Lab062 шли вплотную, без заявленных пауз 5 мс, а в TX-журнале
|
||||
был промежуточный underrun. Исторический результат Lab062 сохраняется без
|
||||
изменений: `RF_SESSION_INVALID_TX_UNDERRUN`, legacy 0/16, T2 0/16.
|
||||
|
||||
На этапе подготовки Lab066 была ограничена программным декодированием,
|
||||
common-clock и RX-only preflight; передача тогда не выполнялась. После этого
|
||||
пользователь отдельно разрешил один TX. Автоматический повтор оставался
|
||||
запрещён и не выполнялся.
|
||||
|
||||
## Радиопараметры
|
||||
|
||||
- RF: 1400000000 Гц;
|
||||
- Fs: 8000000 комплексных отсчётов/с;
|
||||
- символьная скорость: 500000 символов/с, 16 отсчётов/символ;
|
||||
- цифровая несущая: +50000 Гц;
|
||||
- TX VGA: 20 дБ;
|
||||
- RX LNA/VGA: 24/24 дБ;
|
||||
- RF amplifier и Bias-Tee: OFF;
|
||||
- 16 штатных PHY-пакетов с PRBS7-преамбулой, заголовком, FEC и CRC;
|
||||
- payload: 256 байт, детерминированный и различимый для каждого пакета;
|
||||
- геометрия: около 1,2 м, LOS в помещении, прежние антенны и поляризация;
|
||||
MASTER TX возле окна, SLAVE RX на столе.
|
||||
|
||||
## Итоговый TX-файл
|
||||
|
||||
Каждый packet waveform занимает 92256 отсчётов. Между соседними пакетами
|
||||
записаны 15 нулевых пауз по 40000 отсчётов, то есть ровно по 5 мс. Перед первым
|
||||
и после последнего пакета добавлены нулевые guards по 800000 отсчётов, или по
|
||||
100 мс.
|
||||
|
||||
Расчёт длины:
|
||||
|
||||
```text
|
||||
16 × 92256 + 15 × 40000 = 2076096 отсчётов без внешних guards
|
||||
2076096 + 2 × 800000 = 3676096 отсчётов всего
|
||||
3676096 / 8000000 = 0,459512 с
|
||||
```
|
||||
|
||||
Фактическая длина совпала с расчётом: 3676096 комплексных отсчётов,
|
||||
7352192 байта. SHA-256:
|
||||
`621b0bb8ec72bba4f522c79a5c77669c850740ea481270c4dcc2a7317819f199`.
|
||||
Повторная сборка дала те же байты. Нулевые guards и каждая из 15 пауз проверены
|
||||
по точным границам из сохранённой разметки.
|
||||
|
||||
## Программное декодирование
|
||||
|
||||
Весь конечный TX-файл дважды прошёл один и тот же строгий приёмный тракт. Режимы
|
||||
legacy и T2 запускались отдельно, автоматического fallback между ними нет.
|
||||
|
||||
| Режим | Кандидаты | Header | FEC | CRC | Выход | Payload и порядок |
|
||||
|---|---:|---:|---:|---:|---:|---:|
|
||||
| legacy | 16 | 16/16 | 16/16 | 16/16 | 16/16 | 16/16 |
|
||||
| T2 | 16 | 16/16 | 16/16 | 16/16 | 16/16 | 16/16 |
|
||||
|
||||
Позиции принятых пакетов равны ожидаемым позициям в разметке. Для каждого
|
||||
кандидата T2 заново оценивает начальные параметры по собственной преамбуле.
|
||||
Наблюдение дало по два локальных запуска слежения на пакет: для заголовка и
|
||||
полного кадра. Контекст обработки создаётся заново, состояния между пакетами
|
||||
не переносятся.
|
||||
|
||||
Аппаратный анализ применил legacy и T2 к одному сохранённому RX-файлу. До
|
||||
строгого вердикта декодеру не передавались payload или ожидаемые биты. Известный
|
||||
TX использован после вердикта только для физических диагностик и сравнения с
|
||||
Lab056 B, Lab062 и Lab066.
|
||||
|
||||
## Проверки перед preflight
|
||||
|
||||
- `python tools/quick_gate.py`: PASS, 1013 проверок ядра, 39 функциональных,
|
||||
13 аппаратных пропусков;
|
||||
- `python -m pytest tests/ -q`: 1013 passed;
|
||||
- `git diff --check`: PASS.
|
||||
|
||||
Независимый verifier пересчитал длину, SHA, все нулевые диапазоны, пакетные
|
||||
срезы, программное декодирование и RX-only метрики; расхождений нет. Read-only
|
||||
adversary проверил запрет TX, одноразовость, привязку capture к конфигурации,
|
||||
счётчики, live-проверку фона и границу oracle-диагностики; открытых замечаний
|
||||
нет.
|
||||
|
||||
## Текущее состояние
|
||||
|
||||
Common-clock и RX-only preflight прошли; измерения приведены в
|
||||
[отдельном отчёте](lab066_rx_preflight.md). `RF TX=0`. Lab066 не
|
||||
коммитировалась, push не выполнялся, Lab067 не создавалась.
|
||||
|
||||
После отдельного разрешения выполнен один аппаратно валидный RF-сеанс без
|
||||
повторов. Legacy и T2 дали одинаковые 10/16 точных пакетов. Полные результаты
|
||||
и физическое сравнение приведены в [RF-отчёте](lab066_rf_result.md).
|
||||
118
docs/lab066_rf_result.md
Normal file
118
docs/lab066_rf_result.md
Normal file
@@ -0,0 +1,118 @@
|
||||
# Lab066 — один OTA RF-сеанс полного 500K PHY-потока
|
||||
|
||||
## Аппаратная валидность
|
||||
|
||||
15 сентября 2026 года выполнен один разрешённый TX всего подготовленного
|
||||
потока. Передача запускалась один раз; автоматических повторов не было. RX
|
||||
стартовал раньше TX и сохранил 16000000 комплексных отсчётов за 2,000000 с.
|
||||
|
||||
- TX SHA-256:
|
||||
`621b0bb8ec72bba4f522c79a5c77669c850740ea481270c4dcc2a7317819f199`;
|
||||
- RX SHA-256:
|
||||
`72ff7ddd8b30baa4a5c066361ca1f8dfa664f1da37f65c0c373b211ce6cf00f0`;
|
||||
- TX underrun observations: 0, 0; maximum 0;
|
||||
- RX overrun observations: 0, 0, 0, 0; maximum 0;
|
||||
- clipping: нет;
|
||||
- cleanup errors: нет;
|
||||
- SDR-процессы до и после: `CLEAR`.
|
||||
|
||||
Непосредственно перед TX обе платы имели reg29=`0x26`; SLAVE CLKIN обнаружен
|
||||
на втором опросе через 131,291 мс. Live RX-проверка дала AC RMS 1,173567 кода,
|
||||
max |I|/|Q|=4/5 и не обнаружила clipping или сильный фон. После сеанса оба
|
||||
CLKOUT отключены.
|
||||
|
||||
## Строгое декодирование одной RX-записи
|
||||
|
||||
Legacy и T2 получили одну и ту же непрерывную IQ-запись. Поиск кандидатов,
|
||||
временная синхронизация, RRC, пороги, PHY header, FEC, CRC и критерии принятия
|
||||
не менялись. Автоматического fallback между режимами нет.
|
||||
|
||||
| Метрика | legacy | T2 |
|
||||
|---|---:|---:|
|
||||
| Кандидаты | 145 | 145 |
|
||||
| Header PASS | 10 | 10 |
|
||||
| FEC started | 10 | 10 |
|
||||
| FEC PASS | 10 | 10 |
|
||||
| CRC started | 10 | 10 |
|
||||
| CRC PASS | 10 | 10 |
|
||||
| Packet output | 10 | 10 |
|
||||
| Exact payload match | 10 | 10 |
|
||||
|
||||
Оба режима приняли пакеты 4, 5, 6, 7, 8, 10, 11, 12, 13 и 14. Пакеты 1, 2,
|
||||
3, 9, 15 и 16 не прошли PHY header у обоих режимов. Выигрыша одного режима
|
||||
над другим нет.
|
||||
|
||||
| Пакет | Legacy H/F/C/O | T2 H/F/C/O |
|
||||
|---:|:---:|:---:|
|
||||
| 1 | 0/0/0/0 | 0/0/0/0 |
|
||||
| 2 | 0/0/0/0 | 0/0/0/0 |
|
||||
| 3 | 0/0/0/0 | 0/0/0/0 |
|
||||
| 4 | 1/1/1/1 | 1/1/1/1 |
|
||||
| 5 | 1/1/1/1 | 1/1/1/1 |
|
||||
| 6 | 1/1/1/1 | 1/1/1/1 |
|
||||
| 7 | 1/1/1/1 | 1/1/1/1 |
|
||||
| 8 | 1/1/1/1 | 1/1/1/1 |
|
||||
| 9 | 0/0/0/0 | 0/0/0/0 |
|
||||
| 10 | 1/1/1/1 | 1/1/1/1 |
|
||||
| 11 | 1/1/1/1 | 1/1/1/1 |
|
||||
| 12 | 1/1/1/1 | 1/1/1/1 |
|
||||
| 13 | 1/1/1/1 | 1/1/1/1 |
|
||||
| 14 | 1/1/1/1 | 1/1/1/1 |
|
||||
| 15 | 0/0/0/0 | 0/0/0/0 |
|
||||
| 16 | 0/0/0/0 | 0/0/0/0 |
|
||||
|
||||
H/F/C/O означает header/FEC/CRC/output. Для каждого из 16 ожидаемых пакетов
|
||||
детектор имел кандидат точно на диагностической границе пакета. У шести
|
||||
непринятых пакетов FEC и CRC не запускались из-за отказа PHY header.
|
||||
|
||||
## Физическая диагностика после строгого результата
|
||||
|
||||
Сопоставимые показатели рассчитаны отдельно по всем 16 пакетам методикой
|
||||
Lab058. Известный TX использован после завершения строгих прогонов и не влиял
|
||||
на принятие пакетов.
|
||||
|
||||
| Показатель | Lab066 |
|
||||
|---|---:|
|
||||
| Доля ошибочных символов | 0,0110466, или 1,104664% |
|
||||
| Нормированное RMS-отклонение символов | 0,528374 |
|
||||
| Согласованная мощность | 8,359398 код² |
|
||||
| Остаточная мощность | 2,333261 код² |
|
||||
| Matched/residual | +5,542117 дБ |
|
||||
| Неравномерность усиления p95–p05 | медиана 2,870070 дБ |
|
||||
| Диапазон неравномерности по пакетам | 2,724906…3,111679 дБ |
|
||||
|
||||
Остаток включает шум и немоделированные искажения; это не калиброванная
|
||||
мощность шума. Физические показатели являются диагностическими и не превращают
|
||||
непринятый пакет в успешный.
|
||||
|
||||
## Сравнение
|
||||
|
||||
| Показатель | Lab056 B | Lab062 | Lab066 |
|
||||
|---|---:|---:|---:|
|
||||
| Доля ошибочных символов | 0,034959 | 0,099287 | 0,011047 |
|
||||
| RMS-отклонение | 0,845350 | 1,220401 | 0,528374 |
|
||||
| Matched/residual | +1,464846 дБ | −1,730051 дБ | +5,542117 дБ |
|
||||
| Неравномерность полосы | 5,471382 дБ | 6,660341 дБ | 2,870070 дБ |
|
||||
|
||||
Относительно Lab056 B доля ошибочных символов ниже на 0,0239123, или на
|
||||
68,40%; RMS-отклонение ниже на 0,316976, matched/residual выше на 4,077271 дБ,
|
||||
а неравномерность меньше на 2,601312 дБ.
|
||||
|
||||
Относительно Lab062 доля ошибочных символов ниже на 0,0882400, или на 88,87%;
|
||||
RMS-отклонение ниже на 0,692027, matched/residual выше на 7,272168 дБ, а
|
||||
неравномерность меньше на 3,790271 дБ. Сравнение с Lab062 контекстное: тот
|
||||
сеанс остаётся аппаратно невалидным из-за TX underrun.
|
||||
|
||||
## Итог
|
||||
|
||||
Классификация: `PARTIAL_PACKET_RECOVERY_NO_T2_GAIN`. Аппаратно чистая запись
|
||||
дала одинаковые 10/16 точных пакетов в legacy и T2. Физическое качество заметно
|
||||
лучше Lab056 B и невалидной Lab062, однако шесть пакетов остановились на PHY
|
||||
header, поэтому результат не является полным 16/16 успехом.
|
||||
|
||||
Следующий отдельный шаг, если он будет разрешён: только офлайн сравнить ошибки
|
||||
PHY header, timing и CFO пакетов 1–3, 9, 15–16 с принятыми пакетами по уже
|
||||
сохранённому RX. Новый TX для этого не нужен.
|
||||
|
||||
Сейчас `RF TX=0`, процессы `CLEAR`. Lab066 не коммитировалась, push не
|
||||
выполнялся, Lab067 не создавалась.
|
||||
35
docs/lab066_rx_preflight.md
Normal file
35
docs/lab066_rx_preflight.md
Normal file
@@ -0,0 +1,35 @@
|
||||
# Lab066 — common-clock и RX-only preflight
|
||||
|
||||
## Результат
|
||||
|
||||
15 сентября 2026 года выполнен один preflight без передачи. До и после него
|
||||
SDR-процессы имели состояние `CLEAR`; обе HackRF One r9 и назначение ролей
|
||||
подтверждены.
|
||||
|
||||
Общая опора прошла проверку:
|
||||
|
||||
- MASTER reg29 = `0x26`;
|
||||
- SLAVE reg29 = `0x26`;
|
||||
- SLAVE CLKIN = `DETECTED`;
|
||||
- обнаружение произошло на втором опросе через 132,113 мс.
|
||||
|
||||
RX-only команда записала 800000 комплексных отсчётов на частоте 1400 МГц с
|
||||
RX LNA/VGA 24/24 дБ. Максимум всех наблюдавшихся счётчиков overrun равен нулю.
|
||||
После проверки оба CLKOUT отключены; ошибок очистки нет.
|
||||
|
||||
## Уровень фона
|
||||
|
||||
- полный RMS: 2,225641 кода;
|
||||
- AC RMS: 0,827637 кода;
|
||||
- средние I/Q: 0,947530 / 1,835941 кода;
|
||||
- max |I| / |Q|: 4 / 5;
|
||||
- доля clipped components и samples: 0 / 0;
|
||||
- неожиданный сильный сигнал: нет;
|
||||
- SHA-256 RX-only записи:
|
||||
`ff817582e6a8fc03b489bf89f46322a9db8a9493335a4360a1b0f9bedad7c4d5`.
|
||||
|
||||
## Граница разрешения
|
||||
|
||||
Preflight не запускал TX и не расходует право на будущий единственный сеанс.
|
||||
Сейчас `RF TX=0`. Для одного Lab066 TX требуется отдельное прямое разрешение.
|
||||
Автоматические повторы, изменение усилений и переход к Lab067 запрещены.
|
||||
Reference in New Issue
Block a user