Lab064: measure OTA level linearity at TX VGA 10 dB

This commit is contained in:
LittleSam129
2026-09-15 12:03:48 +03:00
parent 4437917465
commit cff226e0bf
12 changed files with 2831 additions and 0 deletions

View File

@@ -624,3 +624,42 @@
[локальное сопоставление CSV](../data/processed/lab063/local_alignment.csv).
- **STOP:** Lab063 не коммитировалась, push не выполнялся, Lab064 не создана. Следующий шаг
требует отдельного согласования; RF TX=0.
## Lab064: измерение уровня и линейности RF-тракта
- **Запись 059; подготовка и RX-only, RF TX=0.** Создан один 0,75-секундный
PRBS7/BPSK/RRC waveform с четырьмя 100-мс участками −18/−12/−6/0 дБ,
промежутками по 50 мс и нулями по 100 мс в начале и конце.
- **Цифровые уровни:** RMS 5,556137/11,056978/22,056892/44,000457 кода; шаги
+5,977270/+5,998157/+5,998257 дБ; max |I|/|Q| не выше 69/69, clipping0.
- **Методика:** пакетный приёмник, FEC, CRC, T2 и JPEG не используются. Главная
величина — мощность согласованной с известным TX составляющей. Анализатор
выдаёт `INVALID_CAPTURE` без A/B/C при любом промежуточном underrun, overrun
или clipping.
- **Аппаратный preflight PASS:** MASTER/SLAVE reg29=0x26, SLAVE CLKIN=DETECTED
при первом опросе через66,793мс. RX-only:800000 отсчётов, полный RMS2,193193,
AC RMS0,832038, max|I|/|Q|=4/5, clipping0, overruns0, сильного фона нет.
- **Проверки:** quick gate984/37/13 PASS, pytest984 passed, целевые13 passed,
независимая read-only проверка чистая.
- [Текущее состояние](lab064_current_state.md), [отчёт](lab064_rx_preflight.md),
[подготовка](../data/processed/lab064/preparation.json),
[software gate](../data/processed/lab064/software_gate.json),
[preflight](../data/processed/lab064/preflight_result.json).
- **STOP:** технически готово к одному TX, но отдельного разрешения ещё нет.
Lab064 не коммитируется, push не выполняется, Lab065 не начинается.
- **Единственный RF-сеанс:** один TX, повторов0, underruns0, overruns0,
clipping0; RX16000000 отсчётов за2,0с. Фон стабилен: AC RMS
0,718264…0,728217 кода, разброс0,119530дБ.
- **Линейность:** L0→L1/L1→L2/L2→L3 дали ошибки
−0,017501/−0,169270/+0,022162дБ. Полный рост TX/RX равен
17,973685/17,809077дБ, общая ошибка −0,164609дБ. Признака компрессии нет.
- **Итог `LINEAR_BUT_WEAK`:** L3 matched/residual равен −12,133336дБ. Тракт
следует цифровым ступеням, но согласованная полезная составляющая остаётся
слабее остатка. [RF-отчёт](lab064_rf_result.md),
[RF JSON](../data/processed/lab064/rf_result.json),
[capture JSON](../data/processed/lab064/capture_result.json).
- **Текущее состояние:** `RF TX=0`, процессы CLEAR; второй TX не выполнялся,
Lab064 не коммитировалась, push не выполнялся, Lab065 не создана.
- **Независимая проверка:** прямой пересчёт из TX/RX CS8 подтвердил все SHA,
счётчики, фоны, matched/residual/`h`, ступени и спектральные полосы;
расхождений нет. Quick gate и pytest после RF:986 passed,0 failed.

View File

