Работаем с сигналами. Часть 3-я.

Рассмотрим вопрос получения более менее точного значения тактовой частоты манипуляции. Не смотря на то, что в общем то, в подавляющем большинстве случаев это не сильно сложно, тем не менее встречаются моменты когда это очень даже и не просто. Сразу отмечу одну характерную ошибку, путают собственно скорость манипуляции и скорость передачи данных, это совершенно разные вещи, если обратили внимание, на этом сайте в описании сигналов, используется понятие именно скорости манипуляции, как однозначной характеристики, скорость передачи в bps, в отличии от скорости манипуляции, является величиной не однозначной и зависит от многих факторов. С некоторым сожалением наблюдаю подобную путаницу, на многих, в общем то достойных сайтах, не редкость увидеть такое: PSK-8, 2400 bd, кхм, что сразу вызывает вопросы.

Наиболее точно измерить частоту можно спектроанализатором, в идеальном случае это будет одна спектральная линия, реально эта линия имеет некоторую толщину, что в прочем позволяет по максимуму амплитуды точно считать значение, единственная проблема которая мешает широко использовать этот метод, это длинна выборки, для точности в один герц, необходима выборка в одну секунду, что не всегда возможно. Рассмотрим этот метод, тем более, что к нему будет сводиться подавляющее большинство случаев на практике. Что бы что-то мерить, это что-то нужно получить. Тактовая частота манипуляции, в основном, получается путем детектирования сигнала, получением его огибающей, это универсальный метод, отлично работающий на FSK, PSK и QAM сигналах, и плохо работающий или не работающий совсем на MFSK и OFDM.

Начнем с простого. Три сигнала -1- -2- -3-. Спектр у них такой.




После выделения огибающей(см. первую часть) получаем следующий вид:



Сразу бросается в глаза, что на первом сигнале что-то не наблюдается явно ни каких тактовых частот, на остальных, не заметить их просто не возможно. На самом деле тактовая есть и на первом, но она не так явно выражена. Давайте на этом задержимся. Две первые части опубликованые ранее, очень надеюсь, научили не просто смотреть на экран, а как минимум задумываться над тем что отображено. Так вот, в чем может быть причина такой разницы? Если посмотреть на сигналы, видно что два последних "обрезаны" почти точно по ширине занимаемого спектра, а вот первый содержит значительную долю постороннего шума, не известно действительно ли причина в этом, но проверить это просто необходимо. Проверяем, выделяем сигнал, не пишу как это делается, так как в первых частях уже было рекомендовано освоиться с простейшими операциями. Вот что получаем.



В принципе очевидно, для получения тактовой частоты манипуляции в наиболее четком виде, необходимо устранить все шумы к сигналу отношения не имеющие, то есть попросту отфильтровать сигнал от шума. Инструмент для это в наличии имеется, просто выделяем маркерами частоты спектр сигнала прихватив герц по 100-200 по краям для надежности и кликаем Select.
Отлично. Видны спектральные линии, задача измерить их с максимальной точностью, как? В принципе имеется как минумум три способа измерить тактовую частоту. Рассмотрим каждый по очереди. Самый очевидный и не правильный, измерение маркером частоты прямо на спектре, отвергается как весьма приблизительный, на причинах останавливаться не буду они описаны в хелпе программы.
Первый надежный инструмент какой у нас имеется, это фазовый вьювер, одной из функций которого является отображение графического спектра с высоким разрешением. Попробуем. Выделяем маркерами времени участок, не надо мелочиться желательно не менее секунды длительностью, с наиболее ярковыраженной линией тактовой частоты и вызываем модуль фазового вьювера.



