В даний час я впроваджую акустичну модуляцію та демодуляцію FSK. Я не хлопець, що обробляє сигнали ...
Оскільки ви говорите, що у вас є відповідні фільтри, і ви згадуєте про несумісне виявлення, я думаю, ви вже майже людина з цифрового спілкування - крок до того, щоб бути людиною DSP, досить малий :)
Повноцінний підхід SDR синхронізатора
2fsymbol,max
Я зробив собі швидкий діапазон сигналу FSK з реальним значенням (я думаю, якби це зробив ще раз, я замінив би два смугових фільтри одним комбінованим частотним перекладом і одним низькочастотним фільтром, давши мені складну смугу основи, або кинув багатофазний фільтрбанк при проблемі, але що б там не було) в радіо GNU за допомогою супутника GNU Radio (файл графічного файлу тут ):
Справа в тому, що ми, мабуть, хочемо, щоб синхронізація часу синхронізації між розділом і пороговим блоком. Ми могли б зробити згодом - класичний підхід "мікроконтролера та цифрового обладнання" насправді був би раковиною Muller & Mueller, і це також спрацювало б там, але не будемо витрачати інформацію на схил.
Отже, я б тут додав багатофазну синхронізацію годин; Я мушу визнати, що я не міг сформулювати це краще, ніж Том, учень Гарріса, в документації однойменного радіоблоку GNU :
Синхронізатор синхронізації за допомогою багатофазних фільтрів.
Цей блок виконує синхронізацію синхронізації для PAM-сигналів шляхом мінімізації похідної відфільтрованого сигналу, що, в свою чергу, максимально збільшує SNR та мінімізує ISI.
sincsinc(0)=1,sinc′(0)=0
di[n]ixi[n]
e[n]=R{xi[n]}⋅R{di[n]}+I{xi[n]}⋅I{di[n]}2.0 .
xi[n]xi[n]xi[n]замість просто знаку особливо добре для сигналів із низьким SNR.
e[n]dkdratedratedratedkdratedkdαdβdαdβgain24
Зрозумівши це - частота звуку
Отже, параметризуючи цей блок належним чином (і, ймовірно, зменшивши bpf_decim
та lpf_decim
надаючи синхронізатору більше місця для зміщення фаз), ви могли б створити дуже стабільний час відновлення символів, що було б повністю непосильним для вашої програми 😁
Оскільки ви робите вибірки із звуковою карткою на обох кінцях, і оскільки я припускаю, що вам не доведеться мати справу з доплером, швидкість передачі символів має фіксовану залежність від частот несучої (наприклад, сторона передачі має більш високий носій із a період з 8 зразків звукової картки, і символ завжди приймає, скажімо, 128 зразків, тож фіксований коефіцієнт), ви можете зробити скорочення:
darctandt[n]
Щодо синхронізації пакетів
Отже, оскільки у вас працює робочий демодулятор, який, ймовірно, не надто синхронізується, коли немає сигналу, просто використовуйте фіксовану відому послідовність даних, щоб знайти свій пакет.