logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Programowa demodulacja sygnału FM (C++)

magdalena_gda 14 Mar 2010 14:37 2421 5
REKLAMA
  • #1 7828445
    magdalena_gda
    Poziom 2  
    Muszę stworzyć aplikację w języku C++ do demodulacji sygnałów zmodulowanych FM. Sygnały zmodulowane będą zapisane w pliku w formacie wave.

    Może ktoś robił coś podobnego i mógłby mi doradzić? Muszę najpierw wybrać odpowiedni algorytm.

    Jednym ze sposobów demodulacji jest demodulator iloczynowy, w którym sygnał wejściowy mnożony jest z sygnałem po przejściu przez przesuwnik fazy (na częstotliwości nośnej przesunięcie fazy pi/2), a następnie poddawany filtracji dolnoprzepustowej. W jednym z artykułów napisane było, że przesuwnik fazy można zrealizować wykorzystując dyskretną transformację Hilberta. Filtr dolnoprzepustowy można zrealizować jako filtr FIR. Czy wykorzystanie tego algorytmu jest dobrym pomysłem? Za wszelkie sugestie z góry dziękuję. :)
  • REKLAMA
  • #2 7831367
    And!
    Admin grupy Projektowanie
    Nie stosowałem tego rodzaju demodulacji,
    jeżeli jest tak opisana przetestuj działanie w
    mathalab lub octave,
    jeżeli zadziała przenieś do C++ implementując
    algorytm z zachowaniem odpowiedniej dokładności obliczeń,
    warto wykorzystać gotowe biblioteki.
  • REKLAMA
  • #3 7835125
    __Grzegorz__
    Poziom 30  
    Metoda dekodowania jak najbardziej poprawna.

    Jednak jak poskładasz klocki (Hilbert na FIR, mnożenie, LPF na FIR), na 99% nie zadziała.

    Istnieje tutaj przynajmniej 1 ciekawy niuans, który może Ci umknąć...
  • REKLAMA
  • #4 7869381
    Aquagen
    Poziom 10  
    Ja także muszę napisać w C++ demodulację i wybrałem detekcję obwiedni sygnału analitycznego za pomoca transformacji Hilberta. Bardzo przystępnie jest to opisane na stroni http://www.numerix-dsp.com/envelope.html . Ja jestem początkujący w dziedzinie DSP.
    Jest tam napisane, że oryginalny sygnał musi być opóźniony tak aby dopasował się do grupowego opóźnienia spowodowanego przez HT.
    Czy może ktoś może wie o ile próbek ma być zrealizowane to opóźnienie i czy wystarczy po prostu FIFO napełnione tyloma zerami ile wynosi opóźnienie?
  • REKLAMA
  • #5 7871304
    __Grzegorz__
    Poziom 30  
    Jeżeli transformata Hilberta jest zrobiona na N-tap FIR ,
    to wprowadzane opóźnienie będzie wynosić N/2.

    Czyli przed wymnożeniem sygnału oryginalnego i przetransformowanego,
    oryginał należy opóźnić o N/2 próbek.
  • #6 7871426
    Aquagen
    Poziom 10  
    Dziękuję bardzo rzeczywiście działa z tym opóźnieniem N / 2 i powiem, że na prawdę szybko na CUDA.
REKLAMA