Нас не интересует, все что относится к отображению на фазовой плоскости сейчас, по этому рассмотрим окно в котором отображен спектр. Несколько слов об информационных окошках на форме, MinF - отображает значение частоты у левой границы окна, MaxF - отображает значение частоты у правой границы окна, то есть собственно диапазон частот который виден в текущий момент, слайдер перемещает окно по спектру, для пользователя это выглядит как перемещение спектра внутри окна. Scale - задает масштаб отображения в окне, 1/1 в одном пикселе одно измеренное значение, 1/2 - два и т.д. Естественно максимально точно можно измерить значения при отношении 1/1, потому что при других, уже происходит как и усреднение, так и потеря точности в принципе. Первые от нуля 20 герц не отображаются вообще(заблокирован вывод) цифра 1, связано с тем, что после детектирования постоянная составляющая имеет максимальный уровень, на момент написания я просто заблокировал вывод самй шумной части, что бы не мешала, в качестве временной меры, но это так и осталось, проблема решаема, просто руки пока не дошли до нее, соответственно нельзя наблюдать тактовую ниже 21 герца, не велика потеря, хотя не очень хорошо. Цифра 2, сама линия, которая имеет максимальную амплитуду и которая нас интересует. Сразу говорю, вся остальная часть спектра нормирована по отношению к максимальной компоненте, то есть не логарифмическое представление амплитуд, а линейное нормированое отношение к масимальной. Цифра 3, это вторая гармоника частоты манипуляции, в некоторых тяжелых случаях именно по гармоникам удается определить тактовую, так что это очень даже важная компонента, между соседними гармониками разнос точно соответствует скорости манипуляции, запомните это. Ну и сами маркеры, которыми все и измеряется в этом окне и разнос и точные значения. Измереноое значение частоты манипуляции для первого сигнала, а именно он отображен на рисунке, равно 300.78 или 301.76 герц, точно таким же величинам соответствует и разнос между гармониками, почему два значения? Потому что линия имеет толщину в два пикселя выбирайте какая нравится, необходимая точность так или иначе получена, а другого и не требуется, это не прецезионный измеритель, а анализатор. Открою страшную тайну, на записях все измеренные частоты условно точные, потому что нет ни каких гарантий, что сигнал дискретизировался с точностью атомного стандарта частоты. ;) Намекаю, ни кто, и ни что не запрещает, предварительно отфильтровать тактовую частоту для ее измерений, но думаю это и так понятно.

Второй метод, это непосредственное измерение частоты манипуляции, для этого метода обязательным является использование FSK демодулятора, в связи с чем он не пригоден для PSK сигналов, зато подходит для FSK и MFSK. Надо сказать высокие скорости за 200-300 Гц определяются первым способом относительно легко, вот с низкими скоростями как правило проблемы, связано с тем, что большое влияние оказывает низкочастотный шум, кроме того справедливости ради надо отметить, самый точный способ это уже рассмотренный, все остальные имеют пониженную точность, в силу того что измеряют практически мгновенную частоту манипуляции за относительно короткий момент времени, но в ряде случаев это позволяет существенно сузить границы поиска первым методом, подход как всегда комплексный, используется все, что может так или иначе картину детализировать как можно точнее. Рассмотрим MFSK сигнал.

Выделив его спектр маркерами частоты, и взяв чуть больше герц на 200 по краям, кликаем на FSK демодулятор, в появившемся новом окне по правой кнопке мыши вызываем вьювер формы сигнала. Рассмотрим его чуть детальнее.



LPF - фильтр низких частот, необходим для сглаживания шума который сейчас хорошо виден на форме сигнала, цифра задает частоту среза, частота среза не должна быть существенно меньше чем скорость манипуляции, единственная кнопка под слайдером как раз и запускает процесс фильтрации, результат в этом же окне, то есть отката назад нет, по этому прикидочно нужно определить скорость манипуляции, чуть подальше к этому вернемся. Кнопки с зелеными стрелками делают стандартные вещи, масштабируют график по осям. Рабочими маркерами в этом окне являются маркеры времени, маркеры амплитуды реально ничего кроме того что их можно перемещать не делают, у меня была мысль отображать амплитуду, но честно говоря она ни о чем ровным счетом не говорит, сигнал перед демодуляцией проходит амплитудный ограничитель(шум всегда максимальный), частотная характеристика демодулятора далека от линейной и толк в амплитуде просто ни какой, а для прикола ее показывать меня не устраивает. Прикинем какую частоту среза выставить для ФНЧ. Маркерами времени выделим самый корткий импульс и посмотрим значение Speed, получается порядка 34 герц, поскольку ниже 45 герц срез не выставить, оставляем 50 и кликаем на кнопку фильтрации, получаем примерно это:



