Exemplo n.º 1
0
 def setUp (self):
     self.tb = gr.top_block ()
     
     self.N_rb_dl = N_rb_dl = 6
     self.subcarriers = subcarriers =  12*N_rb_dl
     self.N_ofdm_symbols = N_ofdm_symbols = 140
     self.tag_key = tag_key = "symbol"
     self.msg_buf_name = msg_buf_name = "cell_id"
     
     data = subcarriers * [1]
     pilot_carriers = [[1,2,3],[4,5,6]]
     pilot_symbols = [[1j,2j,3j],[4j,5j,6j]]
     self.src = gr.vector_source_c(data, False, subcarriers)        
     self.estimator = lte.channel_estimator_vcvc(subcarriers,
                                                 tag_key,
                                                 msg_buf_name,
                                                 pilot_carriers,
                                                 pilot_symbols)
     self.snk = gr.vector_sink_c(subcarriers)
     
     self.tb.connect(self.src, self.estimator, self.snk)
Exemplo n.º 2
0
	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")