Odbiornik SDR - "samoróbka" - Wersja do druku +- HomeMade (http://sp-hm.pl) +-- Dział: Urządzenia nadawczo odbiorcze KF (/forum-62.html) +--- Dział: Urządzenia i oprogramowanie SDR (/forum-68.html) +--- Wątek: Odbiornik SDR - "samoróbka" (/thread-2869.html) Strony: 1 2 |
RE: Odbiornik SDR - "samoróbka" - SQ6QV - 03-05-2017 23:25 (16-12-2016 10:37)SQ2RUU napisał(a): Mam do kolegów pytanie ( wiem - lamerskie...) gdzie można znaleźć opisy algorytmów SDR . Niestety google nic nie podpowiada. Jak pozbyć się "lustrzanych częstotliwości" po detektorze ? Zanim zaczniesz budować... może najpierw się pobaw. zobacz to repozytorium https://github.com/simonyiszk/csdr Jest tam oprogramowanie które blok po bloku robi całą potrzebną obróbkę. przykładowo ta komenda to demodulacja SSB rtl_sdr -s 2400000 -f 145000000 -g 20 - | csdr convert_u8_f | csdr shift_addition_cc `python -c "print float(145000000-144400000)/2400000"` | csdr fir_decimate_cc 50 0.005 HAMMING | csdr bandpass_fir_fft_cc 0 0.1 0.05 | csdr realpart_cf | csdr agc_ff | csdr limit_ff | csdr convert_f_s16 | mplayer -cache 1024 -quiet -rawaudio samplesize=2:channels=1:rate=48000 -demuxer rawaudio - z tego można się bardzo wiele nauczyć, a bawiąc się linią komend można eksperymentować: rtl_sdr -s 2400000 -f 145000000 = pobierz z RTLSDR 2.4 mln sampli /sek z częstotlwością środkową 145Mhz - wypadają z tego sample IQ. csdr convert_u8_f = zamień dane unsigned 8-bit na float (czyli bajt na liczbę zmiennoprzecinkową csdr shift_addition_cc - przesuwa częstotliwość środkową sygnału - tutaj shift_addition_cc `python -c "print float(145000000-144400000)/2400000"` czyli na 144.4Mhz csdr fir_decimate_cc 50 0.005 HAMMING = to jest filtr dolnoprzepustowy wraz ze zmianą częstotliwości samplowania, 2400000 sampli /50 = 48000 sampli na sekundę. Filtr tnie na 12khz csdr bandpass_fir_fft_cc 0 0.1 0.05 = to filtr pasmowy - wycina pasmo pomiędzy 0khz a 0.1*48khz = czyli pozostaje pasmo 0-4800Hz to co zostanie jest wrzucane na te bloki - które sprowadzają sygnał do domeny rzeczywistej, robią AGC i wyjście audio csdr realpart_cf | csdr agc_ff | csdr limit_ff | csdr convert_f_s16 | mplayer -------------------------- Jak pozbyć się "lustrzanych częstotliwości" po detektorze ? tnie je filtr cyfrowy na sygnale kwadraturowym Może łatwiej to będzie wytłumaczyć na przykładzie nadawania https://github.com/ha7ilm/rpitx-app-note zobacz różnicę pomiędzy "generate LSB i generate USB" csdr dsb_fc | csdr bandpass_fir_fft_cc -0.1 0 0.01 csdr dsb_fc | csdr bandpass_fir_fft_cc 0 0.1 0.01 czyli generuj DSB, a potem filtr przepuszcza jedną lub drugą wstęgę - cała reszta jest taka sama. ----------- Także w teorii to jest skomplikowane, Ale gotowe bloki upraszczają to wszystko bardzo. Teraz sobie zdałem sprawę, że chyba nie o to koledze chodziło, tylko o to: http://stackoverflow.com/questions/3780921/dsp-converting-a-sampled-signal-from-real-samples-to-complex-samples-and-vice co robi funkcja: csdr shift_addition_fc https://github.com/simonyiszk/csdr/blob/master/libcsdr_gpl.c Późno już |