@@ -0,0 +1,141 @@
# Lab064: измерение уровня и линейности RF-тракта
Lab064 проверяет, следует ли мощность согласованной принятой составляющей
заранее заданной цифровой лестнице TX. Это измерительный опыт с известным
PRBS7/BPSK-сигналом, а не пакетный тест. FEC, CRC, T2, JPEG и packet output в
нём не используются.
На текущем этапе сформирован сигнал, подготовлены RX-first runner, офлайн-
анализатор и полный учёт сообщений overruns/underruns. Перед аппаратным
preflight и будущим RF-сеансом исходные параметры не меняются.
## Физические условия
| Условие | Значение |
|---|---|
| Центральная частота | 1400000000 Гц |
| Расстояние TX–RX | примерно 1,2 м |
| Геометрия | прямая видимость, помещение |
| TX | плата и антенна возле окна |
| RX | плата и антенна на столе пользователя |
| Антенны | имеющиеся антенны на 1400 МГц |
| Поляризация | одинаковая |
| Тактирование | 10 МГц TCXO → MASTER → MASTER CLKOUT → SLAVE CLKIN |
Антенны, платы, длинный кабель общей опоры, USB-подключение и остальные
кабели не перемещаются. Во время опыта не меняются частота, усиления,
ориентация и форма сигнала.
## Подготовленный измерительный сигнал
Параметры сигнала: BPSK/PRBS7, 20000 символов/с, Fs 8000000 комплексных
отсчётов/с, 400 отсчётов/символ, цифровая несущая +50000 Гц и существующий RRC
с roll-off 0,35 и span 10 символов. TX VGA равен 10 дБ. RX LNA/VGA равны
24/24 дБ. RF amplifier и Bias-Tee выключены.
Один файл содержит 100 мс нулей, четыре одинаковых по содержанию участка по
100 мс, три нулевых промежутка по 50 мс и 100 мс нулей в конце. Общая длина:
6000000 комплексных отсчётов, 12000000 байт, 0,75 с. Нулевые участки являются
цифровыми нулями IQ; они не означают аппаратного выключения TX посреди файла.
SHA-256 подготовленного CS8:
`fa260719659b2984fe29588238415622cd75c6daefec6cc9130ba1bf851bd3f9`.
| Уровень | Задано, дБ | Фактически, дБ | TX RMS, код | max \|I\| / \|Q\|, код | Шаг мощности, дБ | Clipping |
|---|---:|---:|---:|---:|---:|---|
| L0 | −18 | −17,973685 | 5,556137 | 9 / 9 | — | нет |
| L1 | −12 | −11,996415 | 11,056978 | 17 / 17 | +5,977270 | нет |
| L2 | −6 | −5,998257 | 22,056892 | 34 / 35 | +5,998157 | нет |
| L3 | 0 | 0 | 44,000457 | 69 / 69 | +5,998257 | нет |
Небольшое отклонение L0 от −18 дБ вызвано квантованием CS8. Каждый шаг
укладывается в заранее установленный допуск ±0,1 дБ.
## Анализ будущей записи
Для каждого L0…L3 анализатор отдельно выдаёт полный и AC RMS, средние I/Q,
max |I|, max |Q| и максимальную комплексную амплитуду. По соседнему нулевому
окну оценивается фон. По известному TX оцениваются комплексный коэффициент
передачи `h`, `|h|²`, мощность согласованной составляющей, мощность остатка и
их отношение.
Для каждой соседней пары вычисляются:
```text
TX INPUT DIFFERENCE
RX MATCHED POWER DIFFERENCE
LINEARITY ERROR = RX difference − TX difference
```
Критерии зафиксированы до RF:
- линейный участок: максимальная абсолютная ошибка шага не более 1,0 дБ;
- признак компрессии: ошибка верхнего шага не более −1,5 дБ;
- `LINEAR_BUT_WEAK`: шаги линейны, фон стабилен, а L3 ниже 3 дБ над остатком;
- `HEALTHY_LINEAR_RANGE`: шаги линейны, фон стабилен, а L3 не менее 6 дБ над
остатком;
- неоднозначный результат получает статус `NOT_LOCALIZED`.
Эти границы являются правилами данного опыта, а не абсолютной калибровкой
RF-мощности. Абсолютную выходную и принятую мощность без измерительного прибора
установить нельзя.
Синтетическая проверка известного линейного комплексного канала с DC и шумом
восстановила три цифровых шага с максимальной ошибкой меньше 0,0001 дБ. Это
проверяет вычисления анализатора, но не подтверждает аппаратные свойства
HackRF или эфирного канала.
## Управление аппаратным сеансом
Preflight допускает только RX-команды. Он проверяет MASTER/SLAVE reg29=0x26,
SLAVE CLKIN=DETECTED, процессы, инвентаризацию, 0,1 с фона, rail-коды,
overruns, AC RMS и максимумы |I|/|Q|. Усиления автоматически не меняются.
Будущий runner запускает RX раньше TX. Передача требует отдельного явного
флага, создаёт одноразовый маркер до обращения к SDR и допускает ровно один
TX-вызов. Полные stdout и stderr сохраняются раздельно. В итог попадают все
промежуточные и финальные счётчики потерь, их максимум и последнее значение.
Любой underrun, overrun, clipping или аппаратная ошибка завершает опыт без
повтора. Анализатор при этом может сохранить диагностические метрики, но
выдаёт только `INVALID_CAPTURE`: варианты A/B/C запрещены. Проверка использует
все строки счётчиков и их максимум, поэтому последний ноль не может скрыть
предыдущее ненулевое значение.
После исправления строгой проверки счётчиков quick gate прошёл: 984 теста
ядра, 37 функциональных проверок выполнены, 13 пропущены. Полный pytest:
984 passed, 0 failed. Независимая read-only проверка подтвердила подготовленный
CS8, программные метрики и запрет классификации невалидной записи.
## Аппаратный preflight
14 сентября 2026 года выполнена одна разрешённая аппаратная проверка при
выключенном передатчике. MASTER/SLAVE reg29 равны `0x26`, SLAVE CLKIN имеет
состояние `DETECTED` при первом опросе через 66,793 мс. RX-only запись длиной
800000 отсчётов дала AC RMS 0,832038 кода, max |I|/|Q| 4/5 кодов, clipping 0 и
overruns 0. Неожиданно сильного сигнала нет. После отключения CLKOUT процессы
имеют состояние `CLEAR`, ошибок очистки нет. Подробности приведены в
[отчёте preflight](lab064_rx_preflight.md).
`RF TX = 0`. На этом этапе Lab064 не коммитируется. Push не выполняется.
Lab065 автоматически не начинается.
## Фактический RF-результат
14 сентября 2026 года выполнен один разрешённый RF-сеанс без повторов. TX
underruns 0, RX overruns 0, clipping 0; RX содержит 16000000 комплексных
отсчётов за 2,0 с. Согласованная мощность выросла на 17,809077 дБ при цифровом
росте 17,973685 дБ. Общая ошибка линейности равна −0,164609 дБ. Верхняя ступень
дала +6,020420 дБ при ожидаемых +5,998257 дБ, признака компрессии нет.
Фон стабилен: AC RMS 0,718264…0,728217 кода, разброс мощности 0,119530 дБ.
Даже L3 остаётся на −12,133336 дБ относительно остатка. Итог по заранее
заданным критериям: `LINEAR_BUT_WEAK`. Подробные значения приведены в
[RF-отчёте](lab064_rf_result.md).
После сеанса `RF TX = 0`, процессы `CLEAR`. Усиления не менялись, второй TX не
выполнялся. Lab064 не коммитировалась, push не выполнялся, Lab065 не создана.
Независимый пересчёт непосредственно по TX/RX CS8 подтвердил SHA, аппаратные
счётчики, все четыре matched/residual/`h`, пять окон фона, три ступени и общий
результат L3/L0. Расхождений нет, вердикт проверки: `чисто`. После сеанса quick
gate и полный pytest дали 986 passed, 0 failed; `git diff --check` прошёл.

