Перейти к содержанию

Лабораторная 6.3 — Настройки AD9363 и iio_attr

Цель

Научиться фиксировать параметры AD9363 через IIO/iio_attr так, чтобы RF-эксперимент можно было воспроизвести позднее.

Что выполняется

В работе студент:

  1. находит доступные IIO-устройства;
  2. просматривает атрибуты PHY и каналов;
  3. задаёт LO frequency, sample rate и RF bandwidth;
  4. фиксирует gain mode и hardware gain;
  5. оформляет настройки в metadata/checklist.

Результат

После выполнения работы должны быть получены:

  • список используемых IIO-устройств;
  • набор команд iio_attr;
  • таблица настроек AD9363;
  • пример metadata для RF-захвата;
  • вывод о воспроизводимости эксперимента.

Что приложить к отчёту

  • вывод discovery-команд;
  • частоты LO;
  • sample rate и RF bandwidth;
  • gain settings;
  • ссылку на metadata JSON;
  • инженерный вывод.

Подробная техническая часть

Инженерный контекст

В реальном SDR-эксперименте наблюдаемый сигнал зависит не только от DSP-кода. Он зависит и от настроек RF-фронтенда:

  • частота LO;
  • RF-полоса;
  • частота дискретизации;
  • режим усиления;
  • аппаратное усиление;
  • включённые каналы;
  • состояние аналоговых фильтров;
  • внешнее ослабление;
  • поведение AGC/ручного усиления.

Если этих настроек нет, IQ-запись невоспроизводима.

Типичные имена IIO-устройств

Точные имена зависят от образа платы и конфигурации Linux/IIO. Часто встречаются:

ad9361-phy
cf-ad9361-lpc
cf-ad9361-dds-core-lpc

Некоторые платы показывают трансивер AD9363 под IIO-именем, совместимым с ad9361-phy. Всегда проверяйте, какие устройства доступны в вашей системе.

Команды обнаружения

Список IIO-устройств:

iio_info -s

Атрибуты устройства:

iio_attr -d ad9361-phy

Атрибуты каналов:

iio_attr -c ad9361-phy

Один канал:

iio_attr -c ad9361-phy voltage0

Python-проба на стороне хоста

Для воспроизводимой проверки на стороне хоста в репозитории есть:

python blocks/block_06_rf_frontend_and_ad9363/python/lab_6_3_probe_iio_context.py \
  --uri ip:192.168.40.1 \
  --json-out docs/assets/lab63_zynq_iio_probe.json

Скрипт открывает удалённый контекст IIO, перечисляет устройства и каналы и печатает компактную сводку AD9361 с RX/TX LO, полосой, частотой дискретизации и настройками усиления. В Windows он также пробует стандартный путь установки IIO Oscilloscope для libiio.dll.

Типичные параметры RX

Назначение Пример команды Примечания
Частота LO RX iio_attr -c ad9361-phy altvoltage0 frequency 915000000 имя канала может отличаться
RF-полоса RX iio_attr -c ad9361-phy voltage0 rf_bandwidth 2000000 Гц
Частота дискретизации RX iio_attr -c ad9361-phy voltage0 sampling_frequency 2400000 Гц
Режим управления усилением RX iio_attr -c ad9361-phy voltage0 gain_control_mode manual для измерений предпочтителен manual
Аппаратное усиление RX iio_attr -c ad9361-phy voltage0 hardwaregain 10 дБ, диапазон зависит от железа

Типичные параметры TX

Назначение Пример команды Примечания
Частота LO TX iio_attr -c ad9361-phy altvoltage1 frequency 915000000 имя канала может отличаться
RF-полоса TX iio_attr -c ad9361-phy voltage0 rf_bandwidth 2000000 имена выходных каналов могут отличаться
Частота дискретизации TX iio_attr -c ad9361-phy voltage0 sampling_frequency 2400000 проверьте устройство/канал TX
Ослабление / усиление TX iio_attr -c ad9361-phy voltage0 hardwaregain -20 знак/диапазон зависят от платы

Имена, зависящие от платы

Точные имена каналов для LO RX/TX и каналов voltage могут отличаться. Воспринимайте команды выше как шаблон чек-листа, а не как гарантированно универсальный набор команд.

Минимальный чек-лист конфигурации

Перед захватом или передачей зафиксируйте:

Поле Значение
Название платы
Образ Linux / прошивка
URI контекста IIO
Имя устройства PHY
Частота LO RX
Частота LO TX
Частота дискретизации RX
Частота дискретизации TX
RF-полоса RX
RF-полоса TX
Режим усиления RX
Аппаратное усиление RX
Ослабление/усиление TX
Внешнее ослабление
Тип сигнала
Ожидаемое смещение в основной полосе

Безопасная процедура настройки

  1. Подключите аттенюатор до включения TX.
  2. Используйте низкий уровень TX / большое ослабление TX.
  3. Используйте ручное усиление RX для воспроизводимости.
  4. Задайте частоты LO.
  5. Задайте частоты дискретизации.
  6. Задайте RF-полосы.
  7. Сформируйте одиночный тон низкого уровня.
  8. Посмотрите на спектр в поисках перегрузки.
  9. Сохраните настройки и IQ-метаданные.
  10. Только после этого переходите к экспериментам с модуляцией.

Пример журнала сессии

# Обнаружить устройства
iio_info -s

# Осмотреть PHY
iio_attr -d ad9361-phy

