eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikaTechnika DSP - demodulacja FSKRe: Technika DSP - demodulacja FSK
  • Data: 2011-02-07 16:02:22
    Temat: Re: Technika DSP - demodulacja FSK
    Od: WP <p...@g...com> szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    On 4 Lut, 14:02, Verox <a...@b...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

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: