Files
SDR-Rover/docs/lab066_current_state.md

5.8 KiB
Raw Blame History

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 мс.

Расчёт длины:

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 прошли; измерения приведены в отдельном отчёте. RF TX=0. Lab066 не коммитировалась, push не выполнялся, Lab067 не создавалась.

После отдельного разрешения выполнен один аппаратно валидный RF-сеанс без повторов. Legacy и T2 дали одинаковые 10/16 точных пакетов. Полные результаты и физическое сравнение приведены в RF-отчёте.