-
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
Następne wpisy z tego wątku
- 07.02.11 22:42 Piotr \"Curious\" Slawinski
Najnowsze wątki z tej grupy
- Podłączenie DMA 8257 do 8085
- pozew za naprawę sprzętu na youtube
- gasik
- Zbieranie danych przez www
- reverse engineering i dodawanie elementów do istniejących zamkniętych produktów- legalne?
- Problem z odczytem karty CF
- 74F vs 74HCT
- Newag ciąg dalszy
- Digikey, SN74CBT3253CD, FST3253, ktoś ma?
- Szukam: czujnik ruchu z możliwością zaączenia na stałe
- kabelek - kynar ?
- Podnieść masę o 0.6V
- Moduł BT BLE 5.0
- Pomiar amplitudy w zegarku mechanicznym
- ale zawziętość i cierpliwość
Najnowsze wątki
- 2025-01-08 Warszawa => Spedytor Międzynarodowy <=
- 2025-01-08 Katowice => Regionalny Kierownik Sprzedaży (OZE) <=
- 2025-01-08 Gdańsk => Specjalista ds. Sprzedaży <=
- 2025-01-08 Katowice => Key Account Manager (ERP) <=
- 2025-01-08 Warszawa => Programista Full Stack .Net <=
- 2025-01-08 Podłączenie DMA 8257 do 8085
- 2025-01-08 Warszawa => System Architect (background deweloperski w Java) <=
- 2025-01-08 Warszawa => Solution Architect (Java background) <=
- 2025-01-08 Wrocław => Application Security Engineer <=
- 2025-01-08 Warszawa => International Freight Forwarder <=
- 2025-01-08 Mińsk Mazowiecki => Area Sales Manager OZE <=
- 2025-01-08 Lublin => Inżynier Serwisu Sprzętu Medycznego <=
- 2025-01-08 Bieruń => Spedytor Międzynarodowy (handel ładunkami/prowadzenie flo
- 2025-01-08 Gliwice => Business Development Manager - Network and Network Security
- 2025-01-08 Warszawa => Spedytor Międzynarodowy <=