def setUp(self): self.tb = gr.top_block() self.pbch = lte.decode_pbch_vcvf() """ This hierarchical block consists of the following blocks lte.pre_decoder_vcvc(1, style) lte.pre_decoder_vcvc(2, style) lte.layer_demapper_vcvc(1, style) lte.layer_demapper_vcvc(2, style) gr.interleave(240*gr.sizeof_gr_complex) lte.qpsk_soft_demod_vcvf() lte.descrambling_vfvf() """ self.src0 = gr.vector_source_c([0] * 240, False, 240) self.src1 = gr.vector_source_c([0] * 240, False, 240) self.src2 = gr.vector_source_c([0] * 240, False, 240) self.snk = gr.vector_sink_f(120) self.tb.connect(self.src0, (self.pbch, 0)) self.tb.connect(self.src1, (self.pbch, 1)) self.tb.connect(self.src2, (self.pbch, 2)) self.tb.connect(self.pbch, self.snk)
def __init__(self): gr.top_block.__init__(self, "LTE flowgraph") ################################################## # Variables ################################################## self.fftlen = fftlen = 2048 self.cpl0 = cpl0 = 160*fftlen/2048 self.cpl = cpl = 144*fftlen/2048 self.slotl = slotl = 7*fftlen+6*cpl+cpl0 self.samp_rate = samp_rate = slotl/0.0005 self.style = style = "tx_diversity" self.interp_val = interp_val = int(samp_rate/1e4) self.N_rb_dl = N_rb_dl = 6 ################################################## # Blocks ################################################## self.lte_remove_cp_cvc_1 = lte.remove_cp_cvc(fftlen) self.lte_pbch_demux_vcvc_1 = lte.pbch_demux_vcvc(N_rb_dl) self.lte_mib_unpack_vb_0 = lte.mib_unpack_vb() self.lte_hier_sss_sync_cc_1 = lte.hier_sss_sync_cc(fftlen) self.lte_hier_pss_sync_cc_0 = lte.hier_pss_sync_cc(fftlen) self.lte_hier_freq_estimate_cc_0 = lte.hier_freq_estimate_cc(fftlen) self.lte_extract_occupied_tones_vcvc_0 = lte.extract_occupied_tones_vcvc(N_rb_dl,fftlen) self.lte_decode_pbch_vcvf_0 = lte.decode_pbch_vcvf() self.lte_decode_bch_vfvb_0 = lte.decode_bch_vfvb() self.lte_cp_time_freq_sync_cc_0 = lte.cp_time_freq_sync_cc(fftlen) self.lte_channel_estimator_0 = lte.channel_estimator(N_rb_dl) self.gr_throttle_0 = gr.throttle(gr.sizeof_gr_complex*1, samp_rate) self.gr_file_source_0_0 = gr.file_source(gr.sizeof_gr_complex*1, "/home/demel/gr-lte/data/Messung_Resampled_3072MSps.dat", False) self.fft_vxx_0 = fft.fft_vcc(fftlen, True, (window.rectangular(fftlen)), False, 1) ################################################## # Connections ################################################## self.connect((self.gr_file_source_0_0, 0), (self.gr_throttle_0, 0)) self.connect((self.lte_cp_time_freq_sync_cc_0, 0), (self.lte_hier_pss_sync_cc_0, 0)) self.connect((self.gr_throttle_0, 0), (self.lte_cp_time_freq_sync_cc_0, 0)) self.connect((self.lte_hier_pss_sync_cc_0, 0), (self.lte_hier_freq_estimate_cc_0, 0)) self.connect((self.lte_extract_occupied_tones_vcvc_0, 0), (self.lte_channel_estimator_0, 0)) self.connect((self.lte_decode_bch_vfvb_0, 0), (self.lte_mib_unpack_vb_0, 0)) self.connect((self.lte_decode_bch_vfvb_0, 1), (self.lte_mib_unpack_vb_0, 1)) self.connect((self.lte_decode_pbch_vcvf_0, 0), (self.lte_decode_bch_vfvb_0, 0)) self.connect((self.lte_pbch_demux_vcvc_1, 0), (self.lte_decode_pbch_vcvf_0, 0)) self.connect((self.lte_pbch_demux_vcvc_1, 1), (self.lte_decode_pbch_vcvf_0, 1)) self.connect((self.lte_pbch_demux_vcvc_1, 2), (self.lte_decode_pbch_vcvf_0, 2)) self.connect((self.lte_channel_estimator_0, 1), (self.lte_pbch_demux_vcvc_1, 1)) self.connect((self.lte_channel_estimator_0, 0), (self.lte_pbch_demux_vcvc_1, 0)) self.connect((self.lte_remove_cp_cvc_1, 0), (self.fft_vxx_0, 0)) self.connect((self.fft_vxx_0, 0), (self.lte_extract_occupied_tones_vcvc_0, 0)) self.connect((self.lte_hier_sss_sync_cc_1, 0), (self.lte_remove_cp_cvc_1, 0)) self.connect((self.lte_hier_freq_estimate_cc_0, 0), (self.lte_hier_sss_sync_cc_1, 0)) self.connect((self.lte_channel_estimator_0, 2), (self.lte_pbch_demux_vcvc_1, 2)) ################################################## # Asynch Message Connections ################################################## self.msg_connect(self.lte_hier_sss_sync_cc_1, "cell_id", self.lte_decode_pbch_vcvf_0, "cell_id") self.msg_connect(self.lte_hier_sss_sync_cc_1, "cell_id", self.lte_pbch_demux_vcvc_1, "cell_id") self.msg_connect(self.lte_hier_sss_sync_cc_1, "cell_id", self.lte_channel_estimator_0, "cell_id")
def __init__(self): gr.top_block.__init__(self, "LTE flowgraph") Qt.QWidget.__init__(self) self.setWindowTitle("LTE flowgraph") self.setWindowIcon(Qt.QIcon.fromTheme('gnuradio-grc')) self.top_scroll_layout = Qt.QVBoxLayout() self.setLayout(self.top_scroll_layout) self.top_scroll = Qt.QScrollArea() self.top_scroll.setFrameStyle(Qt.QFrame.NoFrame) self.top_scroll_layout.addWidget(self.top_scroll) self.top_scroll.setWidgetResizable(True) self.top_widget = Qt.QWidget() self.top_scroll.setWidget(self.top_widget) self.top_layout = Qt.QVBoxLayout(self.top_widget) self.top_grid_layout = Qt.QGridLayout() self.top_layout.addLayout(self.top_grid_layout) ################################################## # Variables ################################################## self.fft_len = fft_len = 2048 self.cpl0 = cpl0 = 160*fft_len/2048 self.cpl = cpl = 144*fft_len/2048 self.cell_id = cell_id = 364 self.N_rb_dl = N_rb_dl = 50 self.slotl = slotl = 7*fft_len+6*cpl+cpl0 self.frame_pilots_1 = frame_pilots_1 = lte.frame_pilot_value_and_position(N_rb_dl, cell_id, 1, 1) self.frame_pilots_0 = frame_pilots_0 = lte.frame_pilot_value_and_position(N_rb_dl, cell_id, 1, 0) self.tag_key = tag_key = "symbol" self.samp_rate = samp_rate = int(slotl/0.0005) self.pilot_symbols = pilot_symbols = frame_pilots_0[1] self.pilot_carriers_p1 = pilot_carriers_p1 = frame_pilots_1[0] self.pilot_carriers_p0 = pilot_carriers_p0 = frame_pilots_0[0] ################################################## # Blocks ################################################## self.lte_source_c_0 = lte_source_c( samp_rate=samp_rate, ) self.lte_remove_cp_cvc_0 = lte.remove_cp_cvc(fft_len, tag_key) self.lte_pbch_demux_vcvc_1 = lte.pbch_demux_vcvc(N_rb_dl) self.lte_mib_unpack_vb_0 = lte.mib_unpack_vb() self.lte_hier_sss_sync_cc_1 = lte.hier_sss_sync_cc(fft_len) self.lte_hier_pss_sync_cc_0 = lte.hier_pss_sync_cc(fft_len) self.lte_hier_freq_estimate_cc_0 = lte.hier_freq_estimate_cc(fft_len) self.lte_extract_occupied_tones_vcvc_0 = lte.extract_occupied_tones_vcvc(N_rb_dl,fft_len) self.lte_estimator_parameterizer_msg_0_0 = lte.estimator_parameterizer_msg("cell_id", "pilots", N_rb_dl, 1) self.lte_estimator_parameterizer_msg_0 = lte.estimator_parameterizer_msg("cell_id", "pilots", N_rb_dl, 0) self.lte_decode_pcfich_vcm_0 = lte.decode_pcfich_vcm(N_rb_dl, tag_key, "subframe", "cell_id", "N_ant", "CFI") self.lte_decode_pbch_vcvf_0 = lte.decode_pbch_vcvf() self.lte_decode_bch_hier_0 = lte_decode_bch_hier() self.lte_cp_time_freq_sync_cc_0 = lte.cp_time_freq_sync_cc(fft_len) self.lte_channel_estimator_ant_1 = lte.channel_estimator_vcvc(12*N_rb_dl, tag_key, "pilots", pilot_carriers_p1, pilot_symbols) self.lte_channel_estimator_ant_0 = lte.channel_estimator_vcvc(12*N_rb_dl, tag_key, "pilots", pilot_carriers_p0, pilot_symbols) self.fft_vxx_0 = fft.fft_vcc(fft_len, True, (window.rectangular(fft_len)), False, 1) ################################################## # Connections ################################################## self.connect((self.lte_extract_occupied_tones_vcvc_0, 0), (self.lte_pbch_demux_vcvc_1, 0)) self.connect((self.fft_vxx_0, 0), (self.lte_extract_occupied_tones_vcvc_0, 0)) self.connect((self.lte_hier_freq_estimate_cc_0, 0), (self.lte_hier_sss_sync_cc_1, 0)) self.connect((self.lte_pbch_demux_vcvc_1, 1), (self.lte_decode_pbch_vcvf_0, 1)) self.connect((self.lte_pbch_demux_vcvc_1, 2), (self.lte_decode_pbch_vcvf_0, 2)) self.connect((self.lte_remove_cp_cvc_0, 0), (self.fft_vxx_0, 0)) self.connect((self.lte_hier_sss_sync_cc_1, 0), (self.lte_remove_cp_cvc_0, 0)) self.connect((self.lte_hier_pss_sync_cc_0, 0), (self.lte_hier_freq_estimate_cc_0, 0)) self.connect((self.lte_cp_time_freq_sync_cc_0, 0), (self.lte_hier_pss_sync_cc_0, 0)) self.connect((self.lte_pbch_demux_vcvc_1, 0), (self.lte_decode_pbch_vcvf_0, 0)) self.connect((self.lte_source_c_0, 0), (self.lte_cp_time_freq_sync_cc_0, 0)) self.connect((self.lte_decode_pbch_vcvf_0, 0), (self.lte_decode_bch_hier_0, 0)) self.connect((self.lte_decode_bch_hier_0, 0), (self.lte_mib_unpack_vb_0, 0)) self.connect((self.lte_decode_bch_hier_0, 1), (self.lte_mib_unpack_vb_0, 1)) self.connect((self.lte_extract_occupied_tones_vcvc_0, 0), (self.lte_channel_estimator_ant_0, 0)) self.connect((self.lte_extract_occupied_tones_vcvc_0, 0), (self.lte_channel_estimator_ant_1, 0)) self.connect((self.lte_channel_estimator_ant_0, 0), (self.lte_pbch_demux_vcvc_1, 1)) self.connect((self.lte_channel_estimator_ant_1, 0), (self.lte_pbch_demux_vcvc_1, 2)) self.connect((self.lte_channel_estimator_ant_0, 0), (self.lte_decode_pcfich_vcm_0, 1)) self.connect((self.lte_channel_estimator_ant_1, 0), (self.lte_decode_pcfich_vcm_0, 2)) self.connect((self.lte_extract_occupied_tones_vcvc_0, 0), (self.lte_decode_pcfich_vcm_0, 0)) ################################################## # Asynch Message Connections ################################################## self.msg_connect(self.lte_hier_sss_sync_cc_1, "cell_id", self.lte_pbch_demux_vcvc_1, "cell_id") self.msg_connect(self.lte_hier_sss_sync_cc_1, "cell_id", self.lte_decode_pbch_vcvf_0, "cell_id") self.msg_connect(self.lte_estimator_parameterizer_msg_0, "pilots", self.lte_channel_estimator_ant_0, "pilots") self.msg_connect(self.lte_estimator_parameterizer_msg_0_0, "pilots", self.lte_channel_estimator_ant_1, "pilots") self.msg_connect(self.lte_hier_sss_sync_cc_1, "cell_id", self.lte_estimator_parameterizer_msg_0, "cell_id") self.msg_connect(self.lte_hier_sss_sync_cc_1, "cell_id", self.lte_estimator_parameterizer_msg_0_0, "cell_id") self.msg_connect(self.lte_hier_sss_sync_cc_1, "cell_id", self.lte_decode_pcfich_vcm_0, "cell_id") self.msg_connect(self.lte_mib_unpack_vb_0, "N_ant", self.lte_decode_pcfich_vcm_0, "N_ant")