Теперь задача найти на кривой напряжения манипуляции нечто напоминающее синусоиду пусть и в грубой форме, после чего выделить этот участок маркерами времени и кликнуть прямо в окошке где написано 0 Hz, в зависимости от скорости компьютера маскимум через 4 секунды в этом же окошке появится значение самой частоты между маркерами времени и пересчитаное в скорость манипуляции удвоенное, или будет предупреждение с примерным временем расчета, если оно не превышает 10-15 секунд, кликайте Yes, если больше, уменьшайте фрагмент между маркерами времени. В принципе достаточно вообще полпериода, но это будет мгновенная частота и по этому очень не точная, желательно найти участок с возможно большим количеством периодов, тогда это будет значительно ближе к средней частоте манпуляции. Если частота получается таким способом не очень точная, почему нельзя ограничится измерением самого короткого периода маркерами времени? Дело в том, что исключается субъективизм, сдвиг на один пиксел при прямом измерении дает большую погрешность, софт меряет то что видит, он не строит ни каких предположений и показывает то что есть между маркерами, вот и все. А выводы делать человеку, будет ли он их делать по одному измерению или подвигает маркеры чуть чуть и проведет серию, это уж ему решать.



Ну и третий наименее точный и максимально субъективный метод, это непосредственное измерение по сонограмме, пренебрегать им нельзя, он позволяет грубо оценить границы предполагаемой частоты манипуляции, что существенно облегчает задачу в дальнейшем, и кроме того он помогает делать эффектные картинки, когда расстояние между маркерами почти соответствует реальной тактовой частоте. ;)

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



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


Что касается PSK, то низкие скорости как правило встречаются в OFDM сигналах, когда проблема и сам канал выделить для анализа, в классических многоканалках или отдельных сигналах даже скорости под 30 Гц манипуляции честно говоря трудностей особых не вызывают, через огибающую или через узкополосную фильтрацию относительно легко получается точное значение частоты, в силу того что у PSK сигналов, выделение тактовой через детектирование происходит существенно лучше чем у FSK.

Остался еще один вопрос, это определение точного разноса и количества частот. Если частот две, четыре или там десять, то количество определяется относительно легко, если их тридцать или сорок то это уже проблема, такая же проблема и определение точного разноса, не зависимо от количества частот, по спектрограмме это очень большая погрешность, и не поможет тут и спектр высокого разрешения, им хорошо определять конкретные явные/выделенные частоты, мог бы тут очень помочь частотный детектор, однако определить точный разнос(количество можно) с его помощью проблемно, высоколинейный частотный детектор на звуковые частоты не так то просто и сделать, по крайней мере я на этом сильно застрял, и пришлось искать альтернативные пути. Есть такой инструмент AOF(аппроксимация одной частотой), не могу сказать, что работа его вызывает чувство удовлетворения, достаточно спорно он реализован, но это единственная вещь которая позволяет определить как точный разнос так и количество несущих, разумеется не всегда, а когда это возможно, а возможно это на всех FSK, MFSK сигналах приемлимого качества, фактически это аналог частотного детектора, теоретически имеющий абсолютную линейность и безынерционность, на практике, линейность очень высокая, инерционность присутствует всегда и зависит от длинны выбоки, и все само собой зависит от качества сигнала. Условия вызова модуля AOF описаны в первой части, по этому сразу перейдем к делу. Возьмем к примеру Crowd-36. Выделив все нужное маркерами согласно требований и кликнув на вызов модуля AOF получим примерно следующее:



