def __init__(self, decim=16, N_id_2=0, avg_frames=1, freq_corr=0, N_id_1=134, file_name="/home/user/git/gr-lte/gr-lte/test/traces/lte_02_796m_30720k_frame.cfile"): gr.top_block.__init__(self, "Pss Corr Block Gui") ################################################## # Parameters ################################################## self.decim = decim self.N_id_2 = N_id_2 self.avg_frames = avg_frames self.freq_corr = freq_corr self.N_id_1 = N_id_1 self.file_name = file_name ################################################## # Variables ################################################## self.vec_half_frame = vec_half_frame = 30720*5/decim self.transition_width = transition_width = 100e3 self.samp_rate = samp_rate = 30720e3/decim self.cutoff_freq = cutoff_freq = 550e3 ################################################## # Blocks ################################################## self.gr_vector_sink_sss10 = gr.vector_sink_i(1) self.gr_vector_sink_sss0 = gr.vector_sink_i(1) self.gr_vector_sink_pss = gr.vector_sink_i(1) self.gr_throttle_0 = gr.throttle(gr.sizeof_gr_complex*1, samp_rate*decim) self.gr_null_sink_0 = gr.null_sink(gr.sizeof_gr_complex*1) self.gr_file_source_0 = gr.file_source(gr.sizeof_gr_complex*1, file_name, False) self.fir_filter_xxx_0 = filter.fir_filter_ccc(decim, (firdes.low_pass(1, decim*samp_rate, cutoff_freq, transition_width))) self.any_0_0_0 = sss_corr(N_id_1,N_id_2,False, decim, avg_frames,freq_corr) self.any_0_0 = sss_corr(N_id_1,N_id_2,True, decim, avg_frames,freq_corr) self.any_0 = pss_corr(N_id_2, decim, avg_frames*2,freq_corr) ################################################## # Connections ################################################## self.connect((self.any_0_0_0, 0), (self.gr_vector_sink_sss10, 0)) self.connect((self.fir_filter_xxx_0, 0), (self.any_0_0_0, 0)) self.connect((self.any_0_0, 0), (self.gr_vector_sink_sss0, 0)) self.connect((self.fir_filter_xxx_0, 0), (self.any_0_0, 0)) self.connect((self.any_0, 0), (self.gr_vector_sink_pss, 0)) self.connect((self.fir_filter_xxx_0, 0), (self.any_0, 0)) self.connect((self.gr_throttle_0, 0), (self.fir_filter_xxx_0, 0)) self.connect((self.gr_file_source_0, 0), (self.gr_throttle_0, 0)) self.connect((self.gr_file_source_0, 0), (self.gr_null_sink_0, 0))
def __init__(self, file_name, decim=16, avg_frames=1, file_decim=1, freq_corr=0, sstart=0, dump=None): ################################################## # Parameters ################################################## self.decim = decim self.avg_frames = avg_frames self.freq_corr = freq_corr self.file_name = file_name self.dump = dump self.sstart = sstart ################################################## # Variables ################################################## self.N_id_2s = range(0,3) self.N_id_1s = range(0,168) self.slot_0_10s = range(0,2) #self.N_id_2s = [0] #range(0,3) #self.N_id_1s = [134] #range(0,168) #self.slot_0_10s = [0] #range(0,2) self.vec_half_frame = vec_half_frame = 30720*5/decim self.samp_rate = samp_rate = 30720e3/decim self.cutoff_freq = cutoff_freq = 550e3 self.transition_width = transition_width = 100e3 self.fft_size = 2048/self.decim self.N_re = 62 self.snum = (self.avg_frames+1)*307200/file_decim ################################################## # Generate input vector source ################################################## if None != file_name: logging.debug("Reading from file: " + file_name) file_source = gr.file_source(gr.sizeof_gr_complex*1, file_name, False) else: N_id_1=134 N_id_2=0 logging.debug("Generating DL sync signals for cell ID {}".format(3*N_id_1+N_id_2)) file_source = lte_dl_ss_source(decim=file_decim,N_id_1=N_id_1,N_id_2=N_id_2,frames=self.avg_frames) skiphead_0 = gr.skiphead(gr.sizeof_gr_complex, self.sstart) head_0 = gr.head(gr.sizeof_gr_complex, self.snum) decim_lowpass = filter.fir_filter_ccc(decim/file_decim, (firdes.low_pass(1, decim/file_decim*samp_rate, cutoff_freq, transition_width))) sink = gr.vector_sink_c(); top = gr.top_block("input reader graph") top.connect(file_source, skiphead_0, head_0, decim_lowpass, sink) if dump != None: top.connect(decim_lowpass, gr.file_sink(gr.sizeof_gr_complex, self.dump + "_input.cfile")) top.run() self.buffer = sink.data() logging.debug("No. samples to process: {}".format(len(self.buffer))) if -1 == self.avg_frames: self.avg_frames = int(floor(len(self.buffer) / vec_half_frame / 2)) logging.debug("Config: decim {}, avg_frames {}, freq_corr {}".format(self.decim, self.avg_frames, self.freq_corr)) self.source = gr.vector_source_c(self.buffer) # create pss flow graph self.pss_top = gr.top_block("pss corr graph") self.pss_corr = pss_corr(0, self.decim, self.avg_frames*2, self.freq_corr, self.dump) self.pss_sink = gr.vector_sink_f() self.pss_top.connect(self.source, self.pss_corr, self.pss_sink) # create sss flow graphs self.sss_corr = sss_corr2(self.decim, self.fft_size, self.N_re, self.avg_frames, self.dump, self.N_id_1s, self.slot_0_10s)
#!/usr/bin/python from pss_source import * from sss_source import * from pss_corr import * #pss = pss_source_fd(0) #pss = pss_source_td(0) gen_sss_td(0, 134, True) pss = gen_pss_td(2, 128) #print pss.get_data() print pss.get_data_conj_rev() pss_corr(0, 16, 1)