From fc836f2af10ba3023d9ae061f1139a86430046b3 Mon Sep 17 00:00:00 2001 From: Maxim Date: Thu, 16 Jul 2026 11:42:08 +0300 Subject: [PATCH] =?UTF-8?q?=D0=AD=D1=82=D0=B0=D0=BF=202=20-=20README=20?= =?UTF-8?q?=C2=A712.8:=20=D1=82=D0=B0=D0=B1=D0=BB=D0=B8=D1=86=D0=B0=20gate?= =?UTF-8?q?=20(PER0=203/5/14,=20PER2=201-11=20=D0=BF=D1=80=D0=B8=20FBGAIN?= =?UTF-8?q?=20-80..0,=20=20=20=D0=B4=D0=BE=D1=81=D1=82=D0=B0=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20STATUS=200%=20=D0=BF=D1=80=D0=B8=20<=3D-40,=20=D0=BF?= =?UTF-8?q?=D0=BB=D0=B0=D1=82=D0=BE=20~50%=20=D0=BF=D1=80=D0=B8=20-20..0),?= =?UTF-8?q?=20=D0=B2=D0=B5=D1=80=D0=B4=D0=B8=D0=BA=D1=82=20-=20NOTES=20?= =?UTF-8?q?=C2=A72.2:=20=D1=80=D0=B0=D0=B7=D0=B1=D0=BE=D1=80=20=D0=BF?= =?UTF-8?q?=D0=BB=D0=B0=D1=82=D0=BE=2050%=20(=D1=81=D1=82=D1=80=D1=83?= =?UTF-8?q?=D0=BA=D1=82=D1=83=D1=80=D0=BD=D0=BE=D0=B5:=20fb-RX=20=D0=BF?= =?UTF-8?q?=D0=BB=D0=B0=D1=82=D1=8B=20A=20=D0=B3=D0=BB=D0=BE=D1=85=D0=BD?= =?UTF-8?q?=D0=B5=D1=82=20=D0=B2=20=D0=B5=D1=91=20=D0=B6=D0=B5=20=20=20TX-?= =?UTF-8?q?=D0=B1=D1=91=D1=80=D1=81=D1=82=D1=8B,=20duty=2057%=20=D0=BF?= =?UTF-8?q?=D1=80=D0=B8=20-p=204000),=20=D0=BE=D0=BA=D0=BD=D0=BE=20fb-TX?= =?UTF-8?q?=20-20..-10,=20=D0=BF=D0=B5=D1=80=D0=B5=D1=81=D0=BC=D0=BE=D1=82?= =?UTF-8?q?=D1=80=20=D0=BA=D1=80=D0=B8=D1=82=D0=B5=D1=80=D0=B8=D1=8F=20=20?= =?UTF-8?q?=20=D0=B4=D0=BE=D1=81=D1=82=D0=B0=D0=B2=D0=BA=D0=B8=20(STATUS?= =?UTF-8?q?=20=D0=BA=D1=83=D0=BC=D1=83=D0=BB=D1=8F=D1=82=D0=B8=D0=B2=D0=B5?= =?UTF-8?q?=D0=BD,=205=20=D0=93=D1=86=20=D1=8D=D1=84=D1=84=D0=B5=D0=BA?= =?UTF-8?q?=D1=82=D0=B8=D0=B2=D0=BD=D1=8B=D1=85=20=D0=B4=D0=BE=D1=81=D1=82?= =?UTF-8?q?=D0=B0=D1=82=D0=BE=D1=87=D0=BD=D0=BE),=20TDD=20=D0=BD=D0=B5=20?= =?UTF-8?q?=D0=BD=D1=83=D0=B6=D0=B5=D0=BD=20-=20BENCHMARK.md:=20framegen?= =?UTF-8?q?=20570.6=20=D0=BC=D0=BA=D1=81/=D0=BA=D0=B0=D0=B4=D1=80=20255=20?= =?UTF-8?q?=D0=91=20->=20STATUS=2010=20=D0=93=D1=86=20~0.6%=20=D1=8F=D0=B4?= =?UTF-8?q?=D1=80=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 34 ++++++++++++++++++++++++++++++++++ docs/BENCHMARK.md | 14 ++++++++++++++ docs/NOTES.md | 37 +++++++++++++++++++++++++++++++++++++ 3 files changed, 85 insertions(+) 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-диапазон: ограничения на полосу канала (сотни кГц),