# Примеры центральных частот
iio_attr -c ad9361-phy altvoltage0 frequency 915000000
iio_attr -c ad9361-phy altvoltage1 frequency 915000000

# Примеры полосы и частоты дискретизации
iio_attr -c ad9361-phy voltage0 rf_bandwidth 2000000
iio_attr -c ad9361-phy voltage0 sampling_frequency 2400000

# Пример ручного усиления
iio_attr -c ad9361-phy voltage0 gain_control_mode manual
iio_attr -c ad9361-phy voltage0 hardwaregain 10

Чего ожидать (реальный зонд платы курса)

docs/assets/lab63_zynq_iio_probe_live.json это закоммиченный вывод lab_6_3_probe_iio_context.py для платы курса по адресу ip:192.168.40.1, снятый до какой-либо настройки лабораторной:

Атрибут (JSON зонда) Значение Смысл
hw_model FISH Ball PlutoSDR Rev.A (Z7020-AD9361) плата курса, стоковый Linux 5.15
устройства ad9361-phy, xadc, cf-ad9361-dds-core-lpc, cf-ad9361-lpc управление PHY, монитор температуры/напряжений на кристалле, TX DMA/DDS-ядро, RX DMA-ядро
altvoltage0 (RX LO) frequency 2 400 000 000 2,4 ГГц
altvoltage1 (TX LO) frequency / powerdown 2 400 000 000 / 1 TX LO выключен
voltage0 in: sampling_frequency / rf_bandwidth 30 720 000 / 18 000 000 30,72 MS/s, 18 МГц
voltage0 in: gain_control_mode / hardwaregain slow_attack / 71 дБ AGC на максимальном усилении: сигнала нет
voltage0 out: hardwaregain -89,75 дБ максимальное ослабление TX
RX / TX port A_BALANCED / A
  • Это безопасное состояние покоя, а не рабочее. TX на максимальном ослаблении, его LO выключен; RX на AGC. Каждый параметр из чек-листа выше нужно записать явно.
  • TX LO powerdown = 1: классический тихий отказ. При выключенном LO DDS или DMA могут работать, а усиление TX: меняться, но из антенны ничего не выходит. Именно на это наткнулся аппаратный запуск самого курса; Лабораторная 6.11 намеренно возвращает его в 1 в конце каждого прогона.
  • Показание AGC 71 дБ: не настройка для измерений. Переключитесь на manual до любой записи, иначе две записи одного сигнала нельзя будет сравнить.

Упражнения

  1. voltage0 существует у ad9361-phy и как входной, и как выходной канал, с разными hardwaregain. Посмотрите справку iio_attr: как заставить команду обратиться только к RX- или только к TX-каналу и к какому каналу обращается пример сессии выше?
  2. Запишите минимальную последовательность записей атрибутов, которая переводит это состояние покоя в настройку RX из Лабораторной 6.1 (915 МГц, 2,4 MS/s, 2 МГц, ручное усиление). Какие из них должны идти раньше других?
  3. Какие атрибуты и в каком порядке нужно записать, чтобы TX действительно излучал, и какие нужно вернуть после, чтобы вернуться в это безопасное состояние?
Ответы (проверены запуском скрипта лабораторной)
  1. iio_attr фильтрует каналы флагами -i (только входные) и -o (только выходные). Без них имя канала совпадает со всеми каналами с этим именем, входными и выходными, поэтому команды voltage0 в примере сессии адресуют и канал RX, и канал TX; hardwaregain 10 предназначен для RX, а ослабление TX +10 дБ: недопустимое значение. Пишите iio_attr -i -c ad9361-phy voltage0 hardwaregain 10 для RX и iio_attr -o -c ad9361-phy voltage0 hardwaregain -20 для TX.
  2. Гетеродин RX altvoltage0 frequency 915000000; -i voltage0 sampling_frequency 2400000; -i voltage0 rf_bandwidth 2000000; -i voltage0 gain_control_mode manual; -i voltage0 hardwaregain <усиление>. Частота дискретизации до полосы (драйвер может перепланировать фильтры при смене частоты, поэтому полосу задают последней), а режим усиления должен стать manual до записи усиления, иначе усилением управляет АРУ и перезаписывает значение.
  3. Чтобы излучать: гетеродин TX altvoltage1 frequency, altvoltage1 powerdown 0 (в исходном состоянии гетеродин выключен), -o voltage0 hardwaregain до нужного ослабления (начинайте с сильного, например −60 дБ, за внешним аттенюатором), затем запуск источника данных (DDS-тон или DMA). Чтобы вернуться в безопасное состояние: остановить источник, -o voltage0 hardwaregain -89.75, altvoltage1 powerdown 1. Забытый powerdown 0 это та самая тихая ошибка, описанная выше: всё выглядит настроенным, а из антенны ничего не выходит.

Что включить в отчёт (расширенный список)

  • точные использованные команды;
  • вывод команд или скриншоты;
  • частотный план из Lab 6.1;
  • план усиления из Lab 6.2;
  • файл IQ-метаданных;
  • скриншот спектра или сгенерированный FFT;
  • вывод о проверке на перегрузку.

Шаблон инженерного вывода

Фронтенд AD9363 был сконфигурирован с LO RX = ____ МГц, LO TX = ____ МГц,
частотой дискретизации RX = ____ МС/с, RF-полосой = ____ МГц и режимом усиления RX = ____.
Настройки записаны через iio_attr и связаны с файлом IQ-метаданных.
Наблюдаемый спектр подтверждает / не подтверждает ожидаемую RF-конфигурацию, потому что ______.