216
docs/lab064_rf_result.md Normal file
View File

@@ -0,0 +1,216 @@
# Lab064: результат измерения уровня и линейности RF-тракта
В одном коротком OTA-сеансе цифровая мощность TX была увеличена почти на 18 дБ,
то есть цифровая амплитуда выросла примерно в 7,92 раза. Согласованная с
известным TX амплитуда на RX выросла в 7,77 раза, а её мощность на 17,81 дБ.
Коэффициент передачи `|h|` почти не менялся. Признака компрессии на верхнем
уровне не обнаружено.
При этом полезная согласованная составляющая остаётся слабее остатка даже на
L3: −12,13 дБ. Фон во всех пяти нулевых окнах стабилен. По заранее заданным
критериям результат классифицирован как `LINEAR_BUT_WEAK`.
Опыт установил относительную линейность именно этой цифровой лестницы в
текущей OTA-геометрии. Он не измеряет абсолютную мощность в ваттах или дБм и не
разделяет вклад TX, антенн, эфирного канала и RX. Для этого нужен измерительный
прибор или отдельный проведённый тест по кабелю.
## Сеанс и аппаратная целостность
14 сентября 2026 года выполнен ровно один разрешённый TX. RX стартовал раньше
TX. Повторных передач не было.
| Проверка | Результат |
|---|---:|
| TX waveform SHA-256 | `fa260719659b2984fe29588238415622cd75c6daefec6cc9130ba1bf851bd3f9` |
| RF / Fs / symbol rate | 1400000000 Гц / 8000000 отсчётов/с / 20000 символов/с |
| TX VGA / RX LNA / RX VGA | 10 / 24 / 24 дБ |
| RF amplifier / Bias-Tee | выключены |
| MASTER / SLAVE reg29 | `0x26` / `0x26` |
| SLAVE CLKIN | `DETECTED`, второй опрос, 139,042 мс |
| Выполненные TX-сеансы | 1 |
| Автоматические повторы | 0 |
| TX underrun, максимум / финал | 0 / 0 |
| RX overrun, максимум / финал | 0 / 0 |
| RX clipping | 0 |
| RX длина | 16000000 комплексных отсчётов, 2,000000 с |
| RX SHA-256 | `02015891948aaee52ff81e60fdfeb391bb9b76cd9192b75972b8fedbc8690d86` |
| Процессы до / после | `CLEAR` / `CLEAR` |
| Ошибки очистки | 0 |
В TX-журнале сохранены две строки `0 underruns`; в RX-журнале сохранены четыре
строки `0 overruns`. Анализ использует все наблюдения и их максимум. Финальный
нулевой счётчик не мог бы скрыть промежуточное ненулевое значение.
## Фон
Каждое окно имеет длину 160000 отсчётов, или 20 мс, и лежит внутри цифрового
нулевого участка вдали от активной границы.
| Окно | AC power, код² | AC RMS, код |
|---|---:|---:|
| Начальный guard | 0,521529 | 0,722170 |
| Gap L0–L1 | 0,523180 | 0,723312 |
| Gap L1–L2 | 0,515904 | 0,718264 |
| Gap L2–L3 | 0,522200 | 0,722634 |
| Конечный guard | 0,530300 | 0,728217 |
Диапазон AC RMS равен 0,718264…0,728217 кода. Отношение максимальной AC-мощности
к минимальной составляет 0,119530 дБ при заранее заданной границе стабильности
3 дБ. Фон считается стабильным.
## Метрики участков
Мощности приведены в квадрате цифрового кода RX. Это относительные цифровые
величины, а не ватты и не дБм.
### L0, −18 дБ
```text
FULL IQ RMS = 2.277200 code
AC RMS = 0.956317 code
MEAN I = 0.949724 code
MEAN Q = 1.835518 code
MAX |I| = 6 code
MAX |Q| = 7 code
MAX COMPLEX MAGNITUDE = 7.071068 code
BACKGROUND AC POWER = 0.521529 code^2
MATCHED SIGNAL POWER = 0.000750751 code^2
RESIDUAL POWER = 1.213794804 code^2
MATCHED / RESIDUAL = -32.086493 dB
h = 0.001876064 - j0.004508063
|h| = 0.004882853
|h|^2 = 0.000023842249
CFO = +0.095772 Hz
```
### L1, −12 дБ
```text
FULL IQ RMS = 2.291392 code
AC RMS = 0.989014 code
MEAN I = 0.956038 code
MEAN Q = 1.832573 code
MAX |I| = 6 code
MAX |Q| = 7 code
MAX COMPLEX MAGNITUDE = 7.211103 code
BACKGROUND AC POWER = 0.523180 code^2
MATCHED SIGNAL POWER = 0.002961235 code^2
RESIDUAL POWER = 1.069594603 code^2
MATCHED / RESIDUAL = -25.577463 dB
h = 0.004471119 - j0.001937686
|h| = 0.004872939
|h|^2 = 0.000023745532
CFO = -0.168571 Hz
```
### L2, −6 дБ
```text
FULL IQ RMS = 2.275060 code
AC RMS = 0.925298 code
MEAN I = 0.963183 code
MEAN Q = 1.841739 code
MAX |I| = 6 code
MAX |Q| = 7 code
MAX COMPLEX MAGNITUDE = 7.280110 code
BACKGROUND AC POWER = 0.515904 code^2
MATCHED SIGNAL POWER = 0.011333436 code^2
RESIDUAL POWER = 0.529088688 code^2
MATCHED / RESIDUAL = -16.691669 dB
h = 0.003277253 - j0.003478187
|h| = 0.004778930
|h|^2 = 0.000022838175
CFO = +0.006742 Hz
```
### L3, 0 дБ
```text
FULL IQ RMS = 2.341160 code
AC RMS = 1.057677 code
MEAN I = 0.957558 code
MEAN Q = 1.856188 code
MAX |I| = 6 code
MAX |Q| = 7 code
MAX COMPLEX MAGNITUDE = 7.280110 code
BACKGROUND AC POWER = 0.522200 code^2
MATCHED SIGNAL POWER = 0.045331864 code^2
RESIDUAL POWER = 0.740861774 code^2
MATCHED / RESIDUAL = -12.133336 dB
h = 0.003384388 - j0.003391322
|h| = 0.004791153
|h|^2 = 0.000022955145
CFO = -0.076067 Hz
```
Максимумы активных участков равны `|I|=6` и `|Q|=7`. Полная двухсекундная
запись также далека от rail-кодов: `|I|=7`, `|Q|=8`. Это исключает цифровой
clipping в записи, но не является самостоятельным доказательством идеальной
линейности аналогового тракта.
## Линейность мощности и амплитуды
| Пара | TX, дБ | RX matched, дБ | Ошибка, дБ | TX amplitude ratio | RX matched amplitude ratio |
|---|---:|---:|---:|---:|---:|
| L0 → L1 | +5,977270 | +5,959770 | −0,017501 | 1,990048 | 1,986042 |
| L1 → L2 | +5,998157 | +5,828887 | −0,169270 | 1,994839 | 1,956340 |
| L2 → L3 | +5,998257 | +6,020420 | +0,022162 | 1,994862 | 1,999959 |
| L0 → L3 | +17,973685 | +17,809077 | −0,164609 | 7,919254 | 7,770587 |
Максимальная абсолютная ошибка отдельной ступени равна 0,169270 дБ и заметно
меньше заранее установленной границы линейности 1,0 дБ. Верхняя ступень не
отстаёт от TX: она выросла на 6,020420 дБ при ожидаемых 5,998257 дБ. Порог
признака компрессии составлял −1,5 дБ ошибки верхней ступени; фактическая
ошибка равна +0,022162 дБ.
`|h|` изменился от 0,004882853 на L0 до 0,004791153 на L3. Это соответствует
−0,164609 дБ по мощности и совпадает с общей ошибкой линейности. Систематического
падения коэффициента передачи на верхнем уровне нет.
Остаточная мощность при переходе L2 → L3 выросла примерно на 1,46 дБ, тогда
как согласованная полезная мощность выросла на 6,02 дБ. Отношение
matched/residual улучшилось с −16,69 до −12,13 дБ. Ухудшения формы сигнала на
L3 относительно L2 по этому показателю нет.
Диагностические полосы остатка около 50/100/150 кГц на L3 равны
0,009576/0,004469/0,002725 код². Они не растут быстрее согласованной мощности
при переходе L2 → L3. Эти полосы не являются калиброванным измерением
RF-гармоник, поэтому абсолютный вывод о спектральной чистоте потребовал бы
анализатора спектра.
## Вывод
```text
CLASSIFICATION = LINEAR_BUT_WEAK
```
Текущий тракт воспроизводит цифровые ступени почти один к одному по дБ. Данных
за компрессию при TX VGA 10 дБ и RX LNA/VGA 24/24 дБ нет. Главная проблема
этого сеанса состоит в низкой согласованной полезной мощности относительно
остатка: даже на L3 запас равен −12,13 дБ.
Практически это означает, что простое объяснение Lab062 аналоговой перегрузкой
текущего тракта не подтверждается. Слабое отношение полезной составляющей к
остатку остаётся вероятным фактором плохого 500K-приёма, хотя Lab064 использует
узкий сигнал 20 ksymbol/s и сама по себе не объясняет все широкополосные
искажения Lab062.
Рекомендуемый следующий отдельный шаг: согласовать повтор той же лестницы при
TX VGA 20 дБ, сохранив RX LNA/VGA 24/24 дБ, частоту, геометрию, waveform и
общую опору. Это проверит, улучшается ли matched/residual при сохранении
линейности. В рамках Lab064 усиления не менялись и второй TX не выполнялся.
## Независимая проверка
Проверяющий агент работал только с сохранёнными файлами и не обращался к
оборудованию. Он независимо пересчитал SHA-256, положение четырёх сегментов,
пять окон фона, matched/residual, комплексные `h`, отношения мощности и
амплитуды, общий результат L3/L0 и все двенадцать спектральных значений.
Подтверждённых расхождений нет. Целевые тесты дали 15 passed; итоговый вердикт:
`чисто`.
После RF-сеанса quick gate прошёл: 986 тестов ядра, 37 функциональных проверок,
13 пропусков. Полный pytest: 986 passed, 0 failed. `git diff --check`: PASS.
`RF TX = 0`. Lab064 не коммитировалась, push не выполнялся, Lab065 не создана.

