Lab064: measure OTA level linearity at TX VGA 10 dB
This commit is contained in:
@@ -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.
|
||||
|
||||
141
docs/lab064_current_state.md
Normal file
141
docs/lab064_current_state.md
Normal 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
216
docs/lab064_rf_result.md
Normal 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
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