Lab064: measure OTA level linearity at TX VGA 10 dB
This commit is contained in:
120
docs/lab064_rx_preflight.md
Normal file
120
docs/lab064_rx_preflight.md
Normal 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 автоматически не начинается.
|
||||
Reference in New Issue
Block a user