пятница, 12 февраля 2016 г.

Работа с GFSK в GnuRadio

Все ,что я писал о FSK, справедливо и для GFSK, за исключением того, что переход от одной частоты () к другой ( ) происходит не резко, а постепенно. Это достигается пропусканием исходной битовой последовательности через ФНЧ Гауса. Кроме того в блоке GFSK_mod, в отличии от CPFSK_mod, параметры модуляции задаются немного по другому.

Теория


Математика описана много где, мне понравилось тут http://www.dsplib.ru/content/gmsk/gmsk.html, написано для GMSK, но многое верно и для GFSK.
Суть такова, что при пропускании исходной последовательности нулей и единиц через фильтр Гауса из нее отфильтровывается высокочастотная составляющая и резкие фронты сглаживаются.  Получившийся после этого сигнал частотно модулируют, как было описано для FSK, и получают GFSK.
Это позволяет уменьшить ширину спектра входного сигнала (те сиськи из статьи про FSK) и использовать индекс модуляции меньше 2-х.

Практика

Для получения GFSK в GnuRadio я использую вот такой flowgraf:

Рис.1. Flowgraf для получения GFSK
В отличии от CPFSK здесь нет необходимости нарезать передаваемые байты на отдельные биты. Биторезка встроена в  GFSK Mod, однако, при этом не следует забывать, что выходной битрейт будет равен (байт_в_сек * 8_бит_в_байте * отсчетов_на_бит).
В остальном все также, в качестве источника используется либо генератор случайных байт, либо фиксированный вектор. Throttle блок обеспечивает привязку графа к реальному времени. Модулятор  модулирует, FFT - показывает спектр получившегося сигнала, Quadrature Demod показывает на осциллографе мгновенную частоту сигнала.
На выходной сигнал влияют три параметра.
  1. Параметр BT фильтра Гауса, определяющий, так сказать, силу сглаживания. По умолчанию BT=0.35.
  2. Количество отсчетов на один бит или Sample_per_symbol или
  3. Чувствительность или Sensitivity, задающая максимальную частоту девиации.

Давайте разберемся, как выглядит влияние этих параметров на выходной GFSK сигнал.

Частотная манипуляция

Если подать GFSK сигнал на вход блока Quadrature_demod, то на выходе получится примерно вот такая картина.
Рис.2. Изменение мгновенной частоты в зависимости от передаваемых данных.
Напомню, что Quadrature_demod выдает на осциллограф мгновенную частоту квадратурного сигнала, вычисляя разницу аргументов комплексных чисел, подаваемых на вход.
Как можно видеть, при GFSK модуляции, как и при FSK, передаваемые 0 и 1 кодируются изменением частоты, однако, в отличии от FSK, прямоугольные фронты сглажены и частота плавно меняется  от  до .

Параметр BT

Сглаживание фронтов зависит от параметра BT.
Рис.3. Изменение частоты GFSK сигнала в зависимости от параметра BT
Еще раз приведу ссылку на статью с толковым описанием функции фильтра Гауса http://www.dsplib.ru/content/gmsk/gmsk.html.
Чем больше BT, тем меньше сглаживание. При BT=1 сглаживание отсутствует и GFSK превращается в FSK. При BT<0.3 становится сложно различать 0 и 1. На практике, как правило, используют BT=0.35.
В частотной области, увеличение или уменьшение BT выглядит как расширение или сужение спектра сигнала вне основной полосы .
Рис.4. Спектр GFSK сигнала при различных значениях параметра BT

Чувствительность Sensitivity

Этот параметр задает частоту девиации. При этом следует помнить, что речь идет о нормированной частоте, поэтому задается она в радианах. Вот график мгновенной частоты, там хорошо это видно:
Рис.5. Частота девиации определяется параметром Sensitivity
В частотной области частота девиации определяет ширину основной полосы GFSK сигнала.

Рис.6. Спектр GFSK сигнала при различных значениях Sensitivity
Кстати, небольшой лайфхак. Блок FFT_sink при градуировки оси частот опирается на параметр Sample_Rate. Если указать его не 8 МГц, а 6.28 МГц, то координатная сетка по частотам в МГц (Frequency) будет соответствовать нормированным частотам в радианах.

Количество отсчетов на один бит "Samples per Symbol"

Количество отсчетов на бит можно увидеть с помощью блока Quadrature_demod, подключив на выход блока осциллограф и переключив его в режим отображения точек.
Рис.7. Каждый бит кодируется 8-ю отсчетами.

Рис.8. Samples_per_symbol=4. Переходы от одной частоты к другой уже не такие плавные. 

Рис.9. Переход от передачи 1 к передачи 0 происходит за 16 шагов. 
В частотной области изменение Samples_per_symbol влияет на GFSK сигнал также, как и на CPFSK

Рис.10. Спектр GFSK сигнала при различной скорости передачи.
При уменьшении  ширина основных лепестков на частотах иувеличивается. При этом увеличиваются и боковые лепестки за пределами основной полосы сигнала, что расширяет спектр при неизменном параметре BT.

Далее.

Теперь, разобравшись с параметрами GFSK , можно пробовать демодулировать реальный GFSK сигнал. Напишу об этом в следующей статье.


2 комментария:

  1. Спвсибо!!!
    Огромное спасибо!!!!
    Поиск в интернете по
    'gfsk как это работает'
    'Что такое gfsk'
    'Gfsk примеры расчётов' ничего путного не дало.

    А вам спасибо!!! Вы всё объяснили т разжевали. С картинками:)

    Чтоб спасибо тебе сказать, аж аккаунт хухла завёл!:)

    ОтветитьУдалить
  2. Betting on 1xbet korean is a hassle to solve - Legalbet.co.kr
    There is no way to find all the 카지노사이트 information on 메리트카지노 1xbet korean. Betting on 1xbet korean is a hassle 1xbet korean to solve, but you are already there.

    ОтветитьУдалить