PhViewer 2.0

цифровая обработка сигналов

Приведём пример использования программы PhViewer 2.0 для анализа реального файла.
Запись сигнала была взята с сайта Радиосканер. Поскольку исходный файл имеет формат ACM Waveform, то есть относится к файлам со сжатием, перед анализом он был преобразован к WAVE PCM. Для подобного преобразования подходит практически любой аудиоредактор, в данном случае был использован CoolEdit.

Быстрый анализ сигнала

В исходном файле данные представлены в реальной форме (mono). При открытии файла данные автоматически преобразуются к комплексной форме, что позволяет упростить расчёты и повысить наглядность.
После открытия файла видим следующее:
PhViewer 2.0 в картинках. Рис.1
Поскольку исследуемый файл изначально записан как реальный, центральная частота сигнала должна находится в районе 1700-1800 Гц. Это мы и видим в открытом файле. Всё говорит об этом: накопленный и пиковый спектр, дифференциальное фазовое созвездие, сонограмма и гистограмма фазовых переходов.
 
Спектр
 Спектр
Дифференциальное созвездие
Дифференциальное созвездие
Гистограмма переходов
 Гистограмма переходов
Сонограмма
Сонограмма 
 
По виду спектра сигнала делаем предположение о типе сигнала. Подобный спектр характерен для фазовых сигналов типа PSK, QAM, DQPSK. Измереная по сонограмме полоса сигнала находится в районе 2700 Гц.
На следующем этапе определяем скорость сигнала. Здесь всё банально и просто. Смотрим, что показывают модули Am Speed и Fr Speed. В первом практически ничего не видно, зато во втором наблюдаем следующую картину:
PhViewer 2.0 в картинках. Скорость по частотному детектору
 
На графике явно виден пик в районе 2400. Данная скорость характерна для многих PSK сигналов. А с учётом того, что в модуле Am Speed практически ничего нет, можно сделать предположение об фактическом отсутствии амплитудной модуляции, и как следствие данный сигнал никакого отношения к QAM"овским не имеет.
Зная уже значение скорости, мы можем выставить коэффициент децимации:
PhViewer 2.0 в картинках. Коэффициент децимации
 
Значение Offset устанавливается с учётом глазковой диаграммы.
Установив парамметры децимации, получаем следующее:
PhViewer 2.0 в картинках. Дифференциальное фазовое созвездие
На дифференциальном фазовом созвездии, пусть и не чётко, но видно 8 позиций.
 
PhViewer 2.0 в картинках. Гистограмма переходов
На гистограмме переходов так же видим 9 пиков, что характерно для PSK8.
Оба эти парамметра не зависят от реального положения сигнала и не требуют точной подстройки частоты. Таким образом путём нехитрых манипуляций, мы можем сказать с большой долей уверенности, что сигнал относится к группе PSK8, имеет скорость 2400 и ширину спектра порядка 2700 Гц.

Уточнение параметров сигнала

Попробуем пойти дальше и уточнить параметры сигнала. Включив MouseMeter (ctrl+M), и щёлкнум мышкой с зажатой клавишей CTRL в центр спектра, начинаем подстройку частоты сигнала.
PhViewer 2.0 в картинках. Подстройка спектра сигнала
 
Диференциальное созвездие и гистограмма переходов при этом изменятся и будут выглядеть так:
PhViewer 2.0 в картинках. Гистограмма переходов
Гистограмма переходов
Дифференциальное созвездие
Дифференциальное созвездие
Обратите внимание, что пик гистограммы теперь находится в районе нуля, а дифференциальное созвездие указывает на ноль градусов.
Воспользуемся методом возведения сигнала в степень. При возведении сигнала в квадрат, на спектре появляется палка.
PhViewer 2.0 в картинках. Квадрат спектра сигнала
 
Сдвигаем сигнал, ориентируюясь на эту палку:
PhViewer 2.0 в картинках. Квадрат спектра сигнала
 
Следующим этапом смотрим на модули отображения детекторов:
 
PhViewer 2.0 в картинках. Амплитудный детектор
Амплитудный детектор
 
PhViewer 2.0 в картинках. Частотный детектор
Частотный детектор
 
PhViewer 2.0 в картинках. Фазовый детектор
Фазовый детектор
 
Вид детекторов ещё раз подтверждает наличие фазовой модуляции. На фазовом созвездии видны наклонные линии, по которым мы можем точно подстроить частоту сигнала. Проделаем эту операцию.
PhViewer 2.0 в картинках. Точная подстройка сигнала
 
