Technika DSP - demodulacja FSK

Witajcie.

Próbuje zdemodulować sygnał FSK 1200/2200 Hz - szybkość modulacji 1200 bit/s Próbowałem zrobić to przy pomocy alg. Goertzla, jednak nie udało mi się to, ponieważ ja musze rozpoznać nośną 1200 Hz już po 833us - czyli po czasie trwania jednego bitu! Algo Goertzla wymaga większej ilości próbek (więcej niż jeden okres) dla poprawnego wykrycia podnośnej. Zero-crossing odpada ze względu na SNR. Czy ktos z Was może mi podpowiedzieć czego szukać żeby zrobić tani (w sensie czasu obliczeń, najlepiej stały przecinek) dyskryminator FSK?

Reply to
Verox
Loading thread data ...

On Sun, 30 Jan 2011 15:20:00 +0100, f napisał:

Takie systemy działają, więc mało że teoretycznie możliwe to udowodnione w praktyce ;-). Chyba że coś źle licze:

Czas 1 bitu = 1/1200 bit/s = 833.33 us To jest raczej jasne i tu błędu nie ma.

okres podnośnej 1200 Hz = 1/1200 Hz = 833.33 us = czas bitu okres podnośnej 2200 Hz = 1/2200 Hz = 454.54 us = 1.8 * czas bitu

Próbkowanie 16 kHz - próbka co 62.5 us

podnośna 1200 Hz - 13 próbek/okres podnośna 2200 Hz - 7 próbek/okres

Czyli ZA MAŁO do algo goertzla. Oczywiście moge sie mylić - jeśli tak jest proszę o naprostowanie, zaczynam zabawe z DSP :-)

Reply to
Verox

W dniu 30.01.2011 15:01, Verox pisze:

[..]

Jedyne co mi przychodzi do głowy to wykrywanie zmiany znaku pochodnej. ale to może być strasznie podatne na zakłócenia.

Reply to
Michoo

On Sun, 30 Jan 2011 15:45:00 +0100, Michoo napisał:

Kiedyś czytałem o czymś z opóźnieniem i mnożeniem, ale za kija nie potrafie sobie przypomnieć gdzie i co to było.

Reply to
Verox

W dniu 30.01.2011 15:59, Verox pisze:

Metoda, którą ja kiedyś opracowałem (może jest jakaś lepsza) to sumowanie (z pomocą bufora cyklicznego) ostatnich k różnic między kolejnymi próbkami. Ta suma zmienia znak około k/2 próbek za minimum lub maksimum. W związku z czym pozwala dość dobrze obliczać czas półokresu o ile zakłócenia nie są zbyt duże.

Reply to
Michoo

Tutaj masz opisany prosty demodulator:

formatting link
będziesz musiał trochę zmienić parametry demodulatora, ale matematyka wygląda na w miarę dobrze opisaną.

pzdr. j.

Reply to
Jacek Radzikowski

Dnia 30.01.2011 Verox <antispam snipped-for-privacy@bijspamera.veroxsystems.com> napisał/a:

Trzeba opóźnić o ćwierć okresu częstotliwości środkowej (1700Hz). Następnie sygnał opóźniony mnożymy przez oryginalny.

Pozdrawiam, Mariusz Dąbrowski

Reply to
Mariusz Dabrowski

Teoretycznie moze nie, ale juz w prehistorycznych czasach modemy robily to w pol okresu, a w poznej starozytnosci kluczowano 3429 baud, na nosnej cos 1800Hz, w pasmie 3300Hz (teoretycznie) i jeszcze majac w kanale probkowanie 8kHz i 8 bit. I rozpoznawano ok 9 bitow na symbol.

Goertzel tez sie powinien do tego nadawac, tylko trzeba zrozumiec jak on dziala i odpowiednio wykorzystac :-)

J.

Reply to
J.F.

On Sun, 30 Jan 2011 18:44:17 +0000 (UTC), Mariusz Dabrowski napisał:

Dziękuje, po szybkiej symulacji wygląda obiecująco:

formatting link

Reply to
Verox

:-)

A możesz mnie jakoś nakierować :) ? Ni hu hu nie przychodzi mi do głowy jak go użyć do szybkiego wykrycia prążka.

Reply to
Verox
[...]

Ale to była QAM a nie FSK...

A ja z tego i tak niewiele rozumiem.

Reply to
RoMan Mandziejewicz

Na 2 probkach niewielka roznica :-)

J.

Reply to
J.F.

ten algorytm, tzn dwie zmienne plus algorytm, tworzy taki niby swobodny rezonator. Podasz odpowiednia czestotliwosc to mu amplituda rosnie.

Trzeba dwa rezonatory i sprawdzac w ktorym szybciej rosnie. A rosnie juz w jednym okresie.

Ale tak sobie zasymulowalem i ciekawostke zauwazylem - potrafi tez zmalec. W sumie nie dziwne - po tych wszystkich modulacjach sygnal wymuszajacy moze byc w przeciwfazie do swobodnych drgan. Wiec albo trzeba resetowac na poczatku bitu, albo dorobic tlumienie - i to raczej spore.

J.

Reply to
J.F.
Reply to
Michał Lankosz

A bardzo się upierasz przy tym 2200 Hz? Gdyby z tego zrobić 2400 to znam niewymagający alg dający się zapisać nawet bez mnożenia, ale bazujący na tym że każdy symbol zawiera całkowita ilość półokresów (1200/1800 też by pasowało). WP

Reply to
WP

On Wed, 2 Feb 2011 06:34:13 -0800 (PST), WP napisał:

Mnie tam wszystko jedno czy 2200 czy 2400, jednak musiałbym przekonać wszystkich którzy używają Packet-Radio do przestrojenia się o te 200 Hz wyżej ;-) Algo możesz oczywiście opisać :-)

Reply to
Verox

APRS?

Reply to
Adam Wysocki

On Thu, 3 Feb 2011 03:59:37 +0000 (UTC), Adam Wysocki napisał:

Tak, ogólnie PR

Reply to
Verox

PR oprócz APRSu jeszcze żyje? :)

Sam stoję przed tym tematem - chcę się uruchomić na APRSie a żaden tracker z tych, które przejrzałem, nie spełnia moich potrzeb, więc robię swój. Nie chcę pisać wszystkiego od nowa tylko w miarę możliwości wykorzystać już istniejące rozwiązania. I też właśnie rozglądam się za wydajnym sposobem wykrywania częstotliwości, bo liczenie przejść przez zero (tak działa WhereAVR) podobno średnio się sprawdza.

FOA-Pack wygląda obiecująco, ale nie znalazłem nigdzie kodu źródłowego do tego trackera, a to dla mnie podstawa - plik .hex do wrzucenia do mikrokontrolera mnie nie interesuje.

Mój tracker ma mieć moduł Bluetooth (BTM-112) i komunikować się ze mną przez telefon, na razie mam wizję komunikacji tekstowej przez telefon (Pocket Putty na Windows Mobile).

sp5gof

Reply to
Adam Wysocki

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.