Охарактеризованная OTA-линии
This commit is contained in:
79
README.md
79
README.md
@@ -242,12 +242,15 @@ ssh root@192.168.2.1 '/tmp/ofdm_bench 1.92'
|
||||
|
||||
1. ✅ Бенчмарк CPU на ARM Pluto → выбран rate 1.92 MSPS
|
||||
2. ✅ Перенос TX/RX на Pluto (`local:`), фиксы техдолга #1–#7 (см. §9)
|
||||
3. ⚙️ **текущий этап** — файл через эфир (OTA), md5 на 1 и 10 МБ.
|
||||
Ввод в строй ведётся строго OTA; кабельный этап осознанно пропущен.
|
||||
3. ⚙️ **текущий этап** — файл через эфир (OTA). Ввод в строй строго OTA;
|
||||
кабельный этап осознанно пропущен.
|
||||
✅ 2026-07-14: цифровой BIST-loopback подтвердил DSP-тракт (§12.2)
|
||||
✅ 2026-07-14: первый OTA-приём — 10 КБ байт-в-байт, EVM −22.7 дБ (§12.3);
|
||||
под RS/нагрузкой нужен троттлинг `-p` или двухпоточный RX
|
||||
4. Антенны на столе: замер скорости, PER, счётчик потерянных seq (#6)
|
||||
✅ 2026-07-14: первый OTA-приём — 10 КБ байт-в-байт, EVM −22.7 дБ (§12.3)
|
||||
✅ 2026-07-14: пауза `-p 6000` убрала throughput-потери (100 КБ — 100/100);
|
||||
на 1 МБ остаточный PER ≈ 0.2% (2 кадра). Побайтовый md5 на объёме отложен
|
||||
на ARQ/дуплекс (п.5) — решение §12.3; веха симплекса = PHY-линия + PER
|
||||
4. ✅ 2026-07-14: антенны на столе — PER 10 МБ ≈ 0.36%, свип TX gain (§12.4),
|
||||
рабочая точка −20 дБ; линия SNR-ограничена, целостность 100%
|
||||
5. FDD 868/915 двусторонняя + меры из docs/NOTES.md
|
||||
6. UDP-туннель поверх линка; затем web-настройка (libmicrohttpd)
|
||||
7. Видео (raw UDP, пакеты ≤1472 Б) — при устойчивом PER
|
||||
@@ -306,24 +309,68 @@ TX на A (192.168.2.1), TX gain −30 дБ. Опорники плат свед
|
||||
|---|---|---|---|---|---|---|---|---|---|---|---|
|
||||
| A | 10 КБ | none | 5000 мкс | 10 | — | — | 0 | 10/10 | ✅ **совпал** | −31 дБ | −22.7 дБ |
|
||||
| B | 100 КБ | rs8 | 2000 мкс | 77 | 4 | 13 | 26 | 61/100 | ✗ (дыры) | −31 дБ | −25.0 дБ |
|
||||
| B′ | 100 КБ | rs8 | 6000 мкс | 100 | 0 | 0 | 0 | 100/100 | ✅ **совпал** | −34 дБ | −16.0 дБ |
|
||||
| C | 1 МБ | rs8 | 6000 мкс | 1022 | 0 | 0 | 2 | 1022/1024 | ✗ (2 кадра) | −30 дБ | −26.8 дБ |
|
||||
| D | 10 МБ | rs8 | 6000 мкс | 10240 | 2 | 0 | 37 | 10203/10240 | ✗ (37 кадров) | −30 дБ | −25.9 дБ |
|
||||
|
||||
**Главное: первый файл прошёл по воздуху байт-в-байт (тест A)** — OTA-линия
|
||||
работоспособна. Радиоканал качественный: EVM −22…−25 дБ, RSSI −31 дБ, CFO ≈ 0,
|
||||
работоспособна. Радиоканал качественный: EVM −16…−27 дБ, RSSI −30…−34 дБ, CFO ≈ 0,
|
||||
пойманные кадры почти все декодируются.
|
||||
|
||||
**Ограничение (тест B): под нагрузкой с RS и паузой 2 мс теряется ~39% кадров** —
|
||||
причём на двух платах с выделенными ядрами, значит это **не** CPU-contention из
|
||||
**Пропускная способность (тесты B→B′): пауза 2 мс теряет ~39% кадров, 6 мс — 0%.**
|
||||
Причём на двух платах с выделенными ядрами, значит это **не** CPU-contention из
|
||||
§12.2. Причина конструктивная: **receiver однопоточный** — RS-декод выполняется
|
||||
inline в callback синхронизатора и отнимает его пропускную способность. Запас
|
||||
1.22× (§2) не покрывает добавленную стоимость RS при сплошном потоке: RX отстаёт
|
||||
от эфира, kernel роняет сэмплы (отсюда и не пойманные кадры, и `RS битых` от
|
||||
частично побитых). «Второе ядро под RS» из архитектуры пока **не реализовано**.
|
||||
1.22× (§2) не покрывает добавленную стоимость RS при сплошном потоке; троттлинг
|
||||
TX паузой `-p 6000` возвращает систематическую потерю в ноль (100 КБ — 100/100).
|
||||
|
||||
Рычаги к устойчивой передаче: (1) пауза `-p` — троттлинг TX под возможности RX
|
||||
(немедленный обход); (2) двухпоточный конвейер RX (refill+конвертация на ядре 1,
|
||||
синк на ядре 0 — резерв BENCHMARK §«резервы» п.2) — настоящее решение с приростом
|
||||
throughput. Следующий шаг: подобрать `-p` с нулевой потерей, затем md5 на 1 и
|
||||
10 МБ; в `test_file_link.sh` дефолт `-p 0` заменён на параметр `PAUSE`.
|
||||
**Остаточный PER (тесты C, D): 0.2% на 1 МБ (2/1024) и 0.36% на 10 МБ (37/10240).**
|
||||
Это уже не throughput (кадры не накапливаются, `RS битых: 0` на всех объёмах), а
|
||||
спорадические одиночные пропуски. `RS битых: 0` на 10 МБ — важно: проверка CRC-
|
||||
поверх-RS ни разу не пропустила мусор в файл, а RS дважды реально исправил ошибки
|
||||
(тест D). При симплексе без ARQ пропущенный кадр — молчаливая дыра (техдолг #6),
|
||||
поэтому md5 на объёме не сходится, хотя PHY-линия по факту надёжна (**PER ≈ 0.3%,
|
||||
целостность 100%**). CPU RX справляется: PER не растёт с объёмом → отставание не
|
||||
накапливается.
|
||||
|
||||
Дальнейшие рычаги: (1) **устойчивая передача файла** требует избыточности —
|
||||
на симплексе это forward-redundancy (TX гонит файл N раз, RX пишет кадры по
|
||||
`seq` в нужное смещение, дыры заполняются за проходы), полноценный ARQ — на этапе
|
||||
дуплекса (§10 п.5); (2) двухпоточный конвейер RX (BENCHMARK §«резервы» п.2) —
|
||||
поднимет throughput и позволит убрать паузу. `test_file_link.sh` теперь с
|
||||
параметрами `PAUSE`/`FEC`/`TXGAIN`.
|
||||
|
||||
**Решение (2026-07-14):** побайтовый лосслесс на объёме отложен на этап дуплекса —
|
||||
там ставится полноценный ARQ с обратным каналом (§10 п.5). На текущем симплекс-
|
||||
этапе forward-redundancy не внедряем; веха этапа — работоспособная PHY-линия и
|
||||
измеренный PER.
|
||||
|
||||
### 12.4 Свип TX gain — карта PER/EVM (2026-07-14)
|
||||
|
||||
1 МБ, rs8, `-p 6000`, дистанция «на столе», симплекс 915 МГц.
|
||||
|
||||
| TX gain | RSSI | EVM | Потери seq | RS испр | RS бит | PER (потери) | Примечание |
|
||||
|---|---|---|---|---|---|---|---|
|
||||
| −40 дБ | −45 дБ | −15.0 дБ | 33 | 27 | 41 | ~3.2% (+41 неиспр) | SNR-floor: RS активно спасает, но 41 блок неисправим |
|
||||
| −30 дБ | −31 дБ | −24.8 дБ | 5 | 0 | 1 | 0.49% | рабочая зона |
|
||||
| −20 дБ | −22 дБ | −32.9 дБ | 3 | 0 | 0 | 0.29% | **рабочая точка** (запас в обе стороны) |
|
||||
| −10 дБ | −11 дБ | −39.7 дБ | 1 | 0 | 0 | 0.10% | лучший PER; вход RX ещё не насыщен |
|
||||
|
||||
Выводы:
|
||||
- **Линия SNR-ограничена, а не насыщением**: EVM монотонно улучшается −15 → −40 дБ
|
||||
с ростом мощности; насыщения входа RX (усиление 50 дБ фикс.) не видно даже при
|
||||
RSSI −11 дБ. Потолок по gain на этой геометрии не достигнут.
|
||||
- **PER падает с мощностью**: 3.2% (−40) → 0.1% (−10). Плато −20…−10 дБ даёт
|
||||
PER 0.1–0.3% при EVM −33…−40 дБ, RS даже не требуется (0 неисправимых).
|
||||
- **RS реально работает под нагрузкой**: на −40 дБ спас 27 кадров, забракованных
|
||||
liquid-CRC. До фикса #3 они ушли бы мусором или фиктивно «спасёнными» — это
|
||||
боевое подтверждение всей FEC-цепочки (libfec + CRC-поверх-RS).
|
||||
- **Рабочая точка симплекса: TX gain −20 дБ** (PER 0.29%, EVM −33 дБ, запас по SNR
|
||||
вниз и до насыщения вверх); для максимальной надёжности на этой дистанции −10 дБ.
|
||||
|
||||
**Итог симплекс-этапа:** PHY OTA-линия работает и охарактеризована по мощности,
|
||||
целостность 100% (мусор в файл не попадает), PER ≈ 0.1–0.3% в рабочей зоне.
|
||||
Остаток к «надёжной побайтовой» передаче = ARQ на этапе дуплекса (§10 п.5).
|
||||
|
||||
---
|
||||
*Ввод в строй: 2026-07-14. Замеры CPU и базовые решения — 2026-07-10.
|
||||
|
||||
1
liquid-dsp
Submodule
1
liquid-dsp
Submodule
Submodule liquid-dsp added at 9aca82a883
Reference in New Issue
Block a user