discuss-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Discuss-gnuradio] first attempt at gnuradio - ssb phasing demod


From: Matteo Campanella
Subject: [Discuss-gnuradio] first attempt at gnuradio - ssb phasing demod
Date: Sat, 04 Mar 2006 18:49:25 +0100

Hello, I have made my first attempt at gnuradio and usrp today, trying
to get a phasing ssb demod - what follows is what I got, any suggestion
would be more than welcome. The demod is designed as a class to be
istantiated by a gui (i am using a modified version of usrp_wfm_rcv
gui). Right now the only sideband supported is LSB. Tested with the
basic rx and my 40m vertical attached, it behaves nicely.

ciao
Matteo

#!/usr/bin/env python

from gnuradio import gr, gru
from gnuradio import audio
from gnuradio import usrp

class ssb_phasing_demod:
    def __init__(self,gui):
        self.freq=gui.freq
        self.usrp_decim=gui.decim
        self.usrp_center=gui.center
        self.rf_sample_rate = 64000000 / self.usrp_decim
        self.af_sample_rate = 32000
        self.fir_decimation = self.rf_sample_rate / self.af_sample_rate
        self.fg=gui
     
    def set_freq(self,freq):
        self.freq=freq
        self.xlate_filt.set_center_freq(self.usrp_center - ( self.freq -
self.tune_offset ))
        return True
        
    def set_center(self,center):
        self.src.set_rx_freq(0,-self.usrp_center)
        self.tune_offset = -self.usrp_center - self.src.rx_freq(0)
        self.xlate_filt.set_center_freq(self.usrp_center - ( self.freq -
self.tune_offset ))
        return True
    
    def set_gain(self,gain):
        self.src.set_pga(0,gain)
        
    def build_graph (self):
        self.src = usrp.source_c(0,self.usrp_decim)
        mux = gru.hexint(0xf0f0f0f0)
        self.src.set_nchannels(1)
        self.src.set_pga(0,0)
        self.src.set_mux(mux)
        self.src.set_rx_freq(0,-self.usrp_center)
        self.tune_offset = -self.usrp_center - self.src.rx_freq(0)
    
        self.rf_LO = self.usrp_center - ( self.freq - self.tune_offset )
    
        xlate_taps = gr.firdes.low_pass ( \
            1.0, self.rf_sample_rate, 20e3, 10e3,
gr.firdes.WIN_HAMMING )
        self.xlate_filt = gr.freq_xlating_fir_filter_ccf ( \
            self.fir_decimation, xlate_taps, self.rf_LO,
self.rf_sample_rate )
        
        hilb_taps = gr.firdes.hilbert(199)
        self.hilb_filt = gr.filter_delay_fc(hilb_taps)
        
        self.split = gr.complex_to_float()
        
        bandpass_taps = gr.firdes.band_pass( \
           1.0, self.af_sample_rate, 300, 3300, 200,
gr.firdes.WIN_HAMMING)
        self.bandpass_filt = gr.fir_filter_ccf (1,bandpass_taps)
        
        self.split1 = gr.complex_to_float()
        
        self.sum = gr.add_ff()
        
        self.volume_control = gr.multiply_const_ff(0)
        
        self.out = audio.sink(self.af_sample_rate)
        
        self.fg.connect(self.src,self.xlate_filt)
        self.fg.connect(self.xlate_filt,self.split)
        self.fg.connect((self.split,0),(self.hilb_filt,0))
        self.fg.connect((self.split,1),(self.hilb_filt,1))        
        self.fg.connect(self.hilb_filt,self.bandpass_filt)
        self.fg.connect(self.bandpass_filt,self.split1)
        self.fg.connect((self.split1,0),(self.sum,0))
        self.fg.connect((self.split1,1),(self.sum,1))
        self.fg.connect(self.sum,self.volume_control)
        self.fg.connect(self.volume_control,self.out)







reply via email to

[Prev in Thread] Current Thread [Next in Thread]