Lab056: compare 20 and 500 ksymbol/s in controlled RF session
This commit is contained in:
@@ -406,6 +406,51 @@
|
||||
- **Далее:** STOP. Отдельное согласование измерительной схемы и допустимой
|
||||
частоты; усилитель не назначен, Git add/commit/push/pull/fetch не выполнялись.
|
||||
|
||||
## Lab056 — подготовка одного эфирного ABAB, 20 и 500 ксимв/с
|
||||
|
||||
- **База:** Lab055 зафиксирована коммитом
|
||||
`5add95ecb8865f59075bbbced08d97b183fb3b48`, только её семь файлов; без push.
|
||||
- **Подготовлено:** один PRBS7/BPSK/RRC TX-файл ABAB, 1,323568 с;
|
||||
Fs 8 Мвыб/с, цифровая несущая +50 кГц. RMS A/B 44,004413/44,001925 код,
|
||||
разница мощности −0,000491 дБ; клиппинг 0. RX планируется на 3 с.
|
||||
- **Проверено программно:** известные разницы усиления 0 и −6,020600 дБ
|
||||
восстановлены с ошибкой менее 0,3 дБ в обеих парах. Анализируются отдельно
|
||||
принятая мощность, фон, коэффициент передачи, остаток, спектр и энергия символа.
|
||||
- **Проверки:** 34 целевых теста; quick_gate 857/30/13 PASS,
|
||||
pytest 857 passed, 0 failed; verifier без остаточных находок; diff check PASS.
|
||||
- **Граница:** пользователь выбрал эфир; частота/полоса и геометрия пока
|
||||
не согласованы. 1400 МГц для излучения не используется. Общий такт проверен
|
||||
только mock-вызовами; аппаратный preflight NOT_PERFORMED. RF TX=0.
|
||||
Эфирный результат будет характеризовать весь путь с антеннами и распространением.
|
||||
- **Отчёт:** [состояние](lab056_current_state.md),
|
||||
[подготовка TX](../data/processed/lab056/preparation.json),
|
||||
[сводка проверок](../data/processed/lab056/acceptance.json), журнал 047.
|
||||
- **Далее:** STOP и отдельное разрешение на согласованный RF-сеанс.
|
||||
Lab056 не коммитилась, push не выполнялся; Lab054 NOT_A сохранён.
|
||||
- **Корректировка, запись 048:** кабельный контроль отложен из-за отсутствия
|
||||
SMA-переходника; принят контролируемый OTA. RF_FREQ задаёт пользователь,
|
||||
страна и границы диапазона не запрашиваются. Конкретная частота пока UNKNOWN.
|
||||
Добавлен отдельный RX-only preflight с STOP перед разрешением TX, проверки
|
||||
клиппинга до/после передачи, вывод комплексного h и повторов A2/A1, B2/B1.
|
||||
TX и прежние результаты сохранены. 44 целевых теста; quick_gate 867/30/13
|
||||
PASS, pytest 867 passed; verifier без находок. Аппаратных команд нет, RF TX=0.
|
||||
[Сводка корректировки](../data/processed/lab056/ota_correction.json).
|
||||
- **Аппаратный preflight, запись 049:** пользователь задал 1400000000 Гц
|
||||
только для Lab056, OTA LOS примерно 3–5 м. Common clock PASS: оба reg29
|
||||
0x26, SLAVE CLKIN DETECTED. RX-only 800 000 отсчётов/0,1 с, overruns 0,
|
||||
клиппинг 0, RMS 2,203153 код. CLKOUT выключены, процессы CLEAR, RF TX=0.
|
||||
[Отчёт preflight](lab056_rx_preflight.md). STOP до отдельного разрешения TX.
|
||||
- **Единственный ABAB, запись 050:** после отдельного разрешения один TX
|
||||
1,323568 с и RX 3 с; 4/4 сегмента, ошибка согласования начал ≤1 отсчёта,
|
||||
клиппинг/overruns/underruns 0. X=+0,108895 дБ, Y=−0,163042 дБ,
|
||||
Z=−13,870505 дБ. Повтор мощности A2/A1 −0,482024 дБ, B2/B1 −0,512676 дБ;
|
||||
повтор коэффициента передачи примерно −0,18 дБ у обоих режимов.
|
||||
Прежний провал 15,41 дБ в этой OTA-сессии не воспроизвёлся; собственные
|
||||
потери HackRF не изолированы. Verifier подтвердил сырые данные и расчёты.
|
||||
[RF-отчёт](lab056_rf_result.md), [сводка](../data/processed/lab056/rf_result.json),
|
||||
[график](../data/processed/lab056/rf_overview.png). Выполненных TX 1, сейчас
|
||||
RF TX=0, повторов нет. STOP, Lab056 не коммитилась, push не выполнялся.
|
||||
|
||||
## Правило хранения данных
|
||||
|
||||
Большие записи IQ, потоки `cs8`, бинарные объекты и другие аппаратные исходные
|
||||
|
||||
326
docs/lab056_current_state.md
Normal file
326
docs/lab056_current_state.md
Normal file
@@ -0,0 +1,326 @@
|
||||
# Lab056 — подготовка сравнения 20 и 500 ксимв/с в одной сессии
|
||||
|
||||
Подготовка 9 сентября 2026 года; корректировка OTA 10 сентября 2026 года.
|
||||
Lab056 завершила единственный разрешённый OTA ABAB-сеанс 10 сентября.
|
||||
Принятая мощность B/A +0,108895 дБ, коэффициент передачи по мощности
|
||||
−0,163042 дБ, энергия символа −13,870505 дБ. Прежний провал 15,41 дБ
|
||||
не воспроизвёлся. [Полный RF-отчёт](lab056_rf_result.md).
|
||||
Выполненных передач 1, повторов 0; **RF TX сейчас = 0, STOP**.
|
||||
Ниже сохранено описание этапов подготовки и preflight; актуальный итог
|
||||
приведён в RF-отчёте и в заключительном блоке состояния.
|
||||
|
||||
Простыми словами: для будущего опыта создан файл, который дважды чередует
|
||||
медленную и быструю передачу с практически одинаковой цифровой амплитудой.
|
||||
Анализатор на искусственных записях различает равное усиление и падение на 6 дБ.
|
||||
Как изменятся полезный принятый сигнал и фон между A/B в реальном эфире,
|
||||
ещё не измерено; пока записан только RX-фон без TX.
|
||||
Одинаковый TX VGA и одинаковая цифровая мощность не доказывают одинаковую
|
||||
мощность на выходе HackRF. Для абсолютных ватт/dBm нужен калиброванный прибор.
|
||||
|
||||
## Зафиксированная база и границы задания
|
||||
|
||||
По новому явному разрешению пользователя создан коммит Lab055:
|
||||
|
||||
`5add95ecb8865f59075bbbced08d97b183fb3b48`
|
||||
|
||||
`Lab055: audit received signal energy across symbol rates`
|
||||
|
||||
В коммите ровно семь файлов: анализатор и тесты Lab055, её отчёт, два JSON
|
||||
результата, только запись 046 журнала и только раздел Lab055 индекса.
|
||||
Предшествующие незакоммиченные изменения Lab054 сохранены в рабочем каталоге.
|
||||
Перед коммитом quick_gate: 823 теста, 28 функциональных проверок, 13 штатных
|
||||
пропусков; pytest: 823 passed, 0 failed. Push не выполнялся.
|
||||
|
||||
Lab055 установила почти равную цифровую мощность активного TX
|
||||
(1950,308/1950,598 код²), снижение согласованной RX-компоненты на 15,413 дБ
|
||||
и сопоставимый фон в одинаковой полосе. Разные аппаратные сессии не позволяют
|
||||
приписать это снижение одной скорости. Lab054 остаётся **NOT_A, 0/16**.
|
||||
Повторно проверены все 34 SHA-256 входов Lab055: изменений нет.
|
||||
|
||||
Пользователь осознанно изменил методику: необходимого SMA-переходника нет,
|
||||
поэтому сейчас выполняется подготовка контролируемого эфирного ABAB.
|
||||
Кабельный контроль TX → 30 дБ → RX отложен до получения переходника
|
||||
и будет отдельной проверкой, без автоматического запуска после Lab056.
|
||||
|
||||
Схема: MASTER TX → TX-антенна → свободное пространство → RX-антенна → SLAVE RX.
|
||||
На всю ABAB сохраняются антенны, кабели, одинаковая поляризация, расстояние,
|
||||
ориентация, положение оборудования, частота, усиления и common clock.
|
||||
Антенны не трогают; по возможности исключают движение людей возле них.
|
||||
Внешние PA и LNA, в том числе TQP3M9037, не используются.
|
||||
|
||||
`RF_FREQ = USER_AUTHORIZED_RF_HZ = 1400000000`: значение сообщил пользователь.
|
||||
Частоту, разрешённую для лаборатории, определяет пользователь. Страна и
|
||||
границы национальных диапазонов больше не являются обязательными полями
|
||||
runner; повторное исследование национальной регуляторики не проводилось.
|
||||
1400 МГц не подставляется по умолчанию. Mock-значения 915/916 МГц также
|
||||
не являются выбором частоты для аппаратного опыта.
|
||||
|
||||
| Параметр эфирной схемы | Текущее значение |
|
||||
|---|---|
|
||||
| Центральная RF-частота | 1400000000 Гц, только лабораторная Lab056 |
|
||||
| TX-антенна / RX-антенна | Имеющиеся антенны 1400 МГц по описанию пользователя; модели/маркировка не сообщены |
|
||||
| Расстояние TX–RX | Примерно 3–5 м по заданию; точное измерение не сообщено |
|
||||
| Взаимная ориентация и поляризация | Одинаковые, антенны неподвижны, по заданию пользователя |
|
||||
| Прямая видимость LOS / отсутствие прямой видимости NLOS | LOS |
|
||||
|
||||
После конкретного RF_FREQ выполнен аппаратный RX-only preflight, PASS.
|
||||
Сейчас STOP. TX — только после отдельного разрешения на один ABAB-сеанс.
|
||||
Само сообщение частоты не является разрешением на TX. Частота 1400 МГц
|
||||
не назначена рабочей частотой SDR_Rover: ориентир около 180 МГц и варианты
|
||||
50/144 МГц рассматриваются отдельно, вне Lab056.
|
||||
|
||||
## Подготовленный TX
|
||||
|
||||
Файл: `data/raw/lab056/tx_abab.cs8`, signed int8 IQ, 21 177 088 байт.
|
||||
SHA-256: `5b34bbe1a8e6d037d2d6d367a74e9eb84e8940db7da61600ffaa7f7497d4f600`.
|
||||
Параметры сохранены в `data/raw/lab056/tx_metadata.json` и
|
||||
[preparation.json](../data/processed/lab056/preparation.json).
|
||||
|
||||
Используются прежние PRBS7, BPSK и RRC из тракта Lab043/Lab042:
|
||||
roll-off 0,35, span 10 символов, защитные участки по 16 символов.
|
||||
Fs = 8 000 000 комплексных отсчётов/с, цифровая несущая +50 кГц.
|
||||
Алгоритмы PHY/FEC/CRC, пороги и штатный приёмник не изменялись.
|
||||
|
||||
| Параметр | A: 20 ксимв/с | B: 500 ксимв/с |
|
||||
|---|---:|---:|
|
||||
| Отсчётов на символ | 400 | 16 |
|
||||
| Полезных PRBS7-символов | 4096 | 102400 |
|
||||
| Длительность активных символов | 0,204800 с | 0,204800 с |
|
||||
| Длительность сегмента с защитными участками | 0,206900 с | 0,204884 с |
|
||||
| RMS всего сегмента после int8 | 44,004413 код | 44,001925 код |
|
||||
| Средняя мощность всего сегмента | 1936,388382 код² | 1936,169379 код² |
|
||||
| RMS активного участка | 44,227281 код | 44,010867 код |
|
||||
| Средняя мощность активного участка | 1956,052408 код² | 1936,956395 код² |
|
||||
| Клиппинг | 0 | 0 |
|
||||
|
||||
Разница средней мощности B/A всего сегмента: **−0,000491 дБ**,
|
||||
критерий подготовки |разница| ≤ 0,01 дБ выполнен. Активные участки отличаются
|
||||
на −0,042606 дБ из-за разной доли защитных участков; это явно сохранено
|
||||
в метаданных и учитывается при сравнении коэффициента передачи.
|
||||
RMS указан в кодах, средняя мощность — RMS² в код².
|
||||
|
||||
Последовательность: gap → A1 → gap → B1 → gap → A2 → gap → B2 → gap.
|
||||
Каждый gap длится 0,1 с. A1 и A2 совпадают побайтно; B1 и B2 тоже.
|
||||
Один файл содержит 10 588 544 комплексных отсчёта, **1,323568 с**.
|
||||
План RX: 24 000 000 отсчётов, **3 с**, запуск на 0,5 с раньше TX.
|
||||
|
||||
Важно: gap — нулевые цифровые IQ при работающем TX-процессе.
|
||||
Это не выключение передатчика; утечка несущей и собственный фон возможны.
|
||||
Полная длительность файла включает эти участки.
|
||||
|
||||
## Измерения сохранённого RX
|
||||
|
||||
Анализатор `experiments/lab056_abab_energy.py` сначала ищет всю ABAB
|
||||
корреляцией с известным TX: шаг 32 отсчёта, сетка остаточного частотного
|
||||
смещения (CFO) от −2 до +2 Гц с шагом 0,25 Гц. Затем существующий метод
|
||||
Lab055 уточняет задержку, CFO, фазу, постоянное смещение и комплексный
|
||||
коэффициент на обучающих плитках; мощность компоненты и остатка проверяется
|
||||
на отдельных плитках. При недостаточном совпадении результат UNKNOWN.
|
||||
Порог 0,05 относится только к этой диагностической локализации;
|
||||
он не меняет пороги PHY/CRC и не даёт независимого приёма пакетов.
|
||||
|
||||
Прореживание без фильтра используется только при грубом поиске. Мощности
|
||||
и спектры вычисляются по исходным полным отсчётам. RX не масштабируется
|
||||
для искусственного выравнивания A/B.
|
||||
|
||||
Для каждого A1/B1/A2/B2 сохраняются:
|
||||
|
||||
- Полная средняя IQ-мощность `mean(|r|²)` и мощность после удаления среднего
|
||||
(AC), RMS, постоянное смещение, пик и клиппинг.
|
||||
- Два ближайших окна фона по 60 мс в соседних нулевых цифровых участках.
|
||||
Дополнительно — доступные окна по 50 мс вне всей последовательности.
|
||||
Внешние окна нельзя автоматически назвать RF OFF без проверки времён
|
||||
запуска/остановки: в текущей подготовке аппаратного фона ещё нет.
|
||||
- Разность AC-мощности и среднего локального фона. Разброс оценивается
|
||||
по неперекрывающимся блокам 4 мс, включая отличие фона до и после сегмента.
|
||||
Если превышение не больше трёх оценок неопределённости, итоговая мощность
|
||||
полезного сигнала `null`, а исходная разность сохраняется. Это критерий
|
||||
численной устойчивости, не калиброванный доверительный интервал.
|
||||
- Комплексный коэффициент `h = sum(conj(s)*r) / sum(|s|²)` после согласования
|
||||
и удаления постоянного смещения; сравнивается `|h|²`.
|
||||
- Мощность согласованной компоненты и остатка. Остаток включает шум и
|
||||
искажения, которые не описывает модель; это не чистый тепловой шум.
|
||||
- Интегральная мощность спектра Welch в полосах 27 и 675 кГц вокруг
|
||||
+50 кГц. Для A штатная полоса 27 кГц, для B — 675 кГц;
|
||||
обе полосы записываются также для сравнения фона в одинаковых условиях.
|
||||
|
||||
Отдельно для двух пар сохраняются B/A в дБ по принятой мощности после
|
||||
вычитания фона, по `|h|²`, по согласованной компоненте и по её энергии
|
||||
символа `P/Rs`. Единицы мощности — коды RX², энергии — код²·с;
|
||||
это относительные цифровые оценки, не калиброванные ватты и джоули.
|
||||
При одинаковой принятой мощности рост скорости в 25 раз даст уменьшение
|
||||
энергии символа на 13,9794 дБ. Равенство принятой мощности сначала проверяется.
|
||||
|
||||
Корректировка добавляет явный вывод `h.real`, `h.imag` и фазы относительно
|
||||
начала активного участка. Он вычисляется на тех же обучающих плитках
|
||||
при уже найденном CFO; его модуль проверяется на совпадение с моделью
|
||||
Lab055. Алгоритм согласования и разделение обучения/проверки сохранены.
|
||||
|
||||
Отдельно выводятся A2/A1 и B2/B1: полная raw-мощность, фон, полезная
|
||||
мощность после вычитания фона, `|h|²` и согласованная компонента.
|
||||
Итоговые X/Y/Z в `comparison_summary` используют отношение средних
|
||||
линейных мощностей двух B к двум A. X — полезная принятая мощность
|
||||
после вычитания фона, Y — `|h|²`, Z — энергия символа этой же полезной
|
||||
мощности. Если вычитание фона неустойчиво хотя бы в одном сегменте,
|
||||
X/Z остаются `null`; компонентные метрики и повторяемость сохраняются.
|
||||
|
||||
## Проверка искусственными записями
|
||||
|
||||
Созданы две явно синтетические записи CS8 по 3 с: одинаковое усиление
|
||||
обоих режимов и уменьшение амплитуды B вдвое (мощность −6,020600 дБ).
|
||||
В модель добавлены шум, постоянное смещение, CFO +0,2 Гц, фаза и неизвестное
|
||||
для поиска начало 4 160 013 отсчётов. Известное начало записано в результат
|
||||
после анализа и не передавалось алгоритму поиска.
|
||||
|
||||
| Вход модели | Пара | Разница принятой мощности B/A | Разница `|h|²` B/A | Разница энергии согласованной компоненты |
|
||||
|---|---:|---:|---:|---:|
|
||||
| Одинаковое усиление | 1 | −0,051497 дБ | +0,001786 дБ | −14,019673 дБ |
|
||||
| Одинаковое усиление | 2 | −0,041310 дБ | −0,002894 дБ | −14,024352 дБ |
|
||||
| B: −6,020600 дБ | 1 | −6,050214 дБ | −6,014144 дБ | −20,035602 дБ |
|
||||
| B: −6,020600 дБ | 2 | −6,028048 дБ | −6,022175 дБ | −20,043634 дБ |
|
||||
|
||||
Обе проверки PASS: ошибка коэффициента передачи в каждой паре меньше
|
||||
заданных 0,3 дБ. Разница принятой мощности включает небольшое различие
|
||||
цифровой мощности активных участков. Это результаты модели, не RF Lab056.
|
||||
Данные: [равное усиление](../data/processed/lab056/software_equal.json),
|
||||
[ослабление B](../data/processed/lab056/software_minus6db.json).
|
||||
|
||||
При корректировке те же сохранённые IQ проанализированы без перегенерации.
|
||||
Прежние файлы результатов сохранены; новые сводки:
|
||||
[равное усиление, OTA summary](../data/processed/lab056/software_equal_ota_summary.json),
|
||||
[ослабление B, OTA summary](../data/processed/lab056/software_minus6db_ota_summary.json).
|
||||
|
||||
| Искусственная запись | X: мощность B/A | Y: коэффициент передачи B/A | Z: энергия символа B/A | Повтор `|h|²`, A2/A1 | Повтор `|h|²`, B2/B1 |
|
||||
|---|---:|---:|---:|---:|---:|
|
||||
| Равное усиление | −0,046404 дБ | −0,000553 дБ | −14,025804 дБ | −0,002308 дБ | −0,006988 дБ |
|
||||
| B: −6,020600 дБ | −6,039124 дБ | −6,018156 дБ | −20,018524 дБ | −0,002308 дБ | −0,010340 дБ |
|
||||
|
||||
Это по-прежнему результаты программной модели. Они не устанавливают
|
||||
величину эфирного различия Lab056.
|
||||
|
||||
Повторный анализ существующего файла с новым именем результата:
|
||||
|
||||
```powershell
|
||||
python experiments/lab056_abab_energy.py analyze --rx data/raw/lab056/synthetic_equal.cs8 --output data/processed/lab056/recheck_equal.json
|
||||
```
|
||||
|
||||
Существующие выходные файлы не перезаписываются. Команды `prepare` и
|
||||
`software` создают данные только при отсутствии соответствующих файлов.
|
||||
|
||||
## Подготовка однократного аппаратного запуска
|
||||
|
||||
`experiments/lab056_capture_runner.py` не имеет аппаратного CLI. Без конкретного
|
||||
положительного целого RF_FREQ из задания пользователя аппаратные действия
|
||||
не начинаются. Частота одинакова для всех RX-команд и единственной TX-команды;
|
||||
цифровая несущая остаётся +50 кГц. Страна/регуляторная полоса не запрашиваются
|
||||
программой. Геометрия сохраняется вместе с частотой в отдельном OperatingPoint.
|
||||
|
||||
Роли плат сохранены: MASTER/TX `000000000000000097c063dc323b97d3`,
|
||||
SLAVE/RX `000000000000000097c063dc2e5327d3`. Планируется прежнее тактирование
|
||||
10 МГц TCXO → MASTER → CLKOUT → SLAVE CLKIN. Требуются оба reg29 = 0x26
|
||||
и SLAVE CLKIN = DETECTED после короткого RX-start. Сначала логика проверена
|
||||
mock-вызовами; теперь эти значения подтверждены аппаратным preflight.
|
||||
|
||||
Вызов `preflight_only` после получения RF_FREQ проверит инвентаризацию,
|
||||
common clock и сохранит 0,1 с RX без TX на заданной частоте при RX 24/24 дБ.
|
||||
Он проверит размер, явный нулевой счётчик потерь, уровень и клиппинг,
|
||||
запишет `preflight_result.json`, выключит CLKOUT и завершится с STOP.
|
||||
Любая TX-команда внутри этого этапа запрещена обёрткой runner.
|
||||
Файл попытки создаётся эксклюзивно; автоматического повтора нет.
|
||||
|
||||
После отдельного разрешения `capture_once` потребует PASS preflight той же
|
||||
частоты, геометрии и SHA TX. Поскольку после preflight CLKOUT выключены,
|
||||
перед фактическим сеансом опора проверяется заново при запуске. Это проверка
|
||||
готовности перед единственным TX, а не повтор передачи.
|
||||
|
||||
TX VGA 10 дБ, RX LNA/VGA 24/24 дБ, RF amplifier и Bias-Tee OFF,
|
||||
Fs 8 Мвыб/с фиксированы на всю ABAB. RX запускается первым; затем допускается
|
||||
один TX-процесс с конечным числом отсчётов, без `-R`. Маркер попытки создаётся
|
||||
эксклюзивно; ошибка расходует попытку, автоматического повтора нет.
|
||||
Требуются процессы CLEAR до/после, правильный размер RX, явные нулевые
|
||||
RX overruns/TX underruns и успешное выключение CLKOUT обеих плат.
|
||||
После упреждения RX проверяются последние 65 536 записанных отсчётов:
|
||||
при rail-кодах −128/127 TX не запускается, RF TX=0 и STOP. Полная запись
|
||||
проверяется также после ABAB. Если клиппинг появился только при передаче,
|
||||
фиксируется RF TX=1 и невалидное измерение без повтора. Уже выполненная
|
||||
передача не переобозначается нулём. В отчёте сохраняются RMS, пики I/Q,
|
||||
доли клиппинга; отсутствие rail-кодов само по себе не доказывает отсутствие
|
||||
аналоговой компрессии. Gain не меняется автоматически ни в одном сценарии.
|
||||
Аппаратные помощники переиспользованы из существующей Lab054; её файлы
|
||||
`experiments/lab054_hardware_control.py` и `tools/hackrf_process_check.py`
|
||||
включаются в фиксацию Lab056 как необходимые зависимости вместе с их
|
||||
двумя тестовыми файлами. Без них runner Lab056 не импортируется в чистой
|
||||
копии репозитория, что независимо воспроизведено verifier. Старые отчёты,
|
||||
данные и записи журнала Lab054 в эту фиксацию не входят. Реализации
|
||||
зависимостей не переписывались; аппаратная логика осталась проверенной.
|
||||
|
||||
Verifier независимо подтвердил SHA/размеры TX, нулевые gaps, побайтную
|
||||
повторяемость A/B и пересчитал коэффициенты передачи вторым методом.
|
||||
Он воспроизвёл ошибку разбора журнала `1 RX overruns\n0 overruns`;
|
||||
исправленный разбор отклоняет ненулевые, неизвестные и неразобранные
|
||||
счётчики. Повторные mock-вызовы `capture_once` закрыли находку.
|
||||
Остаточных воспроизведённых находок нет. Оборудование verifier не использовал.
|
||||
|
||||
Исходная подготовка: 34 целевых теста passed; quick_gate: 857 тестов,
|
||||
30 функциональных проверок, 13 штатных пропусков, PASS. Полный pytest:
|
||||
857 passed, 0 failed, 96,50 с (кеш отключён из-за прежнего отказа доступа).
|
||||
`git diff --check`: PASS. Машинная сводка:
|
||||
[acceptance.json](../data/processed/lab056/acceptance.json).
|
||||
|
||||
Корректировка OTA: 44 целевых теста PASS; quick_gate 867 тестов /
|
||||
30 функциональных проверок / 13 штатных пропусков, PASS; pytest
|
||||
867 passed, 0 failed, 89,32 с. Verifier исполнил все 44 сценария
|
||||
в памяти без файлов и оборудования; остаточных находок нет.
|
||||
Новая сводка [ota_correction.json](../data/processed/lab056/ota_correction.json)
|
||||
дополняет исходную acceptance, не заменяя исторические 857 passed.
|
||||
|
||||
## Как читать будущий эфирный результат
|
||||
|
||||
Эфирный ABAB сравнит весь путь: TX, антенны, распространение, RX. Малое
|
||||
различие означает, что большой провал не воспроизведён в этом пути и этой
|
||||
сессии. Оно не доказывает равенство мощности непосредственно на выходе TX.
|
||||
Большое повторяемое различие тоже нельзя автоматически отнести внутрь
|
||||
HackRF: частотная избирательность антенн и многолучевого распространения
|
||||
остаётся частью измерения. Для отделения аппаратного эффекта пригодится
|
||||
отдельно согласованный кабельный или калиброванный измерительный опыт.
|
||||
|
||||
Ни необходимость PA, ни изменение результатов Lab047/Lab054 из этой
|
||||
подготовки не следуют. Архитектура проекта сохраняется: управление через
|
||||
RadioMaster/ExpressLRS/CRSF, SDR — видеотракт с целью минимум 5 свежих кадров/с.
|
||||
|
||||
## Состояние перед STOP
|
||||
|
||||
```text
|
||||
LAB055 COMMIT = 5add95ecb8865f59075bbbced08d97b183fb3b48
|
||||
NEW HEAD = 5add95ecb8865f59075bbbced08d97b183fb3b48
|
||||
LAB056 RESULT = OTA_ABAB_VALID_LARGE_DROP_NOT_REPRODUCED_STOP
|
||||
PHYSICAL CONNECTION = OTA, LOS, fixed antennas, same polarization/orientation, approximately 3-5 m per user
|
||||
RF FREQUENCY = 1400000000 Hz (Lab056 test only)
|
||||
A SYMBOL RATE = 20 ksymbol/s
|
||||
B SYMBOL RATE = 500 ksymbol/s
|
||||
TX RMS A = 44.004413 code
|
||||
TX RMS B = 44.001925 code
|
||||
TX POWER DIFFERENCE B/A = -0.000491 dB (whole segment)
|
||||
ABAB TX DURATION = 1.323568 s
|
||||
RX PLANNED DURATION = 3 s, lead 0.5 s
|
||||
COMMON CLOCK PREFLIGHT = HARDWARE PASS, both reg29=0x26, SLAVE CLKIN=DETECTED
|
||||
RX PREFLIGHT = PASS, 800000 complex samples, 0.1 s, overruns=0
|
||||
CLIPPING = 0
|
||||
READY FOR ANOTHER TX = NO (authorized single attempt consumed)
|
||||
COMPLETED TX SESSIONS = 1
|
||||
AUTOMATIC TX REPEATS = 0
|
||||
RX ABAB RECORD = 24000000 complex samples, 3 s, clipping=0, overruns=0
|
||||
TX UNDERRUNS = 0
|
||||
RECEIVED POWER DIFFERENCE B/A = +0.108895 dB
|
||||
TX-MATCHED CHANNEL GAIN DIFFERENCE B/A = -0.163042 dB
|
||||
ENERGY PER SYMBOL DIFFERENCE = -13.870505 dB
|
||||
BASELINE pytest = 857 passed (сохранённый результат подготовки)
|
||||
quick_gate = PASS, 867 tests / 30 functional / 13 skipped
|
||||
pytest = PASS, 867 passed / 0 failed (после корректировки)
|
||||
git diff --check = PASS
|
||||
RF TX = 0
|
||||
LAB056 COMMIT = NOT_PERFORMED
|
||||
PUSH = NOT_PERFORMED
|
||||
CURRENT SINGLE-TX AUTHORIZATION = CONSUMED
|
||||
STOP
|
||||
```
|
||||
222
docs/lab056_rf_result.md
Normal file
222
docs/lab056_rf_result.md
Normal file
@@ -0,0 +1,222 @@
|
||||
# Lab056 — единственный OTA ABAB: результат
|
||||
|
||||
10 сентября 2026 года, сеанс 12:32:24–12:32:28 по Москве.
|
||||
|
||||
**Внутри одного короткого эфирного сеанса большой провал при переходе
|
||||
20 → 500 ксимв/с не воспроизвёлся.** Принятая мощность после вычитания фона
|
||||
у B выше A на 0,109 дБ; согласованный коэффициент передачи по мощности
|
||||
ниже на 0,163 дБ. Обе пары A/B дают близкие результаты. Энергия символа
|
||||
уменьшилась на 13,871 дБ: при почти одинаковой принятой мощности она
|
||||
приходится на в 25 раз большее число символов в секунду.
|
||||
|
||||
Это результат всего OTA-пути с антеннами и распространением. Он не
|
||||
измеряет выходные dBm HackRF и не объясняет задним числом причину прежнего
|
||||
различия Lab047/Lab054 на 15,41 дБ. Lab054 остаётся **NOT_A, 0/16**.
|
||||
|
||||
Выполнена ровно **одна** передача. Сейчас **RF TX = 0**, передатчик
|
||||
остановлен; повторов нет. Разрешённая попытка израсходована. **STOP.**
|
||||
|
||||
## Фактические условия
|
||||
|
||||
Пользователь отдельно разрешил этот сеанс после аппаратного RX-only
|
||||
preflight. Частота 1 400 000 000 Гц относится только к Lab056, не является
|
||||
выбором рабочего диапазона SDR_Rover. Ориентир около 180 МГц и варианты
|
||||
50/144 МГц рассматриваются отдельно и здесь не исследовались.
|
||||
|
||||
OTA: MASTER TX → TX-антенна → LOS → RX-антенна → SLAVE RX. По заданию
|
||||
пользователя антенны неподвижны, ориентация и поляризация одинаковы,
|
||||
расстояние примерно 3–5 м, кабели не меняются. Использованы имеющиеся
|
||||
антенны на 1400 МГц; модели/маркировка и точное измеренное расстояние
|
||||
не сообщены. Программа не измеряет геометрию; это описание пользователя.
|
||||
|
||||
Один сохранённый TX-файл содержит A1 → gap → B1 → gap → A2 → gap → B2
|
||||
с дополнительными начальным/конечным gaps. A = 20 ксимв/с, B = 500 ксимв/с.
|
||||
Fs 8 Мвыб/с; цифровая несущая +50 кГц; прежние PRBS7/BPSK/RRC.
|
||||
TX VGA 10 дБ, RX LNA/VGA 24/24 дБ, RF amplifier/Bias-Tee OFF.
|
||||
Внешние PA/LNA отсутствуют. Частота, усиления, Fs и параметры формы
|
||||
не менялись между сегментами. PHY/FEC/CRC, пороги и timing не изменялись.
|
||||
|
||||
Цифровой RMS всего сегмента A/B: 44,004413/44,001925 код;
|
||||
разница мощности B/A −0,000491 дБ. Разница активных частей −0,042606 дБ
|
||||
из-за разной доли защитных участков сохранена в метаданных и не скрывается.
|
||||
RX не нормировался для искусственного выравнивания A/B.
|
||||
|
||||
## Полнота записи и аппаратные проверки
|
||||
|
||||
| Проверка | Фактический результат |
|
||||
|---|---|
|
||||
| Число TX-процессов | 1, без `-R`, конечный `-n 10588544` |
|
||||
| TX-файл | 21 177 088 байт, 10 588 544 комплексных отсчёта, 1,323568 с |
|
||||
| Основной RX | 48 000 000 байт, 24 000 000 комплексных отсчётов, ровно 3 с |
|
||||
| Порядок запуска | RX раньше TX на 0,517342 с по журналу запуска процессов |
|
||||
| MASTER / SLAVE reg29 | 0x26 / 0x26 |
|
||||
| SLAVE CLKIN | DETECTED в пределах штатного ожидания запуска опоры |
|
||||
| RX overruns / TX underruns | 0 / 0 по всем явным счётчикам журналов |
|
||||
| Клиппинг RX до TX | 0 / 65 536 отсчётов проверенного хвоста |
|
||||
| Клиппинг полного RX после ABAB | 0 / 24 000 000 отсчётов; 0 / 48 000 000 компонент |
|
||||
| Полный RX: RMS / максимумы абсолютных I,Q | 2,235380477 код / 5, 6 код |
|
||||
| Процессы до / после | CLEAR / CLEAR |
|
||||
| Завершение | CLKOUT обеих плат выключены, ошибок cleanup нет |
|
||||
|
||||
Общая опора проверена при запуске заново, поскольку предыдущий preflight
|
||||
завершился выключением CLKOUT. Первый запрос CLKIN ещё не обнаружил опору;
|
||||
второй обнаружил её через 137,359 мс штатного ожидания. После PASS
|
||||
состоялся единственный TX; опрос CLKIN не является повтором передачи.
|
||||
|
||||
В журнале 14 команд: инвентаризация, опора, два коротких RX-start по
|
||||
65 536 отсчётов для выбора опоры, один основной RX, один TX и cleanup.
|
||||
После запуска TX до его окончания других аппаратных команд нет.
|
||||
Параметры команд и их исходный вывод сохранены; аппаратной перестройки
|
||||
между A/B не было. Физическая неподвижность антенн следует из заданных
|
||||
пользователем условий, а не из программного измерения.
|
||||
|
||||
Утилита указала TX transfer time 1,32538 с и RX transfer time 3,01535 с.
|
||||
Это служебные интервалы обмена, отличные от длительности отсчётов файла;
|
||||
они не используются вместо расчёта длительности по числу отсчётов и Fs.
|
||||
Отсутствие rail-кодов не является калиброванной проверкой аналоговой
|
||||
компрессии; обнаруженных цифровых признаков насыщения нет.
|
||||
|
||||
## Все четыре сегмента
|
||||
|
||||
Подготовленный анализатор нашёл ABAB с нормированной корреляцией 0,384366
|
||||
и грубым остаточным CFO 0 Гц. Оценённые начала всей последовательности
|
||||
по отдельным сегментам: 4 454 791, 4 454 791, 4 454 790, 4 454 791 отсчёт.
|
||||
Разброс составляет один отсчёт, 0,125 мкс. Все сегменты расположены
|
||||
внутри RX, идут в правильном порядке и не перекрываются.
|
||||
|
||||
| Сегмент | Начало сегмента, отсчёт RX | Начало, с | Конец, с | Активных отсчётов |
|
||||
|---|---:|---:|---:|---:|
|
||||
| A1 | 5 254 791 | 0,656848875 | 0,863748875 | 1 638 400 |
|
||||
| B1 | 7 709 991 | 0,963748875 | 1,168632875 | 1 638 400 |
|
||||
| A2 | 10 149 062 | 1,268632750 | 1,475532750 | 1 638 400 |
|
||||
| B2 | 12 604 263 | 1,575532875 | 1,780416875 | 1 638 400 |
|
||||
|
||||
Длительность активного участка каждого сегмента 0,2048 с. С защитными
|
||||
участками A длится 0,2069 с, B — 0,204884 с. Межсегментные интервалы
|
||||
составляют 0,1 с с расхождением не более одного отсчёта из-за согласования.
|
||||
В спектрах A и B видны соответственно узкая и широкая полосы PRBS/BPSK.
|
||||
Границы, ширина спектров и согласованные компоненты подтверждают
|
||||
наличие четырёх сегментов; это диагностическое измерение с TX-эталоном,
|
||||
не независимый приём пакетов.
|
||||
|
||||

