Это вторая статья из цикла статей про мои программы для цифровой обработки сигналов (ЦОС). В этой статье речь пойдет о четвертом этапе обработки сигнала который в первой статье я назвал как «Определение параметров выделенных из группового спектра стволов с точностью необходимой для правильной работы демодулятора».
Для определения параметров сигнала мной была разработана программа которая выполняет 3 основные задачи:
- Вычисление тактовой частоты
- Вычисление несущей частоты
- Вычисление вида модуляции
Все результаты полученные при анализе сигналов хранятся в базе данных. В базе данных также хранятся данные телеметрии работы демодулятора. Это очень удобно для проверки алгоритмов работы демодулятора. Например если вы внесете изменения в демодулятор, то вам захочется оценить как и на что они повлияли. Вы можете записать телеметрию для разных сигналов до изменений и после и сравнить их.
На рисунке 1 представлено главное окно программы. Окно разделено на 3 зоны:
- Древовидный список доступных для анализа файлов и стволов (10)
- Отображение свойств выбранного файла/ствола (11)
- Отображение спектра сигнала (12)
Рис. 1. Главное окно программы
Назначение кнопок:
(1) Добавление и удаление файла
(2) Ручное добавление ствола и удаление
(3) Запуск алгоритма автоматического выделения стволов.
(4) Вычисление тактовый частоты.
(5) Вычисление несущей частоты
(6) Запуск демодулятора для выбранного ствола
(7) Запуск демодулятора для всех стволов в выбранном файле
(8) Запуск демодулятора с сохранением телеметрии его работы
(9) Запуск анализа телеметрии работы демодулятора
Определение параметров сигнала расскажу на примере одного ствола. Для начала добавим новый файл. При добавлении файла необходимо указать тип файла и частоту дискретизации.
После добавления файла он появится в списке (10). Если его выбрать то справа (11) отобразятся его параметры, а снизу (12) его спектр.
Запускаем алгоритм выделения стволов (3). Найденные стволы (178 штук) добавляются в список дочерними элементами к файлу над которым производится анализ. Если в списке выбрать ствол то справа (11) отобразятся его параметры (предварительные/не точные, вид модуляции всегда ФМ-4), а снизу (12) спектр сфокусируется на выбранный ствол и изменится масштаб отображения.
Рис. 4. Спектр выделенного ствола
Для вычисления тактовой частоты сигнала нажимаем кнопку (4). После определения тактовой частоты выводится диалоговое окно с предложением сохранить новое значение тактовой в базу данных. Внизу (12) выводится спектр свертки сигнала. Тактовая частота определяется по пику на этом спектре. Спектр сфокусирован на вычисленном максимуме и изменен масштаб отображения. Красными линиями выделены границы в пределах которых вычислялся максимум. Эти границы определяются исходя из предварительных (грубых) результатов полученных при выделении стволов.
Рис. 5. Вычисление тактовой частоты сигнала
После вычисления тактовой частоты можно получить значение несущей частоты и вида модуляции. Для этого нажимаем на кнопку (5). После определения несущей и вида модуляции выводится диалоговое окно с предложением сохранить новые значения в базу данных. Внизу (12) выводится спектр сверток сигнала для определения вида модуляции ФМ-2, ФМ-4 и ФМ-8. Для каждого из видов модуляции проверяется получились ли при свертке «рога». Принимается решение по наименьшей кратности модуляции на которой появились «рога». Значение несущей частоты определяется по максимуму между «рогами».
Рис. 6. Вычисление несущей частоты сигнала и вида модуляции
Если увеличить область спектра помеченную подписью ФМ-4 вместе с красными границами то можно убедиться, что «рога» есть.
Рис. 7. Проверка наличия «рогов» при вычислении вида модуляции
После вычисления тактовой, несущей и вида модуляции можно запускать демодуляцию кнопкой (6). Демодулятор запустится для выделенного ствола с вычисленными параметрами сигнала которые выводятся справа (11).
Рис. 8. Демодуляция сигнала с вычисленными параметрами
Как вы уже поняли вид модуляции был определен не правильно. Вместо ФМ-4 у сигнала модуляция КАМ-16, но не стоит отчаиваться. Прошу обратить внимание, что демодулятор работает в режиме демодуляции КАМ-16 (в окне демодулятора выводится КАМ-16) не смотря на то, что ему была задана модуляция ФМ-4. Как так? Спросите вы 🙂 Просто в демодуляторе реализован алгоритм оценки типа модуляции до КАМ-64 который является более точным чем алгоритм основанный на свертках.
Свяжитесь со мной, есть предложение.