Cyfrowa demodulacja AM

Witam ,

Problem jak w temacie. Częstotliwość nośnej od 2.5 do 8 MHz , częstotliwość sygnału modulującego rzędu 100KHz , częstotliwość próbkowania 65MHz.

No i teraz... chcę zrobić demodulację cyfrowo (wyłuskanie obwiedni) , a doświadczenie w DSP mam raczej mizerne. Gdzie w sieci można coś sensownego poczytać na ten temat , aby załapać to zarówno od strony teoretycznej jak i od strony konkretnych rozwiązań ?!

MH

Reply to
MH
Loading thread data ...

Najpierw przenieś sygnał do pasma podstawowego przez wymnożenie przebiegu wejściowego przez sygnał cyfrowej heterodyny w postaci 2 przebiegów sinusoidalnych przesuniętych w fazie o 90 stopni (sinus i cosinus). Na wyjściu otrzymasz sygnał zespolony, o składowych zwyczajowo nazywanych I i Q (I pochodzi od "In phase", Q od Quadrature). Później taki sygnał zespolony filtrujesz i decymujesz (zmniejszasz częstotliwość próbkowania. Nie ma sensu próbkować z częstotliwością

65MHz sygnału od zera do paśmie kilkuset kHz). Sama demodulacja AM sygnału zespolonego jest już dość prosta. Najprostszy sposób na detekcję obwiedni to policzenie długości wektora IQ: A = sqrt (I^2 + Q^2). Jeśli nie chcesz liczyć kwadratów i pierwiastków, da się to policzyć algorytmem CORDIC.

Zanim zabierzesz się za implementację pobaw się w matlabie albo w gnuradio (można sobie "wyklikać" układ w grc).

pzdr. j.

Reply to
Jacek Radzikowski

Jacek Radzikowski snipped-for-privacy@spamer.die.die.die.piranet.org> napisał(a):

================

Jeżeli chodzi o częstotliwość modulującą , to chyba trochę przesadziłem "w dół". W związku z tym , do decymacji wydaje mi się należy podchodzić dość ostrożnie. Ale nie w tym rzecz.. Wróćmy do samego algorytmu demodulacji. Przypuśćmy , że sygnał modulujący jest postaci x1(1)=A*sin(w*t) , nośna jest postaci x2(t)=B*sin(w0*t) , wobec tego sygnał odebrany ma postać y(t)=C*sin(w*t)*sin(w0*t). W/g metody , którą podajesz otrzymujemy po zmieszaniu : I(t)=D*sin(w*t)*(sin(w0*t))^2 , Q(t)=D*sin(w*t)*sin(w0*t)*cos(w0*t) . Nietrudno udowodnić , że sqrt(I^2+Q^2)=D*y(t). No i niestety jestem w punkcie wyjścia. Gdzie tu jest "haczyk" ??

Pozdrawiam ,

MH

Reply to
MH

"Haczyk" tkwi w rozwinięciu (sin(w0*t))^2 i sin(w0*t)*cos(w0*t) (co da da stałą i funkcję 2*w0*t) i przepuszczeniu przez filtr dolnoprzepustowy, co wyzeruje wyraz zależny od 2*w0*t. Choć jak tak sobie na szybko przeliczyłem, to wychodzi że samo sprowadzenie do pasma podstawowego i odfiltrowanie da nam E*sin(w*t). Po policzeniu długości wychodzi F*|sin(w*t)|.

pzdr. j.

Reply to
Jacek Radzikowski

Zależy od szczegółów. Jeśli wiesz, że twój sygnał jest jedynym i poza tym nie ma żadnego obcego syfu, to sprawa jest całkiem prosta. Wystarczy zmierzyć chwilową amplitudę czegokolwiek co dostajesz, czyli kwadrat lub wart. bezwzgl. wpuścić na najprymitywniejszy lowpass.

Jak potrzebujesz wybrać twój kanał spośród innych, to już Jacek napisał, specjalnie prościej nie będzie. WP

Reply to
WP

WP snipped-for-privacy@gmail.com napisał(a):

=================

Chyba z grubsz zaczynam kojarzyć. Podziękowania dla Ciebie i Jacka. Pozostaje zaprojektowanie LPF. Rozsądnym wydaje się FIR (??). Czy o stałych współczynnikach będzie OK?? Ilość "tapsów" wydaje mi się należy ustalić empirycznie. Będę to implementował w FPGA , więc mam dosyć dużo swobody.

Pozdrawiam ,

MH

Reply to
MH

Poczytaj o filtrach grzebieniowych (cascaded integrator-comb filter - CIC). Prostsze w implementacji i łatwo zintergrować z decymatorem (hasło go googlania: decimating cic filter)

pzdr. j.

Reply to
Jacek Radzikowski

Jacek Radzikowski snipped-for-privacy@spamer.die.die.die.piranet.org> napisał(a):

============

Na potwierdzenie tego o czym pisałeś w poprzednim poście znalazłem :

formatting link
Odn. demodulacji AM , znalazłem metodę z wykorzystaniem transf. Hilberta. Jednak "na dzień dobry" wypróbuję Twoją propozycję.

Pozdrawiam ,

MH

Reply to
MH

Jak na FPGA to najprościej będzie chyba policzyć CORDICem.

j.

Reply to
Jacek Radzikowski

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.