Lab062: record invalidated 500 ksymbol/s RF packet trial
This commit is contained in:
@@ -570,3 +570,29 @@
|
||||
[synthetic CSV](../data/processed/lab061/synthetic_packet_results.csv).
|
||||
- **STOP:** Lab061 фиксируется этим отдельным коммитом; push выполняется
|
||||
пользователем отдельно, Lab062 не создана.
|
||||
|
||||
## Lab062 — полный 500K PHY-пакет, подготовка и RX-only preflight
|
||||
|
||||
- **Запись 056; RF TX=0.** Подготовлены16 пакетов по256 байт payload,
|
||||
0,184512с. Legacy/T2 дали16/16 строгих HEADER/FEC/CRC и точных payload.
|
||||
- **Геометрия:**1400МГц, примерно1,2м, LOS в помещении; TX возле окна, RX на
|
||||
столе, одинаковая поляризация, антенны и кабели неподвижны.
|
||||
- **Аппаратный preflight PASS:** MASTER/SLAVE reg29=0x26, SLAVE CLKIN=DETECTED
|
||||
через133,5795мс. RX-only:800000 отсчётов, RMS2,314058, AC RMS0,985483,
|
||||
max|I|/|Q|=6/8, clipping0, overruns0, сильного фона нет.
|
||||
- **Проверки:** quick gate962/35/13 PASS, pytest962 passed. Усиления10/24/24дБ
|
||||
сохранены; аналоговая компрессия без прибора остаётся неизвестной.
|
||||
- [План](lab062_current_state.md), [отчёт](lab062_rx_preflight.md),
|
||||
[software](../data/processed/lab062/software_gate.json),
|
||||
[preflight](../data/processed/lab062/preflight_result.json).
|
||||
- **STOP:** технически готово к одному TX, но отдельного разрешения ещё нет.
|
||||
Lab062 не коммитировалась, push не выполнялся, Lab063 не создана.
|
||||
- **Единственный RF-сеанс:** выполнен один TX без повторов. RX сохранён полностью: 24 000 000
|
||||
комплексных отсчётов, 3,000 с, overruns 0, clipping 0. В TX-журнале зарегистрирован
|
||||
промежуточный `1 underruns, longest 16672 bytes`, поэтому сеанс признан невалидным для чистого
|
||||
A/B-сравнения. Legacy/T2 дали одинаковый пакетный итог 0/16, T2 gain 0.
|
||||
- [RF-отчёт](lab062_rf_result.md),
|
||||
[JSON](../data/processed/lab062/rf_analysis.json),
|
||||
[покадровый CSV](../data/processed/lab062/packet_comparison.csv).
|
||||
- **Текущее состояние:** `RF TX=0`; повтор не выполнялся, Lab062 не закоммичена, push не
|
||||
выполнялся, Lab063 не создана. Следующий шаг требует отдельного согласования.
|
||||
|
||||
48
docs/lab062_current_state.md
Normal file
48
docs/lab062_current_state.md
Normal file
@@ -0,0 +1,48 @@
|
||||
# Lab062 — полный пакет 500K, подготовка к одному RF-сеансу
|
||||
|
||||
Lab062 проверяет T2 на полном штатном PHY-пакете в одном будущем коротком
|
||||
эфирном сеансе. На текущем этапе разрешены подготовка, программный шлюз,
|
||||
аппаратная проверка общей опоры и RX-only запись фона. Передача запрещена до
|
||||
отдельного разрешения пользователя.
|
||||
|
||||
## Неподвижная физическая схема
|
||||
|
||||
| Условие | Фактическое значение |
|
||||
|---|---|
|
||||
| Частота | 1400000000 Гц, только для Lab062 |
|
||||
| Расстояние TX–RX | примерно 1,2 м |
|
||||
| Геометрия | прямая видимость, помещение |
|
||||
| TX | плата и антенна возле окна |
|
||||
| RX | плата и антенна на столе пользователя |
|
||||
| Антенны | имеющиеся антенны на 1400 МГц, неподвижны |
|
||||
| Поляризация | одинаковая |
|
||||
| Тактирование | 10 МГц TCXO → MASTER → MASTER CLKOUT → SLAVE CLKIN |
|
||||
|
||||
Длинный кабель общей опоры, USB-подключение, антенны и остальные кабели не
|
||||
перемещаются. Пользователь по возможности не проходит между антеннами. Во время
|
||||
будущего сеанса не меняются частота, усиления, ориентация и PHY.
|
||||
|
||||
## Параметры
|
||||
|
||||
- 16 полных пакетов, payload каждого — 256 байт;
|
||||
- BPSK, 500000 символов/с, Fs 8000000 выборок/с, 16 выборок/символ;
|
||||
- центральная частота 1400 МГц, цифровая несущая +50 кГц;
|
||||
- TX VGA 10 дБ, RX LNA/VGA 24/24 дБ;
|
||||
- RF amplifier и Bias-Tee выключены;
|
||||
- один конечный TX-waveform и одна будущая RX-запись;
|
||||
- режим приёмника задаётся заранее: `legacy` или `t2`, без CRC-fallback.
|
||||
|
||||
RX-only preflight не меняет усиления. Он проверяет rail-коды, overruns,
|
||||
максимальные |I|/|Q|, полный и AC RMS, сильный фон и ошибки аппаратных команд.
|
||||
Эвристический STOP для неожиданно сильного цифрового фона: AC RMS не менее 20
|
||||
кодов или максимум |I|/|Q| не менее 100 кодов. Отсутствие цифрового клиппинга
|
||||
не доказывает отсутствие аналоговой компрессии.
|
||||
|
||||
Обязательная аппаратная точка: MASTER reg29=0x26, SLAVE reg29=0x26 и SLAVE
|
||||
CLKIN=DETECTED. Любой отказ означает `RF TX = 0` и STOP.
|
||||
|
||||
Lab062 не коммитируется. Push не выполняется. Lab063 не создаётся автоматически.
|
||||
|
||||
## Фактический RF-результат
|
||||
|
||||
14 сентября 2026 года выполнен ровно один разрешённый TX-сеанс. Полная RX-запись сохранена, но в промежуточной строке `hackrf_transfer` зарегистрирован `1 underruns, longest 16672 bytes`. Повтор не выполнялся. Строгие `legacy` и `t2` на одной записи дали 0/16 CRC и пакетов; T2 gain равен 0. Подробности и покадровая таблица приведены в [отчёте](lab062_rf_result.md). Текущий статус: `RF TX = 0`, Lab062 не закоммичена, push не выполнялся, Lab063 не создана.
|
||||
108
docs/lab062_rf_result.md
Normal file
108
docs/lab062_rf_result.md
Normal file
@@ -0,0 +1,108 @@
|
||||
# Lab062 — результат единственного RF-сеанса
|
||||
|
||||
Передача была запущена один раз. Приёмник сохранил полную трёхсекундную IQ-запись без переполнений и цифрового клиппинга. Однако `hackrf_transfer` во время передачи сообщил об одном кратком underrun: буфер передатчика один раз опустел на интервал до 16 672 байт. В итоговой строке утилита напечатала ноль underrun, но промежуточную ненулевую строку игнорировать нельзя. Поэтому этот сеанс нельзя считать чистым сравнением `legacy` и `t2`.
|
||||
|
||||
Оба строгих варианта приёмника обработали одну и ту же запись и выдали 0 из 16 пакетов. T2 не дал выигрыша в пакетах. Установлено, что передача состоялась, общий тактовый сигнал перед ней был исправен, RX-файл полный, а строгий результат равен 0/16 в обоих режимах. Нельзя установить, каким был бы результат без underrun, и нельзя приписывать все ошибки самому T2 или эфирному каналу. Аналоговая компрессия также остаётся неизвестной без измерительного прибора.
|
||||
|
||||
## Условия
|
||||
|
||||
| Параметр | Значение |
|
||||
|---|---:|
|
||||
| RF | 1 400 000 000 Гц |
|
||||
| Символьная скорость | 500 000 символов/с |
|
||||
| Частота дискретизации | 8 000 000 комплексных отсчётов/с |
|
||||
| Цифровая несущая | +50 000 Гц |
|
||||
| Пакеты | 16 полных PHY-пакетов по 256 байт payload |
|
||||
| TX | 1 476 096 отсчётов, 0,184512 с, VGA 10 дБ |
|
||||
| RX | LNA/VGA 24/24 дБ, 3 с |
|
||||
| RF amplifier / Bias-Tee | OFF / OFF |
|
||||
| Геометрия | около 1,2 м, LOS, помещение; TX возле окна, RX на столе |
|
||||
| Антенны | имеющиеся антенны на 1400 МГц, одинаковая поляризация, неподвижны |
|
||||
| Опора | 10 МГц TCXO → MASTER → MASTER CLKOUT → SLAVE CLKIN |
|
||||
|
||||
SHA-256 передаваемого файла: `e84bbce227426c0aac13a48ded1286ca4a44fc6e3efce01f6e5a513217c87ff5`.
|
||||
|
||||
## Аппаратный результат
|
||||
|
||||
- перед TX повторно получены `MASTER reg29 = 0x26`, `SLAVE reg29 = 0x26`, `SLAVE CLKIN = DETECTED`;
|
||||
- выполнен один TX-сеанс, автоматических повторов нет;
|
||||
- RX: 24 000 000 комплексных отсчётов, 48 000 000 байт, 3,000 с;
|
||||
- SHA-256 RX: `ce0bd603e4ca356af67d504ee11c9e9f38171f31c7427fbe61216a28126b2b32`;
|
||||
- RX overruns: 0 во всех пяти строках журнала;
|
||||
- RX clipping: 0;
|
||||
- TX underruns: промежуточный максимум 1, `longest 16672 bytes`; финальная строка — 0;
|
||||
- cleanup: оба CLKOUT выключены без зарегистрированных ошибок, SDR-процессы после сеанса — `CLEAR`;
|
||||
- текущее состояние: `RF TX = 0`.
|
||||
|
||||
Из-за ненулевой промежуточной строки underrun статус сеанса: `INVALID_TX_UNDERRUN`. Полученные файлы сохранены, повтор не выполнялся.
|
||||
|
||||
## Строгое декодирование одной записи
|
||||
|
||||
| Стадия | legacy | T2 |
|
||||
|---|---:|---:|
|
||||
| CANDIDATES | 144 | 144 |
|
||||
| TRUE PACKETS FOUND | 0 | 0 |
|
||||
| HEADER ACCEPTED | 3 | 3 |
|
||||
| FEC STARTED | 3 | 3 |
|
||||
| FEC PASS | 3 | 3 |
|
||||
| CRC STARTED | 3 | 3 |
|
||||
| CRC PASS | 0 | 0 |
|
||||
| PACKET OUTPUT | 0 | 0 |
|
||||
| EXACT PAYLOAD MATCH | 0 | 0 |
|
||||
|
||||
Детектор в обоих запусках получил 209 956 первичных кандидатов, дешёвая ступень отклонила 209 812, после группировки строгий декодер проверил 144 кандидата. Переполнения очереди кандидатов не было. Никакого fallback между `legacy` и `t2` не выполнялось.
|
||||
|
||||
- `PASSED BY BOTH = []`
|
||||
- `PASSED ONLY BY LEGACY = []`
|
||||
- `PASSED ONLY BY T2 = []`
|
||||
- `FAILED BY BOTH = [1, 2, …, 16]`
|
||||
|
||||
## Таблица 16 фактических границ
|
||||
|
||||
Начало потока найдено только после строгого вердикта корреляцией с первым TX-пакетом: отсчёт 4 256 091, отношение пика к медиане 21,739. Знание TX не передавалось детектору и не использовалось для повторной настройки приёмника. Во всех строках `H/F/C/O` означают header/FEC/CRC/output; `1` — проход, `0` — непроход. Ошибки символов и оценки частоты — диагностические, по известной границе и известным переданным символам.
|
||||
|
||||
| № | legacy H/F/C/O | T2 H/F/C/O | Preamble errors | Header errors | Payload errors до FEC | CFO нач., Гц | T2 фин., Гц | T2 lock |
|
||||
|---:|:---:|:---:|---:|---:|---:|---:|---:|:---:|
|
||||
| 1 | 0/0/0/0 | 0/0/0/0 | 108 | 20 | 367 | -2.511 | +1.939 | не определён |
|
||||
| 2 | 0/0/0/0 | 0/0/0/0 | 135 | 11 | 377 | +16.850 | -2.223 | не определён |
|
||||
| 3 | 0/0/0/0 | 0/0/0/0 | 466 | 115 | 2229 | -266.238 | -265.796 | не определён |
|
||||
| 4 | 0/0/0/0 | 0/0/0/0 | 515 | 104 | 2266 | +297.250 | +293.800 | не определён |
|
||||
| 5 | 0/0/0/0 | 0/0/0/0 | 108 | 27 | 369 | -1.712 | -0.835 | не определён |
|
||||
| 6 | 1/1/0/0 | 1/1/0/0 | 112 | 10 | 345 | +4.676 | -3.164 | не определён |
|
||||
| 7 | 0/0/0/0 | 0/0/0/0 | 113 | 7 | 344 | +2.113 | +1.094 | не определён |
|
||||
| 8 | 0/0/0/0 | 0/0/0/0 | 91 | 19 | 368 | +0.964 | +0.354 | не определён |
|
||||
| 9 | 0/0/0/0 | 0/0/0/0 | 105 | 21 | 367 | -2.679 | +0.191 | не определён |
|
||||
| 10 | 0/0/0/0 | 0/0/0/0 | 116 | 7 | 345 | -0.290 | +0.947 | не определён |
|
||||
| 11 | 0/0/0/0 | 1/1/0/0 | 109 | 9 | 392 | +0.757 | -0.142 | не определён |
|
||||
| 12 | 0/0/0/0 | 0/0/0/0 | 297 | 110 | 2181 | -223.050 | -222.389 | не определён |
|
||||
| 13 | 0/0/0/0 | 0/0/0/0 | 304 | 36 | 524 | -0.161 | -2.081 | не определён |
|
||||
| 14 | 1/1/0/0 | 0/0/0/0 | 314 | 127 | 2091 | +228.209 | +224.928 | не определён |
|
||||
| 15 | 1/1/0/0 | 1/1/0/0 | 131 | 7 | 395 | -9.960 | +2.284 | не определён |
|
||||
| 16 | 0/0/0/0 | 0/0/0/0 | 100 | 23 | 355 | +13.157 | -0.868 | не определён |
|
||||
|
||||
В реализации T2 нет отдельного детектора lock, поэтому поле нельзя честно заменить на `PASS` или `FAIL`. Сохранены начальное состояние частоты и конечное состояние петли.
|
||||
|
||||
## Физическое качество по методике Lab058
|
||||
|
||||
Функции `analyze_values` и `channel_metrics` из Lab058 применены отдельно к каждому полному пакету. Для оценки использованы диагностические границы и чередующиеся обучающие/проверочные участки с защитными краями. Это измерение сделано после строгого результата и не меняет 0/16.
|
||||
|
||||
| Метрика | Lab062 | Lab056, 500K | Разница по смыслу |
|
||||
|---|---:|---:|---|
|
||||
| Диагностическая доля ошибочных символов | 0,099287 | 0,034959 | Lab062 хуже |
|
||||
| Нормированное RMS-отклонение, EVM | 1,220401 | 0,845350 | Lab062 хуже |
|
||||
| Matched/residual | -1,730051 дБ | +1,464846 дБ | Lab062 хуже на 3,194897 дБ |
|
||||
| Неравномерность усиления, p95–p05 | медиана 6,660341 дБ | среднее 5,471382 дБ | Lab062 больше |
|
||||
|
||||
Для Lab062 разброс неравномерности между пакетами составил 6,236828…10,617549 дБ. Остаток включает шум, искажения канала и возможное влияние underrun; называть его чистым шумом нельзя. Отдельная диагностика именно выходных символов T2 дала SER 0,186626 и RMS 1,699461; это другой срез данных, поэтому он не подменяет приведённые выше сопоставимые метрики Lab058.
|
||||
|
||||
## Инженерный вывод
|
||||
|
||||
Чистое сравнение `legacy` и T2 не состоялось из-за зафиксированного TX underrun. Фактический строгий результат существующей записи — 0/16 для обоих режимов, выигрыш T2 равен нулю. В записи видны неоднородные повреждения пакетов и заметно худшее качество символов, чем у 500K-сегментов Lab056, но эти наблюдения нельзя отделить от аппаратной ошибки передачи.
|
||||
|
||||
Следующий одиночный шаг: без RF локализовать момент underrun относительно границ пакетов и проверить, совместимы ли провалы качества с его положением. Новый RF-сеанс, Lab063, изменение PHY или усилений этим отчётом не разрешаются.
|
||||
|
||||
`LAB062 COMMIT = NOT PERFORMED`
|
||||
|
||||
`PUSH = NOT PERFORMED`
|
||||
|
||||
`RF TX = 0`
|
||||
108
docs/lab062_rx_preflight.md
Normal file
108
docs/lab062_rx_preflight.md
Normal file
@@ -0,0 +1,108 @@
|
||||
# Lab062 — подготовка и RX-only preflight
|
||||
|
||||
14 сентября 2026 года выполнена подготовка полного 500K PHY-сеанса и одна
|
||||
аппаратная проверка при выключенном передатчике. Результат preflight — PASS.
|
||||
Передача не запускалась: `RF TX = 0`.
|
||||
|
||||
## Условия
|
||||
|
||||
| Параметр | Значение |
|
||||
|---|---|
|
||||
| Центральная частота | 1400000000 Гц |
|
||||
| Скорость символов | 500000 символов/с |
|
||||
| Частота дискретизации | 8000000 выборок/с |
|
||||
| Пакеты | 16 полных PHY-пакетов |
|
||||
| Payload | 256 байт в каждом пакете |
|
||||
| TX VGA | 10 дБ |
|
||||
| RX LNA / VGA | 24 / 24 дБ |
|
||||
| RF amplifier / Bias-Tee | выключены |
|
||||
| Расстояние TX–RX | примерно 1,2 м |
|
||||
| Геометрия | прямая видимость, помещение |
|
||||
| TX | плата и антенна возле окна |
|
||||
| RX | плата и антенна на столе пользователя |
|
||||
| Антенны | имеющиеся антенны на 1400 МГц, неподвижны |
|
||||
| Поляризация | одинаковая |
|
||||
| Общая опора | 10 МГц TCXO → MASTER → MASTER CLKOUT → SLAVE CLKIN |
|
||||
|
||||
Длинный clock-кабель и USB-схема не менялись. Антенны, кабели, ориентация,
|
||||
частота, усиления и PHY должны остаться неизменными до будущего разрешённого
|
||||
сеанса.
|
||||
|
||||
## Программная проверка
|
||||
|
||||
Создан один waveform из 16 пакетов. Его длина — 1476096 комплексных отсчётов,
|
||||
2952192 байта и 0,184512 с. SHA-256:
|
||||
`e84bbce227426c0aac13a48ded1286ca4a44fc6e3efce01f6e5a513217c87ff5`.
|
||||
|
||||
Строгий приёмник в заранее выбранных режимах дал:
|
||||
|
||||
| Режим | Header | FEC | CRC | Точный payload и порядок |
|
||||
|---|---:|---:|---:|---:|
|
||||
| legacy | 16/16 | 16/16 | 16/16 | 16/16 |
|
||||
| T2 | 16/16 | 16/16 | 16/16 | 16/16 |
|
||||
|
||||
Автоматического повторного декодирования по результату CRC нет.
|
||||
|
||||
## Общая опора и RX-only фон
|
||||
|
||||
Свежая инвентаризация подтвердила обе HackRF One r9 с firmware/libhackrf
|
||||
2024.02.1. Роли сохранены:
|
||||
|
||||
- MASTER `000000000000000097c063dc323b97d3`;
|
||||
- SLAVE `000000000000000097c063dc2e5327d3`.
|
||||
|
||||
Аппаратная проверка получила:
|
||||
|
||||
```text
|
||||
MASTER reg29 = 0x26
|
||||
SLAVE reg29 = 0x26
|
||||
SLAVE CLKIN = DETECTED
|
||||
CLKIN query = 2
|
||||
time to detect = 133.5795 ms
|
||||
```
|
||||
|
||||
Первый опрос SLAVE ещё показывал отсутствие опоры, второй штатный опрос её
|
||||
обнаружил. После этого SLAVE записал 800000 комплексных отсчётов, 0,1 с, при
|
||||
1400 МГц и RX LNA/VGA 24/24 дБ.
|
||||
|
||||
| Метрика RX-only записи | Значение |
|
||||
|---|---:|
|
||||
| Полный RMS IQ | 2,314058 кода |
|
||||
| AC RMS после удаления среднего | 0,985483 кода |
|
||||
| Средние I / Q | 0,966063 / 1,857529 кода |
|
||||
| Максимум \|I\| / \|Q\| | 6 / 8 кодов |
|
||||
| Максимальная комплексная амплитуда | 8,246211 кода |
|
||||
| Цифровой clipping | 0 / 800000 отсчётов |
|
||||
| RX overruns | 0 |
|
||||
| Неожиданно сильный сигнал | нет |
|
||||
|
||||
Сильным цифровым фоном считался бы AC RMS не менее 20 кодов или максимум
|
||||
`|I|/|Q|` не менее 100 кодов. Оба показателя значительно ниже порога.
|
||||
|
||||
Отсутствие rail-кодов не доказывает отсутствия аналоговой компрессии при
|
||||
будущем TX. Абсолютная RF-мощность без измерительного прибора также неизвестна.
|
||||
Усиления по результату preflight не менялись.
|
||||
|
||||
Унаследованное от Lab056 поле энергии на символ исключено из обработанной
|
||||
сводки: у фоновой записи нет символов, поэтому такая величина к ней неприменима.
|
||||
Сырой аппаратный JSON сохранён без переписывания; это поле не участвовало в
|
||||
решении PASS.
|
||||
|
||||
SHA-256 RX-only записи:
|
||||
`4cc0ceef5a95f84e5aa0c232d14ff1123efd307494b5c8a5646854be912fdbca`.
|
||||
|
||||
После записи оба CLKOUT выключены без ошибок. Проверка процессов до и после
|
||||
дала `CLEAR`. Вызовов `hackrf_transfer -t` не было. Эксклюзивный маркер
|
||||
preflight запрещает его автоматический повтор.
|
||||
|
||||
Артефакты:
|
||||
|
||||
- [подготовка](../data/processed/lab062/preparation.json);
|
||||
- [программный шлюз](../data/processed/lab062/software_gate.json);
|
||||
- [результат preflight](../data/processed/lab062/preflight_result.json);
|
||||
- исходные TX и RX-only CS8 находятся в `data/raw/lab062/` и в Git не входят.
|
||||
|
||||
`READY FOR SINGLE LAB062 TX = YES` означает только техническую готовность.
|
||||
Отдельного разрешения на передачу ещё нет. `RF TX = 0`. STOP.
|
||||
|
||||
Lab062 не коммитируется. Push не выполняется. Lab063 не создаётся автоматически.
|
||||
Reference in New Issue
Block a user