Files
SDR-Rover/docs/lab061_current_state.md
2026-09-14 11:07:40 +03:00

3.6 KiB
Raw Permalink Blame History

Lab061 — план интеграции T2 в строгий приёмник

Lab061 выполняется только офлайн. RF TX = 0; HackRF не опрашивается.

Фактический путь приёмника

lab053_streaming_receiver.StreamingReceiver выполняет независимый поиск кандидатов и передаёт заранее выбранному PacketProcessor IQ-окно. Внутри PacketProcessor последовательно работают RRC-фильтр, временная синхронизация, оценка несущей, извлечение мягких символов, строгий разбор PHY header, Viterbi FEC, parser и CRC.

T2 добавляется в этот существующий путь после RRC и timing. Начальное состояние P3 вычисляется по квадрату всей 1280-символьной преамбулы. После преамбулы T2 видит только текущий символ, собственное BPSK-решение и предыдущее состояние. Header, payload, CRC и будущие символы ему недоступны.

Среднее DC в T2 считается только до последнего raw-отсчёта, который через причинную импульсную характеристику RRC способен повлиять на последнюю точку P3. Отсчёты header и payload не входят и в эту подготовительную оценку.

Режим задаётся до запуска как carrier_tracking_mode="legacy" или "t2". Значение по умолчанию — legacy. Повторной попытки после CRC FAIL нет.

Зафиксированная математика

При нормированной полосе Bn=0.0005 и затухании zeta=1/sqrt(2):

theta = Bn / (zeta + 1/(4*zeta))

alpha = 4*zeta*theta / (1 + 2*zeta*theta + theta^2)

beta = 4*theta^2 / (1 + 2*zeta*theta + theta^2)

Получаются alpha=0.0013324447407406753 и beta=8.882964938271169e-7 на один символ. Частотное состояние внутри петли хранится в радианах на символ; для отчёта оно переводится в герцы как omega*Rs/(2*pi). Коэффициенты Lab060 не перенастраиваются.

Критерии

  • чистый полный штатный PHY-пакет 500 ksymbol/s проходит поиск, header, FEC и CRC;
  • сравнение legacy/T2 выполняется при заранее выбранном режиме;
  • Lab047 остаётся 36/36 в обоих режимах;
  • Lab054 остаётся историческим NOT_A, 0/16, если строгий путь его не восстановит;
  • background даёт ноль header и packet;
  • изменение диагностической reference payload не меняет решения или траекторию T2;
  • алгоритм остаётся конечным при ошибках символов, провале амплитуды и шуме.

После завершения и независимой проверки Lab061 фиксируется отдельным коммитом по разрешению пользователя. Push выполняется пользователем отдельно. Lab062 не создаётся автоматически.