Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Technika DSP - demodulacja FSK

46 views
Skip to first unread message

Verox

unread,
Jan 30, 2011, 9:01:41 AM1/30/11
to
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?

--
#begin 755 signature.exe
[tomek <at> sikornik <dot> net] vy 73! de SP9UOB
Proud to be 100 percent microsoft free. op. Tomek

f

unread,
Jan 30, 2011, 9:20:00 AM1/30/11
to

Użytkownik "Verox" <antispa...@bijspamera.veroxsystems.com> napisał w
wiadomości news:slrnikarq5.4rb...@matrix.verox.pl...

> 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.

Zastanów się czy to jest w ogóle teoretycznie mozliwe

Verox

unread,
Jan 30, 2011, 9:41:00 AM1/30/11
to

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 :-)

Michoo

unread,
Jan 30, 2011, 9:45:00 AM1/30/11
to
W dniu 30.01.2011 15:01, Verox pisze:

> 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!
[..]

> Czy ktos z Was może mi podpowiedzieć czego szukać żeby zrobić tani (w sensie
> czasu obliczeń, najlepiej stały przecinek) dyskryminator FSK?
Jedyne co mi przychodzi do głowy to wykrywanie zmiany znaku pochodnej.
ale to może być strasznie podatne na zakłócenia.

--
Pozdrawiam
Michoo

Verox

unread,
Jan 30, 2011, 9:59:15 AM1/30/11
to

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

Michoo

unread,
Jan 30, 2011, 10:07:25 AM1/30/11
to
W dniu 30.01.2011 15:59, Verox pisze:

> Kiedyś czytałem o czymś z opóźnieniem i mnożeniem, ale za kija nie potrafie
> sobie przypomnieć gdzie i co to było.
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.

--
Pozdrawiam
Michoo

Jacek Radzikowski

unread,
Jan 30, 2011, 1:27:21 PM1/30/11
to
On 01/30/2011 09:01 AM, Verox wrote:
> 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?

Tutaj masz opisany prosty demodulator:
http://focus.ti.com/lit/an/spra347/spra347.pdf
Pewnie b�dziesz musia� troch� zmieni� parametry demodulatora, ale
matematyka wygl�da na w miar� dobrze opisan�.

pzdr.
j.

Mariusz Dabrowski

unread,
Jan 30, 2011, 1:44:17 PM1/30/11
to
Dnia 30.01.2011 Verox <antispa...@bijspamera.veroxsystems.com> napisał/a:
> Kiedyś czytałem o czymś z opóźnieniem i mnożeniem, ale za kija nie potrafie
> sobie przypomnieć gdzie i co to było.

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

Pozdrawiam,
Mariusz Dąbrowski

J.F.

unread,
Jan 30, 2011, 2:17:02 PM1/30/11
to
On Sun, 30 Jan 2011 15:20:00 +0100, f wrote:
>Użytkownik "Verox" <antispa...@bijspamera.veroxsystems.com> napisał w
>> 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.
>
>Zastanów się czy to jest w ogóle teoretycznie mozliwe

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.

Verox

unread,
Jan 30, 2011, 2:44:30 PM1/30/11
to
On Sun, 30 Jan 2011 18:44:17 +0000 (UTC), Mariusz Dabrowski napisaďż˝:
> Dnia 30.01.2011 Verox <antispa...@bijspamera.veroxsystems.com> napisaďż˝/a:
>> Kiedy� czyta�em o czym� z op�nieniem i mno�eniem, ale za kija nie potrafie
>> sobie przypomnie� gdzie i co to by�o.
>
> Trzeba op�ni� o �wier� okresu cz�stotliwo�ci �rodkowej (1700Hz).
> Nast�pnie sygna� op�niony mno�ymy przez oryginalny.

Dzi�kuje, po szybkiej symulacji wygl�da obiecuj�co:

http://idom.verox.pl/pub/delay.jpg

Verox

unread,
Jan 30, 2011, 3:04:53 PM1/30/11
to
On Sun, 30 Jan 2011 20:17:02 +0100, J.F napisał:
> On Sun, 30 Jan 2011 15:20:00 +0100, f wrote:
>>Użytkownik "Verox" <antispa...@bijspamera.veroxsystems.com> napisał w
>>> 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.
>>
>>Zastanów się czy to jest w ogóle teoretycznie mozliwe
>
> 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 :-)

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

RoMan Mandziejewicz

unread,
Jan 30, 2011, 3:55:08 PM1/30/11
to
Hello J.F.,

Sunday, January 30, 2011, 8:17:02 PM, you wrote:

[...]

>>Zastan�w si� czy to jest w og�le teoretycznie mozliwe


