Я пытаюсь демодулировать сигнал GFSK в течение нескольких месяцев, используя GNU Radio с USRP B210. К сожалению, я не нашел ни одной достойной книги на GNU Radio, и поэтому большинство моих ссылок основаны на некоторых случайных сайтах, включая официальную страницу GNU Radio.Демодуляция GFSK с фильтром Xlating в GNU Radio
Сигнал GFSK поступает из кубасата в лаборатории. В настоящий момент он передает тестовый сигнал «10101010 ......». Используемый индекс модуляции GFSK равен 0,6667, а скорость передачи данных - 9600 бит/с. В моем потоковом графике, как показано на диаграмме ниже, используется блок демонов GFSK, который, по-видимому, не имеет никакой документации, кроме исходного кода. Чувствительность установлена на уровне pi * modulation_index/samples_per_symbol. Я записал несколько файлов, выбранных как 10x 20x 40x 80x и 160x скорость передачи (9600). В обоих этих файлах мне удалось получить повторяющиеся группы 0x55 и 0xAA, как и ожидалось. К сожалению, эти группы сопровождались некоторыми случайными байтами, о которых я не знаю, откуда они пришли [моя первая догадка - шум].
Серьезно, я смог получить очень приличный выход, когда я сдвинул принятый сигнал от USPR на 1000 Гц, используя частотный фильтр для фильтра, который был выбран в 40 раз. Здесь происходит какое-то смешное поведение гнурадио. Я использую ползунок для управления центральной частотой фильтра xlating, чтобы иметь возможность изменить его по умолчанию (1000hz) на любое значение, которое я хочу во время выполнения. Когда я меняю значение, сигнал становится менее приличным, то есть заменой бит, добавлением случайных байтов и т. Д. Я ожидал, что сигнал вернется к норме, когда я вернусь на 1000 Гц, что довольно странно.
Может ли кто-нибудь сказать мне, почему это происходит? Мой график показан ниже. Не стесняйтесь указывать на ошибки, которые я до сих пор забыл.
xlating еловые отводы фильтра: firdes.low_pass_2 (1, samp_rate, cut_off, xlating_bw, xlating_attn)
@markus Я снова заглянул в источник gfsk.py, чтобы узнать, как блокируются параметры. Ваш последний комментарий, в котором предполагалось, что восстановление часов PFB лучше при работе с реальными сигналами, спасло день. После замены блока M & M на PFB мне удалось восстановить бит-поток. Параметры, которые я использовал для PFB, такие же, как те, которые используются в учебнике по учебным материалам GNU Radio Guided Tutorial # 7 (http://gnuradio.org/redmine/projects/gnuradio/wiki/Guided_Tutorial_PSK_Demodulation). Должна ли быть какая-либо модификация в случае, если я хочу получать пакетированные данные в отличие от непрерывного потока 101010? –
@MosesBrowneMwakyanjala хорошо, пакетирование - это немного более высокоуровневая концепция.Я бы посоветовал вам взглянуть на gnuradio/examples/digital/ofdm/rx_ofdm.grc (возможно, в разделе/usr/share/(local)); это депакератор, соответствующий пакетизатору, определенному в tx_ofdm.grc. Это может дать вам представление о том, как создать свой де-пакетизатор для ваших данных. В принципе, ваш поток символов, вероятно, будет содержать преамбулу? Вы можете просто сопоставить это, а затем извлечь заголовок, содержащий длину пакета, и написать блок «передать только пакетную полезную нагрузку». –