121 lines
6.4 KiB
Markdown
121 lines
6.4 KiB
Markdown
# 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 автоматически не начинается.
|