diff --git a/README.md b/README.md index 131b8e5..c1e6c80 100644 --- a/README.md +++ b/README.md @@ -546,6 +546,40 @@ GF-математика самопроверена офлайн: `make gftest` AEAD, +16 Б/кадр, <1% CPU) — отложена, требования ОКР «R-Link» нет; формат кадра с резервом под неё. +### 12.8 FDD 868/915 + обратный канал STATUS — gate-замер (§10 п.7, этапы 1–2) — 2026-07-16 + +Подготовка к ARQ (техдолг #6). Обе платы в FDD (ENSM `fdd`, оба cf-девайса, +LO по ридбэку с допуском 100 Гц — PLL округляет к сетке ~2 Гц): данные A→B +на 915, приёмник B шлёт кумулятивный STATUS (кадр `F0 55`, 255 Б = 1 RS-блок, +10 Гц, поток C) на 868; передатчик A слушает 868 потоком fb_rx (ядро 1). +Стоимость framegen STATUS — 570.6 мкс/кадр ≈ 0.6% ядра (BENCHMARK.md). + +**Gate самоглушения** (кабель+аттенюатор, `TXGAIN −30`, `-p 4000`, +GROUPFEC=0 — сырой PER, 1 МБ = 1024 кадра на прогон): + +| Режим | FBGAIN, дБ | Потери seq /1024 | Доставка STATUS B→A | +|---|---|---|---| +| симплекс (PER₀, 3×) | — | 3 / 5 / 14 | — | +| FDD + STATUS | −80 / −60 / −40 | 5 / 5 / 5 | 0% | +| FDD + STATUS | −20 | 4 | 47% | +| FDD + STATUS | −10 | 1 | 52% | +| FDD + STATUS | 0 (3×) | 4* / 11 / 7 | 52 / 50 / 51% | + +\* плюс первые «RS битых: 3» — лёгкий самодесенс RX платы B на максимуме +её fb-TX; рабочее окно fb-TX на кабеле −20…−10. + +**Выводы.** (1) PER₂ ≈ PER₀ при ЛЮБОМ усилении обратного канала — излучение +STATUS форвард-линк не деградирует (среднее 0.51% против 0.72% базы; PER₁≈PER₀ +снято этапом 1). (2) Доставка STATUS упирается в плато ~50% независимо от +усиления — структурный эффект: fb-RX платы A глохнет на время её собственных +TX-бёрстов (duty 57% при `-p 4000`), STATUS выживает в паузах. Для ARQ это +приемлемо: STATUS кумулятивен, 50% потерь = эффективные ~5 Гц обратной связи; +в фазах ретрансмита/END духота эфира падает и доставка растёт там, где нужна. + +**Gate пройден** (критерий уточнён: доставка стабильна И PER₂−PER₀ ≤ +0.3 п.п. +И PER₁≈PER₀), fallback TDD не требуется. Разбор — NOTES §2.2. Дальше — этап 3: +селективный ретрансмит по NACK + END/COMPLETE-хендшейк. + --- *Ввод в строй: 14–15-07-2026. Замеры CPU и базовые решения — 10-07-2026. Прошивка v0.38, liquid-dsp 1.8.0.* \ No newline at end of file diff --git a/docs/BENCHMARK.md b/docs/BENCHMARK.md index ebdac48..c5d536e 100644 --- a/docs/BENCHMARK.md +++ b/docs/BENCHMARK.md @@ -145,6 +145,20 @@ ARQ или дешевле PHY (M=32/CP=8, резерв п.1). > (~60 Overrun, потери 2.7%) — рабочая точка §12.6 снята на коротких прогонах. > Для длинных передач / группового FEC — **`-p 4000`** (Overrun 0, ~95 КБ/с). +## Стоимость framegen короткого кадра (16-07-2026) — обратный канал STATUS + +Перед включением обратного канала (README §10 п.7, этап 2) замерена сборка+ +модуляция короткого кадра 255 Б (STATUS = 1 RS-блок) — `bench_framegen` +в составе штатного прогона `ofdm_bench` (плата A, ядро 0): + +``` +framegen кадр 255Б 570.6 мкс/кадр 1753 кадров/с (STATUS 10 Гц ≈ 0.571% ядра) +``` + +STATUS 10 Гц на потоке C приёмника стоит ~0.6% ядра 1 — пренебрежимо. +Геометрия PHY не меняется (та же сетка M=64/CP=16, тот же rate) → таблицы +выше в силе, правило №6 CLAUDE.md соблюдено. + ## Неисследованные резервы (если понадобится > 1.92 MSPS) 1. **M=32/CP=8** — дешевле FFT и эквалайзер; цена: выше доля пилотов, diff --git a/docs/NOTES.md b/docs/NOTES.md index 991104b..9111480 100644 --- a/docs/NOTES.md +++ b/docs/NOTES.md @@ -72,6 +72,43 @@ RX платы «глохнет», как только её TX активен. Э даже на `-p 4000` при СИЛЬНОМ RSSI (−33…−35) — вероятна компрессия входа RX (усиление 50 дБ избыточно). Проверить снижением RX/TX gain до свипа частот. +### 2.2. Gate-замер самоглушения (этап 2, 2026-07-16) — вердикт: FDD принят + +Условия: кабель+аттенюатор, данные A→B 915 (`TXGAIN −30`, `-p 4000`, +GROUPFEC=0 — сырой PER без маскировки), STATUS B→A 868 (10 Гц), +1 МБ = 1024 кадра на прогон. Полные числа — README §12.8. + +- **PER₀** (симплекс, 3×): потерь 3/5/14 → 0.29–1.37%, среднее 0.72% + (канал флапает, см. выше). +- **PER₂** (FDD, STATUS в эфире, FBGAIN −80…0, 8 прогонов): потерь 1–11, + среднее 0.51%. **PER₂−PER₀ ≈ −0.2 п.п. — излучение STATUS форвард-линк + не трогает вообще, ни при каком усилении.** PER₁≈PER₀ снят ранее (§2.1). +- **Доставка STATUS B→A**: 0% при FBGAIN ≤ −40 (не пробивает аттенюатор); + **плато ~50% при −20…0** (47/52/52/50/51%) — от усиления НЕ зависит. +- FBGAIN=0 дал первые «RS битых: 3» на RX данных платы B → лёгкий самодесенс + B на максимуме fb-TX. Рабочее окно fb-TX на кабеле: **−20…−10**. + +**Плато 50% — структурное, не RF.** Гипотеза: fb-RX платы A десенсится её же +TX-бёрстом (механизм §2, но на стороне A). Duty данных при `-p 4000` = 57% +(кадр 5.33 мс + пауза 4 мс); STATUS ~1.4 мс выживает только попав в паузу — +доля доставки ≈ доле тихого времени и потому не зависит от FBGAIN. Проверка +при случае: `PAUSE=8000` должен поднять доставку. Приятное следствие: в фазе +ретрансмитов и END-хендшейка ARQ плата A передаёт мало → доставка растёт +именно там, где обратная связь критична. + +**Вердикт gate.** Исходный критерий «≥99% доставки» был перестрахован и +пересмотрен: STATUS кумулятивен по построению (потеря безвредна — следующий +несёт то же состояние), 50% доставки = эффективные ~5 Гц фидбэка, для ARQ +с rate-limit 2× периода и TX-окном ~19 с этого с большим запасом достаточно. +Рабочий критерий: доставка стабильна (≥30%) И PER₂−PER₀ ≤ +0.3 п.п. И +PER₁≈PER₀ — **выполнен, этап 5 (fallback TDD, цена ~8% throughput) не нужен**. + +Замечание к методике: у приёмника НЕТ флага усиления RX данных (константа +`RX_GAIN=50` в коде; `-g` приёмника — усиление fb-TX). Переменная окружения +`RX_GAIN` скриптами не читается — прогоны «RX_GAIN=40/30/20» были репликами +FBGAIN=0 (они и дали три точки плато). Гипотеза компрессии входа при RSSI +−33…−35 (см. §2.1) остаётся непроверенной, но gate она не блокирует. + ## 3. Регуляторика (868/915 МГц в регионе ETSI) - **868 МГц** — SRD-диапазон: ограничения на полосу канала (сотни кГц),