Обратите внимание, что чем меньше значение Step, тем выше точность подстройки, но при этом уменьшается скорость подстройки. Используйте кнопки Page Down и Page Up для увеличения размерности шага изменения параметра Shift в 10 раз, и стрелочки вниз и вверх для изменения с заданным шагом Step.
В итоге на фазовом детекторе будет следующая картина:
PhViewer 2.0 в картинках. Фазовый детектор
Это значит, что мы нашли центральную частоту сигнала: 1799,86 Гц. Теперь и на созвездиях чётко видно восемь фаз.
PhViewer 2.0 в картинках. Фазовые созвездия
 
Поскольку на фазовом детекторе чётко видны какие то блоки, имеет смысл обратить на них внимание и посмотреть подробнее.
 
PhViewer 2.0 в картинках. Программный SQUELCH
Воспользуемся возможностями шумоподавления, предоставляемыми модулем Squelch. В данном примере это не обязательно, но в ряде случаем данный модуль существенно упрощает жизнь. Для сравнения ниже представлены скриншоты фрагмента фазового детектора с шумоподавлением и без.
PhViewer 2.0 в картинках. Шумоподавитель выключен
Фазовый детектор. Шумоподавитель выключен.
PhViewer 2.0 в картинках. Шумоподавитель включён
Фазовый детектор. Шумоподавитель включён.
 
Разница очевидна. Кроме того, использование модуля SQUELCH даёт ещё ряд интересных возможностей.
Но вернёмся к рассматриваемому сигналу и измерим размер блока.
PhViewer 2.0 в картинках. Размер блока
Размер блока получился равным ~106 мс. При желании точность можно увеличить, измерив несколько блоков и поделив общее время на количество. В любом случае, мы имеем дело с сигналом, данные в котором передаются блоками по ~106 мс. Подобная структура характерна для сигналов стандарта Stanag-4285 (PSK8, 2400bd, размер блока 106,6 ms). Остаётся только как-то убедиться, что это действительно Stanag.
Из стандарта на Stanag-4285 мы знаем, что каждый блок имеет характерную преамбулу, повторяещуюся в каждом блоке. Для дальнейшей проверки нам понадобится сохранить значения детектора. Для этого в меню фазового детектора выбираем пункт сохранить и сохраняем данные как "Data for demodulator (*.dfd)".
PhViewer 2.0 в картинках. Сохранение данных для демодулятора

Работа с демодулятором.

Для дальнейшей работы нам понадобится универсальный демодулятор, идущий вместе с PhViewer 2.0 начиная с версии от 01.09.2011г. Данная программа на момент написания статьи находится в альфа версии, но для нашего случая её возможностей вполне хватит.
Запускаем DemViewer и открываем сохранённые на прошлом этапе данные для демодуляции.
PhViewer 2.0 в картинках. Работа с демодулятором
 
Видим продецимированный фазовый детектор с разрешением одна точка на посылку. Жмём на кнопку со стрелочками в верхнем правом углу и выставляем количество позиций 8.
PhViewer 2.0 в картинках. Работа с демодулятором
Автоматически диапозон значений будет разбит на 8 частей, и будет предложен вариант соответствующих им символьных значений. При желании значения по умолчанию можно изменить, прсто отредактировав таблицу. Но в большинстве случаев этого не требуется.
PhViewer 2.0 в картинках. Работа с демодулятором
Подбираем значение параметра Shift так, чтобы красные линии совпадали с центрами групп и жмём кнопку с треугольничком, направленным вниз.
PhViewer 2.0 в картинках. Работа с демодулятором
Итак, мы получили битовый поток. Выставляем параметр Length = 256 символов (длина блока Stanag). И видим структуру сигнала. Более наглядно то же самое показывает фотограмма.
PhViewer 2.0 в картинках. Работа с демодулятором
Из картинки следует, что конец данных повреждён, что произошло из-за нечёткой установки скорости сигнала / проблем при записи.
Попробуем найти стандартную для Stanag'а последовательность. Вводим преамбулу сигнала в строку поиска. Поскольку для PSK сигналов значение начальной фазы нам не известно, искомая преамбула простым поиском не обнаруживается. Но в арсенале DemViewer'а есть ещё три вида поиска (кнопки рядом со строкой поиска): дифференциальный, нечёткий и их комбинация. Воспользуемся последним, задав количество допустимых ошибок = 2.
PhViewer 2.0 в картинках. Работа с демодулятором
 
Как видим, данные действительно содержат нужную нам комбинацию, на основе чего можно сделать вывод, что данный сигнал действительно Stanag-4285.

Заключение

В данной статье показывается один из алгоритмов работы с программой PhViewer 2.0 на примере реальной записи сигнала Stanag-4285. Данный алгоритм не является единственным возможным, просто один из...
На практике часть действий можно опустить. Некоторые действия наоборот выполнить (фильтрацию, коррекцию многолучёвости). Но в целом, описанный подход может быть с успехом применён для анализа различных сигналов цифровой передачи данных.