Комментарии 1
Спасибо за подробную статью и за труд по портированию кода на FMComms5 — материал интересный, особенно часть про калибровку межчиповой фазы.
Хотел бы поделиться мыслями и, возможно, услышать ваше мнение.
О главной решаемой задаче
Если правильно понимаю, основная проблема, которую решает 3-этапная калибровка — это вовсе не измерение фазы как таковое, а устранение статической, но случайной при каждом включении неоднозначности фазы LO между двумя кристаллами AD9361. Поскольку делители PLL на чипе B защёлкиваются с произвольной начальной фазой относительно чипа A, никакая обработка после АЦП эту неопределённость снять не может — она внесена до дискретизации. Отсюда и необходимость петли обратной связи через ВЧ-коммутатор: нужен известный сигнал, прошедший через оба тракта, чтобы развязать неизвестные. Это, на мой взгляд, ключевая идея, которую стоило бы вынести в статье ещё рельефнее — именно она объясняет, почему нельзя обойтись чисто цифровой коррекцией.
Альтернатива MUSIC: временной FFT по каналу
Для сценария из эксперимента (одиночный известный тон в безэховой камере) MUSIC выглядит несколько избыточным. Альтернативная схема:
По каждому каналу взять N отсчётов (скажем, 1024) и сделать FFT во временной области.
В бине, где сидит тон, прочитать комплексную амплитуду Z_k = A_k·exp(jφ_k) — это, по сути, согласованный фильтр на известный сигнал, дающий прирост ОСШ ~10·log₁₀(N) дБ (≈30 дБ для N=1024).
Сравнить фазы между соседними элементами решётки: ψ ≈ arg(Z_{k+1}/Z_k), и далее θ = arccos(ψ·λ/(2π·d)).
Получается тот же снимок x = [Z_1, …, Z_4], что подаётся на вход MUSIC, но без построения ковариационной матрицы и EVD.
Когда такая схема предпочтительнее
Один источник или небольшое число хорошо разнесённых по углу источников (разнос > λ/(N·d) ≈ 28° для 4 элементов на λ/2).
Известная форма сигнала (тон, пилот) — тогда согласованная фильтрация через FFT-бин выжимает максимум ОСШ.
Нет когерентной многолучёвости.
Для большинства демонстрационных сценариев и многих практических пеленгаторов этих условий достаточно.
Про прозрачность
Возможно, временной FFT даёт ещё и большую интерпретируемость: видно непосредственно комплексные амплитуды на каждом канале, легко диагностировать рассогласование усилений/фаз антенн, артефакты калибровки, помехи в соседних бинах. У MUSIC же псевдоспектр — производная величина, и при «кривой» калибровке он деградирует не всегда очевидным образом (что, кстати, в статье и видно по красным кривым на рис. 10).
Ресурсы ПЛИС
Здесь разница довольно существенная:
FFT по каналу: 4 параллельных FFT (или один с мультиплексированием) на 1024 точки — это хорошо изученное IP-ядро, ~O(N·log₂N) умножителей, конвейер фиксированной задержки, всё штатно ложится в DSP-блоки. После FFT — лёгкая арифметика на CORDIC для arg() и усреднение.
MUSIC: построение Cx размера N×N (умножение и аккумуляция комплексных матриц), затем EVD — а вот эрмитово EVD на ПЛИС это уже серьёзная история (Якоби, QR-итерации), с плавающей точкой или тщательным масштабированием fixed-point, плюс сканирование псевдоспектра по углам или поиск корней полинома для Root-MUSIC. На практике это почти всегда уносится на хост, что и видно из архитектуры gr-doa.
То есть FFT-схема реально реализуема целиком в ПЛИС в реальном времени, тогда как MUSIC требует либо мощного хоста, либо очень серьёзной работы по портированию EVD.
Резюме
MUSIC оправдан, когда нужна сверхразрешающая способность (источники ближе рэлеевского предела), неизвестно число источников или есть коррелированные сигналы. Для демонстрационной задачи статьи временной FFT по каналу + сравнение фаз дал бы, вероятно, не худший, а возможно и более точный результат — за счёт полного выигрыша обработки на тоне — при кратно меньших затратах на ПЛИС.
Калибровочная же часть (multichip sync + 3 этапа петли) — она от выбора алгоритма DoA не зависит и остаётся обязательной в любом случае. Это, пожалуй, самое ценное в статье.
Ещё раз спасибо за материал!

Фазовая синхронизация в системе FMComms5 от Analog Devices и оценка угла прихода сигнала