120
docs/lab064_rx_preflight.md Normal file
View File

@@ -0,0 +1,120 @@
# Lab064: подготовка и RX-only preflight
14 сентября 2026 года завершена программная подготовка измерения уровня и
линейности текущего OTA-тракта. Затем выполнена одна аппаратная проверка общей
опоры и RX-фона. Preflight прошёл. Передатчик не запускался: `RF TX = 0`.
## Условия
| Параметр | Значение |
|---|---|
| Центральная частота | 1400000000 Гц |
| Скорость символов | 20000 символов/с |
| Частота дискретизации | 8000000 комплексных отсчётов/с |
| Цифровая несущая | +50000 Гц |
| TX VGA | 10 дБ |
| RX LNA / VGA | 24 / 24 дБ |
| RF amplifier / Bias-Tee | выключены |
| Расстояние TX–RX | примерно 1,2 м |
| Геометрия | прямая видимость, помещение |
| TX | плата и антенна возле окна |
| RX | плата и антенна на столе пользователя |
| Антенны | имеющиеся антенны на 1400 МГц |
| Поляризация | одинаковая |
| Общая опора | 10 МГц TCXO → MASTER → MASTER CLKOUT → SLAVE CLKIN |
Антенны, платы, длинный кабель общей опоры, USB-подключение и остальные
кабели не перемещались. Усиления не менялись.
## Измерительный TX-файл
Подготовлен один детерминированный PRBS7/BPSK/RRC-сигнал с уровнями −18, −12,
−6 и 0 дБ относительно номинального waveform. Он состоит из 100 мс начальных
нулей, четырёх участков по 100 мс, трёх промежутков по 50 мс и 100 мс конечных
нулей. Полная длительность равна 0,75 с, длина составляет 6000000 комплексных
отсчётов и 12000000 байт.
| Уровень | TX RMS, код | max \|I\| / \|Q\|, код | Фактический уровень, дБ | Шаг, дБ |
|---|---:|---:|---:|---:|
| L0 | 5,556137 | 9 / 9 | −17,973685 | — |
| L1 | 11,056978 | 17 / 17 | −11,996415 | +5,977270 |
| L2 | 22,056892 | 34 / 35 | −5,998257 | +5,998157 |
| L3 | 44,000457 | 69 / 69 | 0 | +5,998257 |
Цифрового clipping нет. SHA-256:
`fa260719659b2984fe29588238415622cd75c6daefec6cc9130ba1bf851bd3f9`.
Синтетический линейный канал с известным комплексным коэффициентом, DC и
шумом прошёл software gate. После независимой проверки анализатор изменён так,
чтобы промежуточный ненулевой счётчик нельзя было скрыть финальным нулём. При
любой потере сохраняются диагностические метрики, но A/B/C-классификация
запрещается и результат получает статус `INVALID_CAPTURE`.
## Common clock
Свежая инвентаризация подтвердила две HackRF One r9 с firmware/libhackrf
2024.02.1. Роли сохранены:
- MASTER `000000000000000097c063dc323b97d3`;
- SLAVE `000000000000000097c063dc2e5327d3`.
Аппаратная проверка получила:
```text
MASTER reg29 = 0x26
SLAVE reg29 = 0x26
SLAVE CLKIN = DETECTED
CLKIN query = 1
time to detect = 66.793 ms
```
## RX-only фон
SLAVE записал 800000 комплексных отсчётов, 0,1 с, при 1400 МГц и RX LNA/VGA
24/24 дБ.
| Метрика | Значение |
|---|---:|
| Полный RMS IQ | 2,193193 кода |
| AC RMS после удаления среднего | 0,832038 кода |
| Средние I / Q | 0,933738 / 1,801650 кода |
| max \|I\| / \|Q\| | 4 / 5 кодов |
| Максимальная комплексная амплитуда | 5,385165 кода |
| Clipping | 0 / 800000 отсчётов |
| RX overruns | 0, максимум и финальное значение |
| Неожиданно сильный сигнал | нет |
Порог STOP для неожиданно сильного цифрового фона: AC RMS не менее 20 кодов
или max |I|/|Q| не менее 100 кодов. Измеренные значения значительно ниже.
Отсутствие rail-кодов не доказывает отсутствие аналоговой компрессии при
будущей передаче. Абсолютная RF-мощность без измерительного прибора неизвестна.
SHA-256 RX-only записи:
`02d87adcbb621027290a77d5f8fd3190c299d13e89f887cd294d4af352a6ef52`.
Процессы до и после preflight имели состояние `CLEAR`. Оба CLKOUT выключены,
ошибок очистки нет. Preflight сохранил все две строки счётчика RX overruns;
обе равны нулю. Вызовов `hackrf_transfer -t` не было, `rf_tx_count = 0`.
## Проверки и артефакты
- quick gate: 984 теста ядра, 37 функциональных проверок, 13 пропусков;
- pytest: 984 passed, 0 failed;
- целевые тесты Lab064: 13 passed;
- `git diff --check`: PASS;
- независимая read-only проверка: чисто.
Артефакты:
- [подготовка](../data/processed/lab064/preparation.json);
- [software gate](../data/processed/lab064/software_gate.json);
- [preflight](../data/processed/lab064/preflight_result.json);
- CS8 и исходные аппаратные журналы находятся в `data/raw/lab064/` и в Git не
входят.
`READY FOR SINGLE LAB064 TX = YES` означает техническую готовность только этой
конфигурации. Передача требует отдельного явного разрешения пользователя.
`RF TX = 0`. STOP.
Lab064 не коммитируется до аппаратного результата. Push не выполняется.
Lab065 автоматически не начинается.