Оптимизация FSK демодулятора

Не прошло и года, а я уже придумал как улучшить свой FSK демодулятор. Как уже писал, имея на руках BER кривую, можно начинать улучшать демодулятор. Первым делом я сравнил FSK демодулятор SatNOGS и свой.

Для этого я взял сырые данные (.wav файл) из обработанного пролёта спутника и попробовал прогнать его через свой демодулятор. В результате у меня получилось 23 пакета. Однако, демодулятор SatNOGS смог найти 24 пакета.

Всё это значит, что есть пространство для оптимизации.

Я открыл flowgraph satnogs и попытался сравнить его со своим.

Основные блоки такие же. Используется DC Blocker и Clock Recovery M&M. Единственное отличие - это использование 1024 шага для усреднения сигнала в DC Blocker. В моём же демодуляторе используется только 32 * sps. Для sps=5, это значение будет 160. Я попробовал увеличить это значение до 1024 и получил 24 пакета!

Прирост улучшения декодирования отлично виден на BER кривой.

После этого я решил попробовать их настройки для Clock Recovery M&M блока и получил ещё более впечатляющую производительность (зелёная линия):

Следующим шагом я заметил, что gain omega вычисляется как (2 * Math.PI) / 100. Я попробовал вместо 2 подставить значение sps. В моём случае это было 5. Результат оправдал ожидания. Отчётливо виден небольшой прирост:

После каждого шага оптимизаций я прогонял через демодулятор реальный сигнал и каждый раз получал чуть более лучшие результаты. На изначальном сигнале у меня получилось 24 пакета, а на другом вместо 5 изначальных я получил 7. Почти 30% улучшение!

В ближайшее время я планирую обновить демодулятор и раскатать настройки в сети r2cloud.