> 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.

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

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

A ja z tego i tak niewiele rozumiem.

--
Best regards,
RoMan mailto:ro...@pik-net.pl
Nowa strona: http://www.elektronika.squadack.com (w budowie!)

J.F.

unread,
Jan 30, 2011, 4:54:35 PM1/30/11
to
On Sun, 30 Jan 2011 21:55:08 +0100, RoMan Mandziejewicz wrote:
>Hello J.F.,

>>>Zastan�w si� czy to jest w og�le teoretycznie mozliwe
>> 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.
>
>Ale to by�a QAM a nie FSK...

Na 2 probkach niewielka roznica :-)


J.

J.F.

unread,
Jan 30, 2011, 5:28:38 PM1/30/11
to

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.

Michał Lankosz

unread,
Feb 1, 2011, 7:14:09 AM2/1/11
to
U�ytkownik "Verox" <antispa...@bijspamera.veroxsystems.com> napisa� w
wiadomo�ci news:slrnikarq5.4rb...@matrix.verox.pl...
> 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?

Implementacja na AVR:
http://www.nailed-barnacle.co.uk/callerid/avr/CallerID.asm
mo�e si� przyda.
Nie pami�tam, czy to dok�adnie ten program sprawdza�em, ale mo�na zerkn��.
Wa�n� rol� odgrywa filtracja sygna�u (tutaj filtr FIR).

Michaďż˝

WP

unread,
Feb 2, 2011, 9:34:13 AM2/2/11
to
On 30 Sty, 15:01, Verox <antispam_ve...@bijspamera.veroxsystems.com>
wrote:

> 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?

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

Verox

unread,
Feb 2, 2011, 2:38:58 PM2/2/11
to
On Wed, 2 Feb 2011 06:34:13 -0800 (PST), WP napisaďż˝:

> On 30 Sty, 15:01, Verox <antispam_ve...@bijspamera.veroxsystems.com>
> wrote:
>> 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?
>
> 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).

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� :-)

Adam Wysocki

unread,
Feb 2, 2011, 10:59:37 PM2/2/11
to
Verox <antispa...@bijspamera.veroxsystems.com> wrote:

> Próbuje zdemodulować sygnał FSK 1200/2200 Hz - szybkość modulacji 1200 bit/s

APRS?

--
gof

Verox

unread,
Feb 3, 2011, 8:32:07 AM2/3/11
to
On Thu, 3 Feb 2011 03:59:37 +0000 (UTC), Adam Wysocki napisaďż˝:
> Verox <antispa...@bijspamera.veroxsystems.com> wrote:
>
>> Pr�buje zdemodulowa� sygna� FSK 1200/2200 Hz - szybko�� modulacji 1200 bit/s
>
> APRS?

Tak, og�lnie PR

Adam Wysocki

unread,
Feb 3, 2011, 7:17:45 PM2/3/11
to
Verox <antispa...@bijspamera.veroxsystems.com> wrote:

>>> Próbuje zdemodulować sygnał FSK 1200/2200 Hz - szybkość modulacji 1200 bit/s
>>
>> APRS?
>
> Tak, ogólnie PR

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

--
gof

Adam Wysocki

unread,
Feb 3, 2011, 7:20:14 PM2/3/11
to
Verox <antispa...@bijspamera.veroxsystems.com> wrote:

>>> Próbuje zdemodulować sygnał FSK 1200/2200 Hz - szybkość modulacji 1200 bit/s
>>
>> APRS?
>
> Tak, ogólnie PR

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 oczekiwań, 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 terminal (Pocket Putty

Adam Wysocki

unread,
Feb 3, 2011, 7:21:41 PM2/3/11
to
Verox <antispa...@bijspamera.veroxsystems.com> wrote:

>>> Pr�buje zdemodulowa� sygna� FSK 1200/2200 Hz - szybko�� modulacji 1200 bit/s
>>
>> APRS?
>
> Tak, og�lnie PR

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 oczekiwa�, 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) jak sam
zauwa�y�e� w realnym �rodowisku �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 terminal (Pocket Putty

Verox

unread,
Feb 4, 2011, 7:41:02 AM2/4/11
to
On Fri, 4 Feb 2011 00:21:41 +0000 (UTC), Adam Wysocki napisał:
> Verox <antispa...@bijspamera.veroxsystems.com> wrote:
>
>>>> Próbuje zdemodulować sygnał FSK 1200/2200 Hz - szybkość modulacji 1200 bit/s
>>>
>>> APRS?
>>
>> Tak, ogólnie PR
>
> PR oprócz APRSu jeszcze żyje? :)

