def __init__(self): gr.hier_block2.__init__(self, "decode_pbch_vcvf", gr.io_signature(3, 3, gr.sizeof_gr_complex*240), # Input signature gr.io_signature(1, 1, gr.sizeof_float*120)) # Output signature self.message_port_register_hier_out("cell_id") # Define blocks and connect them style = "tx_diversity" self.pre_decoder_1ant = lte.pre_decoder_vcvc(1, style) self.pre_decoder_2ant = lte.pre_decoder_vcvc(2, style) self.demapper_1ant = lte.layer_demapper_vcvc(1, style) self.demapper_2ant = lte.layer_demapper_vcvc(2, style) self.interleave = gr.interleave(240*gr.sizeof_gr_complex) self.demod = lte.qpsk_soft_demod_vcvf() self.descr = lte.descrambling_vfvf() self.msg_connect(self, "cell_id", self.descr, "cell_id") self.connect( (self, 0) , (self.pre_decoder_1ant, 0) ) self.connect( (self, 1) , (self.pre_decoder_1ant, 1) ) self.connect( (self, 0) , (self.pre_decoder_2ant, 0) ) self.connect( (self, 1) , (self.pre_decoder_2ant, 1) ) self.connect( (self, 2) , (self.pre_decoder_2ant, 2) ) self.connect( self.pre_decoder_1ant, self.demapper_1ant, (self.interleave, 0) ) self.connect( self.pre_decoder_2ant, self.demapper_2ant, (self.interleave, 1) ) self.connect(self.interleave, self.descr, self)
def setUp(self): self.tb = gr.top_block() self.src = gr.vector_source_f([0.0] * 480, False, 480) self.descr = lte_swig.descrambling_vfvf() self.snk = gr.vector_sink_f(120) self.tb.connect(self.src, self.descr, self.snk)
def setUp(self): self.tb = gr.top_block() fftl = 2048 N_rb_dl = 6 # These blocks are just "dummy" blocks for this QA self.eq = lte.linear_OFDM_estimator_vcvc(N_rb_dl) self.demux = lte.pbch_demux_vcvc(N_rb_dl) self.descr = lte.descrambling_vfvf() self.daemon = lte.cell_id_daemon(self.eq, self.demux, self.descr) # Source 'n' Sink data = range(2 * fftl) self.src = gr.vector_source_c(data, False, fftl) self.snk = gr.vector_sink_c(fftl) self.tagsnk = gr.tag_debug(gr.sizeof_gr_complex * fftl, "SYMBOL TAG") # This is the UUT self.sss = lte.hier_sss_sync2_vcvc(self.daemon, fftl) self.tb.connect(self.src, self.sss, self.snk) self.tb.connect(self.sss, self.tagsnk)
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.fftlen = fftlen = 512 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.eq = lte.linear_OFDM_equalizer_hier_vcvc(N_rb_dl) self.descr = lte.descrambling_vfvf() self.demux = lte.pbch_demux_vcvc(N_rb_dl) self.daemon = lte.cell_id_daemon(self.eq.eq, self.demux, self.descr) self.qtgui_sink_x_0 = qtgui.sink_c( 1024, #fftsize firdes.WIN_BLACKMAN_hARRIS, #wintype 0, #fc samp_rate, #bw "QT GUI Plot", #name True, #plotfreq True, #plotwaterfall True, #plottime True, #plotconst ) self._qtgui_sink_x_0_win = sip.wrapinstance(self.qtgui_sink_x_0.pyqwidget(), Qt.QWidget) self.top_layout.addWidget(self._qtgui_sink_x_0_win) self.lte_viterbi_vfvb_0 = lte.viterbi_vfvb() self.lte_remove_cp_cvc_1 = lte.remove_cp_cvc(fftlen) self.lte_rate_unmatch_vff_0 = lte.rate_unmatch_vff() self.lte_qpsk_soft_demod_vcvf_0 = lte.qpsk_soft_demod_vcvf() self.lte_pss_sync_hier_cc_0 = lte.pss_sync_hier_cc(fftlen) self.lte_pre_decoder_vcvc_0_0 = lte.pre_decoder_vcvc(2, style) self.lte_pre_decoder_vcvc_0 = lte.pre_decoder_vcvc(1, style) self.lte_mib_unpack_vb_0 = lte.mib_unpack_vb() self.lte_layer_demapper_vcvc_0_0 = lte.layer_demapper_vcvc(2, style) self.lte_layer_demapper_vcvc_0 = lte.layer_demapper_vcvc(1, style) self.lte_hier_sss_sync_cc_0 = lte.hier_sss_sync_cc(self.daemon, 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_crc_calculator_vbvb_0 = lte.crc_calculator_vbvb() self.lte_cp_time_freq_sync_cc_0 = lte.cp_time_freq_sync_cc(fftlen) self.gr_vector_to_stream_0 = gr.vector_to_stream(gr.sizeof_gr_complex*1, 240) self.gr_throttle_0 = gr.throttle(gr.sizeof_gr_complex*1, samp_rate) self.gr_interleave_0 = gr.interleave(gr.sizeof_gr_complex*240) self.gr_file_source_0 = gr.file_source(gr.sizeof_gr_complex*1, "/home/demel/Dokumente/Messungen_31_10_2012/samples_12.5MSps_20dB.iq", False) self.fft_vxx_0 = fft.fft_vcc(fftlen, True, (window.rectangular(fftlen)), False, 1) self.blks2_rational_resampler_xxx_0 = blks2.rational_resampler_ccc( interpolation=interp_val, decimation=1250, taps=None, fractional_bw=None, ) ################################################## # Connections ################################################## self.connect((self.gr_file_source_0, 0), (self.blks2_rational_resampler_xxx_0, 0)) self.connect((self.blks2_rational_resampler_xxx_0, 0), (self.gr_throttle_0, 0)) self.connect((self.lte_hier_freq_estimate_cc_0, 0), (self.lte_hier_sss_sync_cc_0, 0)) self.connect((self.lte_pss_sync_hier_cc_0, 0), (self.lte_hier_freq_estimate_cc_0, 0)) self.connect((self.lte_cp_time_freq_sync_cc_0, 0), (self.lte_pss_sync_hier_cc_0, 0)) self.connect((self.gr_throttle_0, 0), (self.lte_cp_time_freq_sync_cc_0, 0)) self.connect((self.lte_hier_sss_sync_cc_0, 0), (self.lte_remove_cp_cvc_1, 0)) self.connect((self.fft_vxx_0, 0), (self.lte_extract_occupied_tones_vcvc_0, 0)) self.connect((self.lte_remove_cp_cvc_1, 0), (self.fft_vxx_0, 0)) self.connect((self.lte_extract_occupied_tones_vcvc_0, 0), (self.eq, 0)) self.connect((self.lte_pre_decoder_vcvc_0, 0), (self.lte_layer_demapper_vcvc_0, 0)) self.connect((self.eq, 0), (self.demux, 0)) self.connect((self.eq, 1), (self.demux, 1)) self.connect((self.eq, 2), (self.demux, 2)) self.connect((self.lte_pre_decoder_vcvc_0_0, 0), (self.lte_layer_demapper_vcvc_0_0, 0)) self.connect((self.lte_layer_demapper_vcvc_0_0, 0), (self.gr_interleave_0, 1)) self.connect((self.demux, 1), (self.lte_pre_decoder_vcvc_0_0, 1)) self.connect((self.demux, 1), (self.lte_pre_decoder_vcvc_0, 1)) self.connect((self.demux, 0), (self.lte_pre_decoder_vcvc_0, 0)) self.connect((self.demux, 2), (self.lte_pre_decoder_vcvc_0_0, 2)) self.connect((self.demux, 0), (self.lte_pre_decoder_vcvc_0_0, 0)) self.connect((self.lte_qpsk_soft_demod_vcvf_0, 0), (self.descr, 0)) self.connect((self.gr_interleave_0, 0), (self.lte_qpsk_soft_demod_vcvf_0, 0)) self.connect((self.lte_layer_demapper_vcvc_0, 0), (self.gr_interleave_0, 0)) self.connect((self.descr, 0), (self.lte_rate_unmatch_vff_0, 0)) self.connect((self.lte_crc_calculator_vbvb_0, 1), (self.lte_mib_unpack_vb_0, 1)) self.connect((self.lte_crc_calculator_vbvb_0, 0), (self.lte_mib_unpack_vb_0, 0)) self.connect((self.lte_viterbi_vfvb_0, 0), (self.lte_crc_calculator_vbvb_0, 0)) self.connect((self.lte_rate_unmatch_vff_0, 0), (self.lte_viterbi_vfvb_0, 0)) self.connect((self.gr_interleave_0, 0), (self.gr_vector_to_stream_0, 0)) self.connect((self.gr_vector_to_stream_0, 0), (self.qtgui_sink_x_0, 0))
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.eq = lte.linear_OFDM_estimator_hier_vcvc(N_rb_dl) self.descr = lte.descrambling_vfvf() self.demux = lte.pbch_demux_vcvc(N_rb_dl) self.daemon = lte.cell_id_daemon(self.eq.eq, self.demux, self.descr) self.lte_viterbi_vfvb_0 = lte.viterbi_vfvb() self.lte_remove_cp_cvc_1 = lte.remove_cp_cvc(fftlen) self.lte_rate_unmatch_vff_0 = lte.rate_unmatch_vff() self.lte_qpsk_soft_demod_vcvf_0 = lte.qpsk_soft_demod_vcvf() self.lte_pre_decoder_vcvc_0_0 = lte.pre_decoder_vcvc(2, style) self.lte_pre_decoder_vcvc_0 = lte.pre_decoder_vcvc(1, style) self.lte_mib_unpack_vb_0 = lte.mib_unpack_vb() self.lte_layer_demapper_vcvc_0_0 = lte.layer_demapper_vcvc(2, style) self.lte_layer_demapper_vcvc_0 = lte.layer_demapper_vcvc(1, style) self.lte_hier_sss_sync_cc_0 = lte.hier_sss_sync_cc(self.daemon, 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_crc_calculator_vbvb_0 = lte.crc_calculator_vbvb() self.lte_cp_time_freq_sync_cc_0 = lte.cp_time_freq_sync_cc(fftlen) self.gr_throttle_0 = gr.throttle(gr.sizeof_gr_complex*1, samp_rate) self.gr_interleave_0 = gr.interleave(gr.sizeof_gr_complex*240) self.gr_file_source_0 = gr.file_source(gr.sizeof_gr_complex*1, "/home/demel/Dokumente/Messungen/Messung_LTE_2012-05-23_12:47:32.dat", False) self.fft_vxx_0 = fft.fft_vcc(fftlen, True, (window.rectangular(fftlen)), False, 1) self.blks2_rational_resampler_xxx_0 = blks2.rational_resampler_ccc( interpolation=interp_val, decimation=1000, taps=None, fractional_bw=None, ) ################################################## # Connections ################################################## self.connect((self.gr_file_source_0, 0), (self.blks2_rational_resampler_xxx_0, 0)) self.connect((self.blks2_rational_resampler_xxx_0, 0), (self.gr_throttle_0, 0)) self.connect((self.lte_hier_freq_estimate_cc_0, 0), (self.lte_hier_sss_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_sss_sync_cc_0, 0), (self.lte_remove_cp_cvc_1, 0)) self.connect((self.fft_vxx_0, 0), (self.lte_extract_occupied_tones_vcvc_0, 0)) self.connect((self.lte_remove_cp_cvc_1, 0), (self.fft_vxx_0, 0)) self.connect((self.lte_pre_decoder_vcvc_0, 0), (self.lte_layer_demapper_vcvc_0, 0)) self.connect((self.lte_pre_decoder_vcvc_0_0, 0), (self.lte_layer_demapper_vcvc_0_0, 0)) self.connect((self.lte_layer_demapper_vcvc_0_0, 0), (self.gr_interleave_0, 1)) self.connect((self.demux, 1), (self.lte_pre_decoder_vcvc_0_0, 1)) self.connect((self.demux, 1), (self.lte_pre_decoder_vcvc_0, 1)) self.connect((self.demux, 0), (self.lte_pre_decoder_vcvc_0, 0)) self.connect((self.demux, 2), (self.lte_pre_decoder_vcvc_0_0, 2)) self.connect((self.demux, 0), (self.lte_pre_decoder_vcvc_0_0, 0)) self.connect((self.lte_qpsk_soft_demod_vcvf_0, 0), (self.descr, 0)) self.connect((self.gr_interleave_0, 0), (self.lte_qpsk_soft_demod_vcvf_0, 0)) self.connect((self.lte_layer_demapper_vcvc_0, 0), (self.gr_interleave_0, 0)) self.connect((self.descr, 0), (self.lte_rate_unmatch_vff_0, 0)) self.connect((self.lte_crc_calculator_vbvb_0, 1), (self.lte_mib_unpack_vb_0, 1)) self.connect((self.lte_crc_calculator_vbvb_0, 0), (self.lte_mib_unpack_vb_0, 0)) self.connect((self.lte_viterbi_vfvb_0, 0), (self.lte_crc_calculator_vbvb_0, 0)) self.connect((self.lte_rate_unmatch_vff_0, 0), (self.lte_viterbi_vfvb_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_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.eq, 0)) self.connect((self.eq, 0), (self.demux, 0)) self.connect((self.eq, 1), (self.demux, 1)) self.connect((self.eq, 2), (self.demux, 2))
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_viterbi_vfvb_0 = lte.viterbi_vfvb() self.lte_remove_cp_cvc_1 = lte.remove_cp_cvc(fftlen) self.lte_rate_unmatch_vff_0 = lte.rate_unmatch_vff() self.lte_qpsk_soft_demod_vcvf_0 = lte.qpsk_soft_demod_vcvf() self.lte_pre_decoder_vcvc_0_0 = lte.pre_decoder_vcvc(2, style) self.lte_pre_decoder_vcvc_0 = lte.pre_decoder_vcvc(1, style) self.lte_mib_unpack_vb_0 = lte.mib_unpack_vb() self.lte_layer_demapper_vcvc_0_0 = lte.layer_demapper_vcvc(2, style) self.lte_layer_demapper_vcvc_0 = lte.layer_demapper_vcvc(1, style) 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_crc_calculator_vbvb_0 = lte.crc_calculator_vbvb() 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/4) self.gr_interleave_0 = gr.interleave(gr.sizeof_gr_complex*240) 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) self.descr = lte.descrambling_vfvf() self.demux = lte.pbch_demux_vcvc(N_rb_dl) ################################################## # Connections ################################################## self.connect((self.lte_cp_time_freq_sync_cc_0, 0), (self.lte_hier_pss_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.gr_throttle_0, 0), (self.lte_cp_time_freq_sync_cc_0, 0)) self.connect((self.gr_file_source_0_0, 0), (self.gr_throttle_0, 0)) self.connect((self.fft_vxx_0, 0), (self.lte_extract_occupied_tones_vcvc_0, 0)) self.connect((self.lte_remove_cp_cvc_1, 0), (self.fft_vxx_0, 0)) self.connect((self.descr, 0), (self.lte_rate_unmatch_vff_0, 0)) self.connect((self.lte_qpsk_soft_demod_vcvf_0, 0), (self.descr, 0)) self.connect((self.demux, 2), (self.lte_pre_decoder_vcvc_0_0, 2)) self.connect((self.demux, 1), (self.lte_pre_decoder_vcvc_0_0, 1)) self.connect((self.demux, 0), (self.lte_pre_decoder_vcvc_0_0, 0)) self.connect((self.demux, 1), (self.lte_pre_decoder_vcvc_0, 1)) self.connect((self.demux, 0), (self.lte_pre_decoder_vcvc_0, 0)) self.connect((self.lte_channel_estimator_0, 2), (self.demux, 2)) self.connect((self.lte_channel_estimator_0, 1), (self.demux, 1)) self.connect((self.lte_channel_estimator_0, 0), (self.demux, 0)) self.connect((self.lte_extract_occupied_tones_vcvc_0, 0), (self.lte_channel_estimator_0, 0)) self.connect((self.lte_rate_unmatch_vff_0, 0), (self.lte_viterbi_vfvb_0, 0)) self.connect((self.lte_viterbi_vfvb_0, 0), (self.lte_crc_calculator_vbvb_0, 0)) self.connect((self.lte_crc_calculator_vbvb_0, 0), (self.lte_mib_unpack_vb_0, 0)) self.connect((self.lte_crc_calculator_vbvb_0, 1), (self.lte_mib_unpack_vb_0, 1)) self.connect((self.lte_layer_demapper_vcvc_0, 0), (self.gr_interleave_0, 0)) self.connect((self.gr_interleave_0, 0), (self.lte_qpsk_soft_demod_vcvf_0, 0)) self.connect((self.lte_layer_demapper_vcvc_0_0, 0), (self.gr_interleave_0, 1)) self.connect((self.lte_pre_decoder_vcvc_0_0, 0), (self.lte_layer_demapper_vcvc_0_0, 0)) self.connect((self.lte_pre_decoder_vcvc_0, 0), (self.lte_layer_demapper_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_hier_sss_sync_cc_1, 0), (self.lte_remove_cp_cvc_1, 0)) ################################################## # Asynch Message Connections ################################################## self.msg_connect(self.lte_hier_sss_sync_cc_1, "cell_id", self.demux, "cell_id") self.msg_connect(self.lte_hier_sss_sync_cc_1, "cell_id", self.descr, "cell_id") self.msg_connect(self.lte_hier_sss_sync_cc_1, "cell_id", self.lte_channel_estimator_0, "cell_id")