Лабораторная 6.3 — Настройки AD9363 и iio_attr¶
Цель¶
Научиться фиксировать параметры AD9363 через IIO/iio_attr так, чтобы RF-эксперимент можно было воспроизвести позднее.
Что выполняется¶
В работе студент:
- находит доступные IIO-устройства;
- просматривает атрибуты PHY и каналов;
- задаёт LO frequency, sample rate и RF bandwidth;
- фиксирует gain mode и hardware gain;
- оформляет настройки в 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 | |
| Внешнее ослабление | |
| Тип сигнала | |
| Ожидаемое смещение в основной полосе |
Безопасная процедура настройки¶
- Подключите аттенюатор до включения TX.
- Используйте низкий уровень TX / большое ослабление TX.
- Используйте ручное усиление RX для воспроизводимости.
- Задайте частоты LO.
- Задайте частоты дискретизации.
- Задайте RF-полосы.
- Сформируйте одиночный тон низкого уровня.
- Посмотрите на спектр в поисках перегрузки.
- Сохраните настройки и IQ-метаданные.
- Только после этого переходите к экспериментам с модуляцией.
Пример журнала сессии¶
# Обнаружить устройства
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до любой записи, иначе две записи одного сигнала нельзя будет сравнить.
Упражнения¶
voltage0существует уad9361-phyи как входной, и как выходной канал, с разнымиhardwaregain. Посмотрите справкуiio_attr: как заставить команду обратиться только к RX- или только к TX-каналу и к какому каналу обращается пример сессии выше?- Запишите минимальную последовательность записей атрибутов, которая переводит это состояние покоя в настройку RX из Лабораторной 6.1 (915 МГц, 2,4 MS/s, 2 МГц, ручное усиление). Какие из них должны идти раньше других?
- Какие атрибуты и в каком порядке нужно записать, чтобы TX действительно излучал, и какие нужно вернуть после, чтобы вернуться в это безопасное состояние?
Ответы (проверены запуском скрипта лабораторной)
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.- Гетеродин RX
altvoltage0 frequency 915000000;-i voltage0 sampling_frequency 2400000;-i voltage0 rf_bandwidth 2000000;-i voltage0 gain_control_mode manual;-i voltage0 hardwaregain <усиление>. Частота дискретизации до полосы (драйвер может перепланировать фильтры при смене частоты, поэтому полосу задают последней), а режим усиления должен статьmanualдо записи усиления, иначе усилением управляет АРУ и перезаписывает значение. - Чтобы излучать: гетеродин 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-конфигурацию, потому что ______.