Chyba nie, ale warto mieć możliwość postawienia węzła jak
ktoś wyłączy w Polsce Internet ;-)

> Sam stoję przed tym tematem - chcę się uruchomić na APRSie a żaden tracker z
> tych, które przejrzałem, nie spełnia moich oczekiwań, 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) jak sam
> zauważyłeś w realnym środowisku średnio się sprawdza.

Jak napiszesz od nowa to rozwiążesz kilka problemów i zrozumiesz
dlaczego tak to działa. Głównie dlatego się za to zabrałem.
Jak już będe miał działający modem w sofcie - to pokusze się o doklejenie do
tego dsPIC'a ethernetu i spróbuje zrobić igate na 2 scalakach :-)

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

Ciekawy pomysł :-)

J.F.

unread,
Feb 4, 2011, 7:55:45 AM2/4/11
to
On Fri, 4 Feb 2011 12:41:02 +0000 (UTC), Verox wrote:
>On Fri, 4 Feb 2011 00:21:41 +0000 (UTC), Adam Wysocki napisał:
>>>>> Próbuje zdemodulować sygnał FSK 1200/2200 Hz - szybkość modulacji 1200 bit/s
>>>> APRS?
>>> Tak, ogólnie PR
>> PR oprócz APRSu jeszcze żyje? :)
>Chyba nie, ale warto mieć możliwość postawienia węzła jak
>ktoś wyłączy w Polsce Internet ;-)

Beda strzelac do takich :-)


No wlasnie - przeciez jest chyba do tego troche gotowego
oprogramowania, nie mozna podejrzec ?

J.

Verox

unread,
Feb 4, 2011, 8:02:59 AM2/4/11
to
On Fri, 04 Feb 2011 13:55:45 +0100, J.F napisał:
> On Fri, 4 Feb 2011 12:41:02 +0000 (UTC), Verox wrote:
>>On Fri, 4 Feb 2011 00:21:41 +0000 (UTC), Adam Wysocki napisał:
>>>>>> Próbuje zdemodulować sygnał FSK 1200/2200 Hz - szybkość modulacji 1200 bit/s
>>>>> APRS?
>>>> Tak, ogólnie PR
>>> PR oprócz APRSu jeszcze żyje? :)
>>Chyba nie, ale warto mieć możliwość postawienia węzła jak
>>ktoś wyłączy w Polsce Internet ;-)
>
> Beda strzelac do takich :-)

;-)

> No wlasnie - przeciez jest chyba do tego troche gotowego
> oprogramowania, nie mozna podejrzec ?

Większość rozwiązań na uC jest zamkniętoźródłowe.
Podglądałem kilka rozwiązań już - ale na zabawe mam czas tylko w weekendy.
W zeszły weekend doszedłem do wniosku że goertzel reaguje zbyt wolno, za
to mnożenie i opóźnienie wygląda obiecująco. Muszę się tylko nauczyć
projektowania filtrów FIR i ich implementacji.

Piotr "Curious" Slawinski

unread,
Feb 6, 2011, 2:48:05 AM2/6/11
to
Verox wrote:

> Zero-crossing odpada ze względu na SNR.

ja bym na twoim miejscu jeszcze przemyslal - filtry i limiter mozna zrobic
analogowo - bedzie szybsze i bedzie pobierac mniej pradu niz procesor...
nie mowiac o zakresie dynamiki ...


--

WP

unread,
Feb 7, 2011, 11:02:22 AM2/7/11
to
On 4 Lut, 14:02, Verox <antispam_ve...@bijspamera.veroxsystems.com>
wrote:

>
> Większość rozwiązań na uC jest zamkniętoźródłowe.
> Podglądałem kilka rozwiązań już - ale na zabawe mam czas tylko w weekendy.
> W zeszły weekend doszedłem do wniosku że goertzel reaguje zbyt wolno, za
> to mnożenie i opóźnienie wygląda obiecująco. Muszę się tylko nauczyć
> projektowania filtrów FIR i ich implementacji.

Teoretycznie najlepszą detekcję by dawało porównywanie ostatnich
kilkunastu próbek z oczekiwanym kształtem sybmolu dla 0 i 1 (czyli
cały okres 1200 i 1.8 okresu 2200). Porównywanie tu jest policzeniem
korelacji. Gorzej, że symbol 2200 nie zawiera całkowitej ilości
półokresów, tylko ułamek, więc wstawienie takiego symbolu w strumień
zmienia fazę następnych, zatem i ich spodziewany kształt. Byłoby dużo
łatwiej z 1200/1800 lub 1200/2400, bo wtedy każda jedynka czy zero
wygląda tak samo, ew. jest zanegowane. I z korelacji by można
zrezygnować, i synchronizacja rząd wielkości prostsza, same zalety,
ale niestety nie tu:)