|
||||
|
||||
## Измерения A1/B1/A2/B2
|
||||
|
||||
Все мощности ниже — **код² RX**, не ватты/dBm. `h` выражает отношение
|
||||
цифровых кодов RX/TX после согласования и удаления постоянного смещения.
|
||||
Для вычитания фона используется AC-мощность — после удаления среднего,
|
||||
поэтому она показана отдельно от RAW, включающего постоянную составляющую.
|
||||
|
||||
| Метрика | A1 | B1 | A2 | B2 |
|
||||
|---|---:|---:|---:|---:|
|
||||
| RAW RX POWER, включая среднее | 5,303053589 | 5,328170166 | 5,311703491 | 5,396551514 |
|
||||
| RX AC POWER, без среднего | 1,084963566 | 1,092709351 | 1,049867204 | 1,090638777 |
|
||||
| BACKGROUND POWER, AC | 0,622282607 | 0,616699337 | 0,635792032 | 0,667630886 |
|
||||
| BACKGROUND-SUBTRACTED SIGNAL POWER | 0,462680958 | 0,476010015 | 0,414075173 | 0,423007891 |
|
||||
| Оценка неопределённости вычитания фона | 0,029702311 | 0,034542825 | 0,017352868 | 0,047227716 |
|
||||
| TX-MATCHED COMPLEX GAIN h | −0,008543899 + j0,009310849 | −0,008089660 + j0,009397484 | −0,007000883 + j0,010205712 | −0,006710537 + j0,010126447 |
|
||||
| Коэффициент передачи по мощности, abs(h)² | 0,000159690119 | 0,000153755289 | 0,000153168935 | 0,000147576238 |
|
||||
| MATCHED SIGNAL COMPONENT POWER | 0,312320987 | 0,297815525 | 0,299566893 | 0,285847043 |
|
||||
| RESIDUAL POWER | 0,821513728 | 0,884789710 | 0,782684444 | 0,880722972 |
|
||||
| INTEGRATED SPECTRAL POWER, полоса 27 кГц | 0,347264323 | 0,029697350 | 0,335922975 | 0,030437417 |
|
||||
| INTEGRATED SPECTRAL POWER, полоса 675 кГц | 0,508299262 | 0,512832243 | 0,500120185 | 0,533314850 |
|
||||
|
||||
Полосы спектрального интегрирования центрированы на +50 кГц. Фактическая
|
||||
расчётная полоса A — 27 кГц, B — 675 кГц; строка 675 кГц также даёт
|
||||
сравнение в общей полосе. Спектральные интегралы включают фон. Различие
|
||||
значений в полосе 27 кГц между A/B не является потерей полной мощности B:
|
||||
большая часть широкого сигнала B лежит вне этой узкой полосы.
|
||||
|
||||
Вычитание фона устойчиво во всех четырёх сегментах по заранее подготовленному
|
||||
критерию: превышение больше трёх оценок неопределённости. Эта оценка учитывает
|
||||
разброс блоков и отличие фона до/после, но не является калиброванным
|
||||
доверительным интервалом. Фон берётся из ближайших нулевых цифровых gaps;
|
||||
TX-процесс в них работает, поэтому gaps нельзя называть выключенным RF.
|
||||
Отдельные внешние окна фона и их спектры сохранены в полном JSON.
|
||||
|
||||
Комплексный h оценён на обучающих плитках; его фаза относится к началу
|
||||
активного участка после коррекции CFO. Мощность согласованной компоненты
|
||||
и остатка измерена на проверочных плитках. Остаток содержит шум и
|
||||
неописанные моделью искажения. Поэтому он не равен отдельно измеренному
|
||||
фону, а согласованная компонента не равна всей мощности после вычитания фона.
|
||||
Полная RAW/AC-статистика относится ко всему активному участку; плиточные
|
||||
метрики не следует складывать с ней как одну точную энергетическую сумму.
|
||||
|
||||
## Повторяемость и итоговые X/Y/Z
|
||||
|
||||
В таблице повторяемости знак относится ко **второму повтору относительно
|
||||
первого**: A2/A1 и B2/B1, 10 log10 отношения мощностей.
|
||||
|
||||
| Сравнение повторов | RAW RX | Фон AC | Полезная мощность после фона | abs(h)² | Согласованная компонента |
|
||||
|---|---:|---:|---:|---:|---:|
|
||||
| A1 / A2 REPEATABILITY: A2/A1 | +0,007078 дБ | +0,093274 дБ | −0,482024 дБ | −0,181074 дБ | −0,181074 дБ |
|
||||
| B1 / B2 REPEATABILITY: B2/B1 | +0,055382 дБ | +0,344629 дБ | −0,512676 дБ | −0,178136 дБ | −0,178136 дБ |
|
||||
|
||||
| Пара A/B | Принятая мощность B/A после фона | abs(h)² B/A | Согласованная компонента B/A |
|
||||
|---|---:|---:|---:|
|
||||
| B1/A1 | +0,123345 дБ | −0,164480 дБ | −0,206538 дБ |
|
||||
| B2/A2 | +0,092693 дБ | −0,161543 дБ | −0,203601 дБ |
|
||||
|
||||
Итоговые X/Y/Z — отношение средних **линейных** мощностей B1/B2 к A1/A2,
|
||||
а не среднее значений в дБ. Z рассчитано из той же мощности после фона,
|
||||
что X, с делением на скорость символов. Это энергия в код²·с, не джоули.
|
||||
|
||||
```text
|
||||
500K / 20K RECEIVED POWER DIFFERENCE = +0.108895 dB
|
||||
500K / 20K TX-MATCHED CHANNEL GAIN DIFFERENCE = -0.163042 dB
|
||||
ENERGY PER SYMBOL DIFFERENCE = -13.870505 dB
|
||||
```
|
||||
|
||||
Расчёт Z: +0,108895 − 10 log10(500000/20000) = −13,870505 дБ.
|
||||
Отдельная энергия согласованной компоненты в парных результатах изменилась
|
||||
на −14,185938 и −14,183001 дБ; это другой числитель, её не подменяют Z.
|
||||
|
||||
## Инженерная интерпретация
|
||||
|
||||
1. Внутри этой сессии 20 и 500 ксимв/с дали почти равные мощности. Небольшое
|
||||
различие повторилось в обеих парах; утверждать точную частотную
|
||||
характеристику по двум повторам нельзя.
|
||||
2. Вторые повторы слабее первых на 0,48/0,51 дБ по мощности после фона
|
||||
и примерно на 0,18 дБ по коэффициенту передачи. Фон также немного
|
||||
меняется и содержит кратковременные всплески; при этом относительное
|
||||
сравнение B/A сохраняется: расхождение двух оценок X около 0,031 дБ,
|
||||
двух оценок Y около 0,003 дБ.
|
||||
3. Прежний провал порядка 15,41 дБ **не воспроизвёлся** в текущей короткой
|
||||
OTA-сессии. Причина различия старых раздельных опытов остаётся
|
||||
неустановленной; их результаты не пересматриваются.
|
||||
4. По OTA нельзя объявить эффект собственной аппаратной потерей HackRF
|
||||
Plus: антенны и распространение входят в измеренный путь. В этой
|
||||
сессии большого эффекта вообще не обнаружено. Абсолютная мощность
|
||||
на выходе передатчика не измерена.
|
||||
5. Кабельный контроль после получения SMA-переходника остаётся необходимым
|
||||
отдельным этапом для отделения свойств аппаратуры от антенн и канала.
|
||||
OTA его не заменяет. Автоматического повторения опыта или добавления
|
||||
PA/внешнего LNA нет; необходимость усилителя не установлена.
|
||||
|
||||
## Проверка и артефакты
|
||||
|
||||
Verifier независимо прочитал журналы и raw IQ без оборудования и записи
|
||||
файлов: проверил число команд, постоянство параметров, опору, размеры,
|
||||
SHA, отсутствие клиппинга/потерь и согласованность четырёх начал. Raw AC,
|
||||
два окна фона, CFO и комплексный МНК пересчитаны вторым способом;
|
||||
результаты совпали с анализатором до 1e−12. Воспроизведённых находок нет.
|
||||
|
||||
RX SHA-256: `e336dd653fa554058052fcf851e9f2462f66b8cf7c710815ca2b9a09ffc23ad4`.
|
||||
TX SHA-256: `5b34bbe1a8e6d037d2d6d367a74e9eb84e8940db7da61600ffaa7f7497d4f600`.
|
||||
|
||||
- [Полный подготовленный анализ](../data/processed/lab056/rf_analysis.json).
|
||||
- [Итоговая машинная сводка](../data/processed/lab056/rf_result.json).
|
||||
- [Авторизация и фиксированные параметры](../data/processed/lab056/rf_session_authorization.json).
|
||||
- [Фактические команды и время](../data/processed/lab056/rf_session_commands.json).
|
||||
- Raw: `data/raw/lab056/rx_stream.cs8`, `capture_result.json`,
|
||||
`hardware_attempt.json`, `tx_process_result.json`, `rx_stdout.txt`, `rx_stderr.txt`.
|
||||
|
||||
Исходные результаты подготовки, preflight и искусственные записи сохранены.
|
||||
Код анализатора/runner и TX не изменялись; использована проверенная версия
|
||||
44 целевых теста / quick_gate 867/30/13 / pytest 867 passed. Для анализа
|
||||
аппаратной записи полные тесты повторно не запускались. Diff check PASS.
|
||||
HEAD `5add95ecb8865f59075bbbced08d97b183fb3b48`, Lab056 не коммитилась,
|
||||
push не выполнялся. Приём пакетов, видео и FEC не проверялись.
|
||||
|
||||
**Выполненных TX-сеансов: 1. RF TX сейчас = 0. STOP.**
|
||||
98
docs/lab056_rx_preflight.md
Normal file
98
docs/lab056_rx_preflight.md
Normal file
@@ -0,0 +1,98 @@
|
||||
# Lab056 — аппаратный common-clock и RX-only preflight
|
||||
|
||||
10 сентября 2026 года, 12:16:28–12:16:29 по Москве.
|
||||
|
||||
**Аппаратный preflight PASS. RF TX = 0. STOP перед отдельным разрешением TX.**
|
||||
Проверена общая опора и записан фон при выключенном передатчике.
|
||||
Сравнение A/B по эфиру ещё не выполнялось.
|
||||
|
||||
```text
|
||||
RF_FREQ = 1400000000 Hz
|
||||
COMMON CLOCK = PASS; MASTER reg29=0x26; SLAVE reg29=0x26; SLAVE CLKIN=DETECTED
|
||||
RX PREFLIGHT = PASS; 800000 complex samples; 0.1 s; RX overruns=0
|
||||
CLIPPING = 0 / 800000 samples (0%)
|
||||
RF TX = 0
|
||||
READY FOR SINGLE ABAB TX = YES (technical preflight; separate authorization pending)
|
||||
STOP
|
||||
```
|
||||
|
||||
## Условия
|
||||
|
||||
По заданию пользователя 1400 МГц — только частота текущего лабораторного
|
||||
Lab056. Она не назначает рабочий диапазон SDR_Rover. Ориентир дальнейших
|
||||
полевых работ около 180 МГц рассматривается отдельно; антенна на этот
|
||||
диапазон уже имеется. Варианты 50/144 МГц здесь не исследуются.
|
||||
|
||||
Схема задана пользователем: MASTER TX → TX-антенна → LOS → RX-антенна → SLAVE RX.
|
||||
Используются имеющиеся антенны на 1400 МГц. Точные модели/маркировка не
|
||||
сообщены и программно не установлены; они не являлись препятствием для
|
||||
этого RX-only этапа. Антенны неподвижны, ориентация и поляризация одинаковы.
|
||||
Расстояние по заданию примерно 3–5 м; точное измеренное значение отсутствует.
|
||||
Кабели и геометрия сохраняются на будущую ABAB.
|
||||
|
||||
Аппаратный RX: Fs 8 Мвыб/с, LNA/VGA 24/24 дБ, RF amplifier и Bias-Tee OFF.
|
||||
Внешние PA/LNA не используются. TX VGA 10 дБ остаётся запланированным
|
||||
параметром будущего сеанса; TX в этом этапе не включался.
|
||||
|
||||
MASTER `000000000000000097c063dc323b97d3` и SLAVE
|
||||
`000000000000000097c063dc2e5327d3` подтверждены свежей инвентаризацией.
|
||||
Обе платы определены как HackRF One r9 с firmware/libhackrf 2024.02.1.
|
||||
|
||||
## Что выполнено
|
||||
|
||||
Перед оборудованием подтверждены HEAD, пустой Git index, SHA проверенного
|
||||
кода и неизменность готового TX. Проверка процессов дала CLEAR.
|
||||
|
||||
Выполнены короткие RX-start по 65 536 отсчётов на MASTER и SLAVE для выбора
|
||||
источника тактирования, чтения reg29 обеих плат и SLAVE CLKIN. Оба reg29
|
||||
равны 0x26; CLKIN обнаружен первым запросом, через 67,787 мс после начала
|
||||
ожидания опоры. Затем SLAVE записал 800 000 комплексных отсчётов RX, 0,1 с.
|
||||
Все три команды hackrf_transfer работали только с `-r`, на одной частоте
|
||||
и с одинаковыми RX-параметрами. Журнал команд не содержит `-t`.
|
||||
|
||||
| Метрика сохранённого RX | Значение |
|
||||
|---|---:|
|
||||
| Размер CS8 | 1 600 000 байт |
|
||||
| Комплексных отсчётов | 800 000 |
|
||||
| Полная средняя мощность | 4,85388125 код² |
|
||||
| Мощность после удаления среднего | 0,6658039582 код² |
|
||||
| RMS полного IQ | 2,203152571 код |
|
||||
| Среднее I / Q | 0,92535625 / 1,82532 код |
|
||||
| Максимум абсолютного I / Q | 4 / 6 код |
|
||||
| Максимальная комплексная амплитуда | 6,08276253 код |
|
||||
| Отсчётов с rail-кодами −128/127 | 0 |
|
||||
| RX overruns | 0 |
|
||||
|
||||
Цифровых признаков насыщения в этом RX-only фоне нет. Это не доказывает
|
||||
отсутствие перегрузки при включённом TX: его сигнал пока отсутствовал.
|
||||
Из этих отсчётов также нельзя установить абсолютную RF-мощность или
|
||||
доказать отсутствие аналоговой компрессии. При будущем разрешённом запуске
|
||||
сохраняются подготовленные проверки клиппинга без автоподбора gain.
|
||||
|
||||
SHA-256 RX: `c4257f26e4cc8562eb32228f9a50fdeb055879c928af0744cdf4a81cf7cd085b`.
|
||||
SHA-256 TX: `5b34bbe1a8e6d037d2d6d367a74e9eb84e8940db7da61600ffaa7f7497d4f600`.
|
||||
После проверки CLKOUT обеих плат выключены успешно, процессы CLEAR,
|
||||
ошибок cleanup нет. Больше аппаратных действий не выполнялось.
|
||||
|
||||
## Доказательства и STOP
|
||||
|
||||
- [План и описание геометрии](../data/processed/lab056/rx_preflight_plan.json).
|
||||
- [Журнал фактических команд с временем и выводом](../data/processed/lab056/rx_preflight_commands.json).
|
||||
- [Результат RX-only preflight](../data/processed/lab056/rx_preflight_result.json).
|
||||
- Исходный RX и исходный результат: `data/raw/lab056/preflight_rx.cs8`,
|
||||
`preflight_result.json`; маркер попытки: `preflight_attempt.json`.
|
||||
|
||||
Код и TX waveform не менялись. Последние программные проверки относятся
|
||||
к этой же версии: 44 целевых теста, quick_gate 867/30/13 PASS и pytest
|
||||
867 passed. Полные тесты повторно не запускались для записи аппаратного
|
||||
результата. Git diff --check PASS. Lab054 NOT_A, 0/16 сохранён.
|
||||
|
||||
Verifier проверил только сохранённые файлы: 12 команд, три RX-start,
|
||||
ни одной TX-команды; регистры, CLKIN, cleanup и параметры подтверждены
|
||||
по исходному выводу. Целочисленный пересчёт мощности/клиппинга и SHA
|
||||
полностью согласован с JSON. Воспроизведённых расхождений нет, PASS.
|
||||
Дополнительных аппаратных команд verifier не выполнял.
|
||||
|
||||
HEAD `5add95ecb8865f59075bbbced08d97b183fb3b48`. Lab056 не коммитилась,
|
||||
push не выполнялся. Технические условия preflight выполнены; отдельного
|
||||
разрешения на единственный ABAB TX ещё нет. **STOP.**
|
||||
Reference in New Issue
Block a user