Реализация фазового демодулятора в программном обеспечении

В настоящее время я пытаюсь отправить и получить некоторые модулированные данные BPSK через звук. В настоящее время я использую алгоритм Гоерцеля в качестве полосового фильтра для демодуляции. У меня нет формального обучения в обработке сигналов.

Учитывая частоту дискретизации 44100 Гц и размер сегмента 100, моя интуиция говорит, что генерация волны с частотой, кратной 441 Гц, должна привести к тому, что я получу относительно постоянную фазу. На других частотах фаза, которую я обнаруживаю, должна дрейфовать.

Тем не менее, моя текущая реализация показывает сдвиг по фазе при обнаружении сгенерированной звуковой волны в течение секунды (около 90 градусов). Это следовало ожидать или признак недостатка в моей реализации goertzels?

Кроме того, есть ли лучший, возможно, очевидный способ обнаружить фазу волны на определенной частоте, чем при использовании гертцелей?

2 ответа

Медленный сдвиг фазы может быть результатом небольшой разницы в тактовых частотах передатчика и приемника. Этого следовало ожидать.

Обычно данные BPSK кодируются дифференциально, поэтому вам нужно только обнаружить моменты, когда сдвиг фазы на 180 градусов, и любой медленный дрейф или смещение фазы можно легко игнорировать.

Вам потребуется выполнить некоторую форму восстановления несущей и восстановления символов, чтобы отслеживать и корректировать смещения в часах передатчика и приемника.

Другие вопросы по тегам