Jeśli masz na tyle mocy procka żeby FIR zrobić, to można tak:
Strumień wejściowy na FIR o takiej długości, jak długość symbolu
(dłuższy sprawi, że sąsiednie symbole będą wpływały na siebie, efekt
niemile widziany). FIR ma być taki, żeby przepuszczał do 1200 a
wycinał od 2200. Np. taki (dla 16 kHz):
-0.0523 -0.0256 -0.0050 0.0376 0.0959 0.1559 0.2012 0.2180 i dalej
symetrycznie 0.2012 0.1559...
Na jego wyjściu będzie duży sinus dla 1200 i jakieś śmieci przy 2200.
Tylko że nigdy nie wiadomo w jaką fazę 1200 trafimy, więc ten jeden
okres 1200 może dawać szczyty za każdym razem w różnych miejscach.
Czasem to będzie jeden dodatni i jeden ujemny, czasem jeden ujemny i
dwa słabsze dodatnie, a typowo coś pomiędzy:) Można zliczać symbole
2200 i sobie przewidywać fazę. Ale to dla ambitnych. A można też
wyrównać tego sinusa to czegoś w miarę płaskiego. Gdyby był sygnał
kwadraturowy, to łatwo sobie amplitudę wyliczyć z sumy kwadratów. Ale
że nie ma, to go sobie można zrobić przez opóźnienie o ćwierć okresu
(tak jakby z sinusa zrobić cosinus), i wychodzi amplituda (pierwiastka
nie lubimy):
y[n] = x[n]^2 + y[n-ćwierć okresu]^2
x to wyjście z FIRa. y to już jest sygnał trzymający się wysoko przy
1200 i nisko przy 2200. Do detekcji całkiem się nadaje.

Oddzielny temat to synchronizacja. Do tego przydaje się wiedza o
protokole. Typowo powinna być preambuła, pozwalająca na znalezienie
momentów gdy jeden symbol się kończy a następny zaczyna. Np. histogram
ze zmian tego wyżej wyliczonego sygnału może to podpowiedzieć.
Próbkowanie będące wielokrotnością 1200 też nieco ułatwi. Przy dobrej
synchronizacji można też CPU zaoszczędzić i liczyć wszystko nie co
próbkę, ale raz na symbol.

WP

Piotr "Curious" Slawinski

unread,
Feb 7, 2011, 5:42:12 PM2/7/11
to
Verox wrote:

> Witajcie.


>
> Próbuje zdemodulować sygnał FSK 1200/2200 Hz - szybkość modulacji 1200

jeszcze jeden pomysl mi przyszedl do glowy :
http://en.wikipedia.org/wiki/Quadrature_mirror_filter
z tym ze moja znajomosc matematyki nie umozliwia mi stwierdzenie czy taki
filtr sie 'nada' (chociaz mysle ze w przeciwienstwie do Groetzla -
wprowadzalby tylko pewne opoznienie, a przy PR/APRS to nieistotne, bo
transmisja jest half-duplexowa) .

idea bylaby tu podobna do uzycia zero-crossing, tzn. dzielimy sygnal na 2
czesci , mniejsze niz 1700 i wieksze niz 1700.

zaleta nad 0 crossing taka, ze nawet rozpoznajac 'bity' na podst. prostej
sredniej z kazdych pasm (czyli albo mamy 'wiecej dolu' albo 'wiecej gory')
mozna wprowadzac prosta 'redukcje zaklocen' - np. malo dokladnym (a co za
tym idzie szybkim) Groetzlem badac 'dol' i 'gore' _poza_ interesujacym nas
pasem - dzieki czemu uzyskamy srednia 'zaklocen' poza interesujacym
prazkiem, i te srednia zwyczajnie odejmujemy przy ostatecznej decyzji od
kazdej ze skladowych. moze dzialac zarowno 'krotkoterminowo' (redukcja
szumow) jak i dlugo (korekcja np. charakterystyki czestotliwosci)

dodatkowa zaleta ze juz po pierwszym 'podziale' uzyskujemy dwa rownolegle
strumienie, ktore mozemy rownolegle przetwarzac - no ale to jedynie jesli
uzywamy jakiegos dsp/fpga/wielordzeniowej architektury , chociaz od biedy
mozna np. uzyc jednego szybkiego mikrokontrolera 'rozdzielajacego' pasma, a
nastepnie np. dwoch dodatkowych , pracujacych rownolegle - analizujacych
kazde z osobna (lub nawet dwoch drabinek DAC i komparatora, ew. analogowych
filtrow)


--

0 new messages