Детектор Tayloe и цифровая обработка сигналов #11 приложение для анализа квадратурных I/Q сигналов

Автор: | 07.02.2026

Продолжим осваивать цифровую обработку сигналов — ЦОС (DSP). Для дальнейших шагов написал приложение выполняющее анализ квадратурных сигналов I/Q, для понимания, что в реальности выходит с моего SDR стенда.

Основные возможности приложения:

  • захват I/Q потока от выбранного аудио устройства записи;
  • воспроизведение WAV файлов с записанным потоком I/Q;
  • вывод обработанного и демодулированного сигнала на выбранное аудио устройство воспроизведения;
  • выбор размера быстрого преобразования Фурье (FFT), для построения графиков водопада (WaterFall) и спектров;
  • выбор верхней границы графиков спектров и диапазона от верхней границы в dB;
  • выбор цветовой насыщенности водопада в dB;
  • инверсия сигналов I/Q;
  • коррекции сигналов I/Q;
  • применение цифрового фильтра для захватываемого диапазона частоты дискретизации Fs выбранного источника сигналов;
  • выбор ширины полосы пропускания для демодуляции;
  • выбор вида модуляции LSB/USB/AM/FM;
  • применение и настройка параметров автоматической регулировки усиления (AGC) и уровня громкости вывода звука;
  • окно водопада;
  • окно комплексного спектра I/Q с нулевой частотой в центре;
  • окна спектров Real I/Q сигналов;
  • окно осциллографа, для анализа сигналов I/Q во временной области.

Интерфейс и управление старался сделать интуитивно понятными. Частота дискретизации выбранного источника сигнала берется автоматически от самого источника, на картинке вверху выделено красным.

Для чего все это надо?! Например, мы получаем квадратурный I/Q сигнал от какого то SDR приемника, или генератора, сигнал не идеальный и имеет в себе постоянную составляющую DC, разбаланс амплитуд, и разбаланс фаз, мы же помним, что квадратурные сигналы должны быть сдвинуты по фазе ровно на 90°, смотрим

на графиках, кроме основного сигнала на частоте +1кГц от нуля, мы видим все последствия, пик на нулевой частоте это наличие постоянной составляющей DC, «зеркало» сигнала на частоте -1кГц — это результат амплитудного и фазового разбалансов. Переключаемся на вкладку осциллографа

здесь все косяки сигналов наглядно видно, значения разбалансов видно в текстах чекбоксов включения коррекций для сигналов, на картинке выше выделены красным. Коррекция постоянной составляющей автоматическая, амплитудная и фазовая коррекции ручные, чтобы видеть значения примененных коэффициентов в настраиваемых соответствующих полях, применим коррекции для сигналов

теперь у нас идеальный сигнал для дальнейшей обработки! Переключаемся на вкладку спектров

теперь с сигналом все замечательно и ни какой магии, это результат цифровой обработки сигналов во временном домене. Выделение необходимой полосы пропускания цифровым фильтром с последующей демодуляцией — эта обработка выполняется уже в частотном домене.

Что делает чекбокс Digital FIR LPF? При включении данной галки рассчитывается и применяется цифровой фильтр с конечной импульсной характеристикой — КИХ (FIR), с учетом частоты дискретизации источника сигнала, результат видно на картинке ниже

Тут стоит отметить, что если в сигнале есть так называемый алиасинг, то этот фильтр не поможет, потому, что наложение спектров уже есть в исходном сигнале, образоваться алиасинг может например от неправильно выполненной децимации сигнала.

Почему сигнал с SDR приемника не может быть сразу идеальным? Потому, что аналоговые компоненты и схемы не могут быть идеальными!

Выбор ширины полосы пропускания для демодуляции сигнала выполняется «на лету», наводим курсор мышки на соответствующее поле и колесиком мышки меняем ширину полосы

В правом верхнем углу окна комплексного спектра отображаются текущие параметры полосы пропускания, выбранный вид модуляции и якорная частота. Ниже отображаются пиковые значения сигнала в полосе пропускания в dB и по шкале S-metr.

  • Чекбокс Loop — включает/отключает зацикливание воспроизведения WAV файла.
  • Чекбокс Mute Audio Out — включает/отключает вывод звука.
  • Чекбокс Mouse Point Info — включает/отключает вывод значения частоты и уровня на графиках от положения курсора мышки.
  • Чекбокс AGC — включает отключает автоматическую регулировку усиления вывода звука, в полях выполняется настройка работы АРУ.
  • Поле Volume — отвечает за уровень громкости звука.

Перемещение индикатора полосы пропускания по графику комплексного спектра осуществляется либо колесом мышки, шаг 100 Гц, с зажатой кнопкой Ctrl на клавиатуре с шагом 500 Гц, либо кликом мышки по водопаду или комплексному спектру с точностью 100 Гц, с зажатой кнопкой Ctrl с точностью 1 кГц.

Сброс полей коррекции и ару на значения по умолчанию происходит двойным кликом мышкой по выбранному полю при зажатой клавише Ctrl.

Двойной клик на графиках спектров, за исключением водопада, открывает диалоговое окно выбора цвета графика.

Все основные установленные пользователем значения, включая выбранные устройства, размеры и положение окна приложения сохраняются в файле SDR_DEV_APP.ini, чтобы сбросить все настройки, достаточно удалить этот файл при закрытом приложении.

На вкладке осциллографа можно регулировать вертикальную и горизонтальные развертки, у вертикальной развертки есть чекбокс Auto, при установленной галке, графики строятся на 70% от высоты «дисплея» осциллографа. В области Trigger выполняется управление синхронизацией по триггеру от выбранного сигнала. Значения контролов управления на вкладке осциллографа не сохраняются.

В завершении исходный код класса цифровой обработки, который я применяю в данном приложении, я только учусь и то по умным книжкам и интернетам, если что-то не по ученому, то сорри!

Баги в приложении возможны, куда без них то! За обратную связь по багам, оставленным комментариям о работе приложения буду признателен!

Видео работы приложения.

Архив приложения, от 07-02-2026, установка не требуется, распаковать архив и заупустить EXE

Дальше уже буду реализовывать то, что получилось в данном приложении по коррекциям, фильтрации и демодуляции, уже на SDR стенде силами STM32H723, и пора уже выводить звук со стенда на ЦАП!

Продолжение следует…

73!

Детектор Tayloe и цифровая обработка сигналов #11 приложение для анализа квадратурных I/Q сигналов: 2 комментария

Добавить комментарий для Николай Отменить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *