Лабораторная 6.10 — Анализ фазового разрыва при переключении AGC/LNA¶
Цель¶
Существующий двухплатный QPSK-канал (Block 11) намеренно использует фиксированный RX gain. Эта лабораторная намеренно включает AGC AD9361/AD9363 и измеряет, что переключение состояния gain делает с фазой несущей: честно отделённое от обычного вращения фазы, которое CFO создаёт на каждом отсчёте в любом случае.
Фаза приёмника непрерывно вращается из-за CFO даже без какого-либо gain-события. Простое сравнение «фаза до» и «фаза после» на переключении gain не может отличить связанный с gain фазовый глитч от этого обычного вращения: их нужно разделять, подгоняя тренд CFO и глядя на остаток именно в момент перехода.
Это дополняет Lab 6.2 и issue #29 (таблица gain и пределы overload AD9363), которые характеризуют статическое поведение gain/overload. Эта лабораторная про динамические переходы gain.
Метод¶
baseline с фиксированным gain
-> включить AGC
-> заставить/наблюдать переход состояния gain
-> подогнать тренд CFO до перехода (фаза от номера отсчёта)
-> экстраполировать тренд через переход
-> discontinuity = наблюдаемая фаза - экстраполированная фаза
-> шаг амплитуды, время восстановления, влияние на EVM/BER
Исполняемый инструмент анализа¶
blocks/block_06_rf_frontend_and_ad9363/python/lab_6_10_agc_phase_transition_analysis.py
Сначала запустить self-test без аппаратуры:
python blocks/block_06_rf_frontend_and_ad9363/python/lab_6_10_agc_phase_transition_analysis.py --self-test
Self-test строит две синтетические записи с одинаковым внесённым CFO и одинаковым шагом амплитуды: одна с дополнительно внесённым фазовым разрывом в момент перехода, другая без него (контроль). PASS означает, что инструмент восстанавливает внесённый разрыв с точностью до 0.05 рад на первой записи и показывает near-zero на контрольной: то есть не путает обычное вращение фазы от CFO с gain-событием. Это доказывает метод анализа, а не какое-либо реальное поведение AD9361/AD9363.
Для реальной записи:
python blocks/block_06_rf_frontend_and_ad9363/python/lab_6_10_agc_phase_transition_analysis.py \
measurements/agc_001.ci16 --metadata measurements/agc_001.json \
--output measurements/agc_001_analysis.json
Metadata sidecar следует templates/gain_transition_capture_metadata.template.json: формат/частота дискретизации и список gain_transitions с значениями sample_index (плюс режим gain-control и настройки для отчёта). Каждый указанный переход анализируется независимо.
Процедура¶
- Baseline с фиксированным RX gain. Воспроизвести существующий двухплатный кабельный QPSK-канал (или более простой tone/loopback стенд). Записать RX gain, затухание, RSSI/dBFS, CFO, EVM и BER, сохранить эталонную IQ-запись без переходов gain.
- Включить AGC AD9361/AD9363. Задокументировать выбранный режим gain-control и соответствующие регистры/
iio_attr. Применить контролируемые изменения входного уровня цифровым или фиксированным аттенюатором, чтобы вызвать переходы через области gain-table/состояния LNA, где это практично. - Записать переход. Сохранить сырой complex IQ до, во время и после каждого изменения gain, с достаточным числом отсчётов с обеих сторон для подгонки CFO (
--fit-window, по умолчанию 256 отсчётов). Записать реальныйsample_indexкаждого перехода в metadata. - Запустить инструмент анализа на реальной записи и зафиксировать его
amplitude_step_db,phase_discontinuity_degиrecovery_samplesпо каждому переходу: не оценивать их на глаз по графику. - Оценить влияние на модем. EVM/BER/PER вокруг перехода, потеря/повторный захват frame-sync, если он происходит, сравнение с baseline на фиксированном gain.
Отчёт¶
Линейная оценка CFO применима к тону или IQ после удаления известной символьной
модуляции. Фаза сырого QPSK для такой оценки непригодна. recovery_samples: начало серии из 16 отсчётов с ошибкой менее 0,15 рад относительно тренда до
события; null означает отсутствие такой серии в окне поиска. Постоянный скачок
не считается восстановлением. Это возврат фазы сигнала, а не время захвата
carrier loop: последнее измеряется отдельно на модеме. Входной файл получает
статус unverified-capture-analysis до проверки происхождения записи.
Использовать templates/agc_phase_transition_report.template.md. Среди прочего требуются: точные настройки gain-control, sweep входного уровня/затухания, ссылка на сырую/воспроизводимую IQ-запись, обязательные графики (gain-state/уровень от времени, ошибка фазы от времени с наложенным подогнанным трендом CFO, constellation до/во время/после), явное утверждение о том, детерминированно ли наблюдаемое поведение фазы, зависит ли оно от состояния или варьируется между повторами.
Что эта лабораторная не заявляет¶
--self-test это синтетическое доказательство метода разделения (тренд CFO против остатка, связанного с переходом), а не аппаратный результат. Реальное доказательство фазового разрыва при AGC требует реального перехода состояния gain, записанного на аппаратуре AD9361/AD9363 в этом окружении такой аппаратуры нет, поэтому подобное доказательство здесь не заявляется. Лабораторная остаётся hardware-pending, пока реальная запись не проанализирована и не оформлена через шаблон выше.