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

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 не создана.