Рассмотрим окно подробнее, в верхней части слева направо, Samples - количество отсчетов сигнала по которым будет вычисляться частота, по умолчанию 1/1000 частоты дискретизации. Step - шаг в отсчетах, с каким будут браться выборки длинны Samples, по умолчанию 1, MinF, MaxF стандартные окна отображающие нижнюю и верхнюю частотные границы отображенного в окне, X_pix - расстояние между маркерами времени в пикселях экрана, зачем это нужно чуть позже. Sum - режим отображения, или график или гистограмма, сумма всех попаданий на конкретную частоту, выводится в виде линий. В низу, стандартная "лупа" и кнопка с "пальцем" собственно сам запуск обсчета. Запустив обсчет, увидим как не быстро(зависит от мощности компьютера) рисуется сама кривая частотного распределения, для начала нужно получить более менее четкие границы посылок, как только что-то похожее отрисуется, процесс останавливаем, и маркерами времени смотрим сколько пикселей(а если Step=1, то и отсчетов) длится посылка, в этом примере порядка 200 отсчетов. Значит если взять Samples примерно равным одной трети, то есть 50-70 отсчетов, то даже если мы возьмем Step = 70, то по крайней мере на одной посылке программа проведет три измерения, что резко увеличит скорость, но понизит точность во времени, по этому особо размахиваться не будем, а возьмем скромные значения, Samples=50, Step=20. И снова запустим процесс, теперь он пойдет значительно быстрее, да и линии будут почище, за счет усреднения по 50 семплам. Быстрее то процесс пойдет быстрее, но не настолько как хотелось бы, так что вариантов два или терпеливо ждем когда обсчитается весь выделенный участок(обозначено как арка между маркерами времени, то есть этот кусок сигнала передается в окно AOF), или прерываем процесс в надежде, что данных достаточно. Теперь если клинкуть по чекбоксу Sum, отрисуется гистограмма, по которой легко посчитать и частоты и разнос, чем больше окно или больше увеличение "лупой" тем точнее можно все измерить, но тем больше будет размазыватся конкретная частотная линия, тут одно из двух или проводиме еще один цикл, взяв отрезок сигнала побольше, или масштабируем размер окна и увеличение так, что бы можно было быть уверенным в результатах измерений и их можно было провести. Примерно так должно все получится:




Выборка меньше 6 семплов не возможна, это значит разрешающая способность этого модуля по времени(инерционность) при шаге = 1, примерно равна Fd/6, что для частоты дискретизации 11025 составляет примерно 1800 Гц, то есть, если манипуляция сигнала который исследуется, больше 1800 Гц, переходы и сами посылки будут искажены, это явление есть, но мы говорим о посылках с маскимальной частотой манипуляции, если в сигнале будут более длительные посылки, а они есть всегда, то они отрисуются красиво. На многочастотных сигналах скорости редко превышают 600 Гц, так что особых проблем нет, на FSK-2 при высоких скоростях проблемы есть, но реально измеряется на хороших сигналах легко до 2400 Гц тактовой. Значительно более зависим этот метод(ну не только он справедливости ради) от качества сигнала, шум "разбалтывает" точное значение частоты и в место одной линии рисуется полоса, выход, или увеличивать длинну выборки, тогда за счет усреднения, влияние шума уменьшается или довольствоваться тем что есть. На самом деле метод обладает единственным недостатком, очень большие расчеты и как следствие маленькая скорость, если бы не это, то это был бы идеальный ЧМ детектор для звуковых частот, линейность которую он обеспечивает, вряд ли можно получить в таком диапазоне скоростей, практически от 0 до примерно 1200-1600 Гц без всяких ухищрений по линеаризации, в принципе верхний потолок, ограничивается частотой дискретизации и качеством сигнала. Сфера использования этого модуля(как в прочем и всей программы) ограничивается фантазией пользователя, легко с его помощью к примеру замерить точные параметры чирпа и т.д. Тут только практика и навыки, четкое понимание чего можно сделать, а чего нельзя. Нельзя к примеру пытаться измерить многотональные сигналы, то есть те, где два или более тона идут одновременно. Хочу упредить один вопрос, типа вот такая штука(пусть и медленная), а как же работают ЧМ детекторы на основе фильтров или там ФАПЧ в радиостанциях и т.д. и т.п? Ведь послушать, так ерунда у них полная должна быть. Конечно все немного тоньше, обычные ЧМ детектроы отлично работают, а как же иначе, на высоких частотах, когда несущие частоты измеряются мегагерцами или сотнями килогерц, а частоты манипуляции максимум деcятками килогерц, все отлично и высоколинейно, ЧМ детекторы с ФАПЧ(и другие) рулят превосходно, а вот на звуковых частотах, когда частота манипуляции к примеру 800 Гц, а несущие 400 и 1200, с линейностью проблемы, если для принятия решений 0 или 1 она особо и не нужна, то для измерений и анализа она очень важна. Пожалуй на этом и закончим третий раздел, все что касается FSK и MFSK в общем то изложено, дело за малым, за практикой и опытом. Дальше пройдемся по PSK сигналам с учетом, приобретенного опыта, не просто же читаете, наверное что-то и делаете? ;) getQuotation();






Рекомендуемый контент




Copyright © 2010-2017 housea.ru. Контакты: info@housea.ru При использовании материалов веб-сайта Домашнее Радио, гиперссылка на источник обязательна.