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

53 lines
3.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 не
создаётся автоматически.