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ń ?!
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).
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" ??
"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)|.
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
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.
Poczytaj o filtrach grzebieniowych (cascaded integrator-comb filter - CIC). Prostsze w implementacji i łatwo zintergrować z decymatorem (hasło go googlania: decimating cic filter)
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.