コード例 #1
0
 def setUp (self):
     self.tb = gr.top_block ()
     self.tp = drm.transm_params(1, 3, False, 0, False, 1, 0, 1, 1, 0, False, 24000, "station label", "text message")
     vlen_msc = self.tp.msc().N_MUX() * self.tp.ofdm().M_TF()
     vlen_sdc = self.tp.sdc().N()
     vlen_fac = self.tp.fac().N() * self.tp.ofdm().M_TF()
     self.cell_mapping = drm.cell_mapping_vcvc(self.tp, (vlen_msc, vlen_sdc, vlen_fac))
コード例 #2
0
 def setUp (self):
     self.tb = gr.top_block ()
     self.tp = drm.transm_params(1, 3, False, 0, False, 1, 0, 1, 1, 0, False, 24000, "station label", "text message")
     self.src = drm.generate_sdc_vb(self.tp)
     self.head = gr.head(self.tp.sdc().L(), 1)
     self.snk = gr.vector_sink_b(self.tp.sdc().L())
     self.tb.connect(self.src, self.head, self.snk)
コード例 #3
0
 def setUp(self):
     self.tb = gr.top_block()
     self.tp = drm.transm_params(1, 3, False, 0, False, 1, 0, 1, 1, 0,
                                 False, 24000, "station label",
                                 "text message")
     self.src = drm.generate_sdc_vb(self.tp)
     self.head = gr.head(self.tp.sdc().L(), 1)
     self.snk = gr.vector_sink_b(self.tp.sdc().L())
     self.tb.connect(self.src, self.head, self.snk)
コード例 #4
0
 def setUp (self):
     self.tb = gr.top_block ()
     self.tp = drm.transm_params(1, 3, False, 0, False, 1, 0, 1, 1, 0, False, 24000, "station label", "this is a long sample text message!")
     self.audio_enc = drm.audio_encoder_svb(self.tp)
     self.src = gr.null_source(4)
     self.head = gr.head(4,  960*10*3)
     self.snk = gr.vector_sink_b(self.tp.msc().L_MUX())
     
     self.tb.connect(self.src, self.head, self.audio_enc, self.snk)
コード例 #5
0
    def setUp(self):
        self.tb = gr.top_block()
        self.tp = drm.transm_params(
            1, 3, False, 0, False, 1, 0, 1, 1, 0, False, 24000, "station label", "this is a long sample text message!"
        )
        self.audio_enc = drm.audio_encoder_svb(self.tp)
        self.src = gr.null_source(4)
        self.head = gr.head(4, 960 * 10 * 3)
        self.snk = gr.vector_sink_b(self.tp.msc().L_MUX())

        self.tb.connect(self.src, self.head, self.audio_enc, self.snk)
コード例 #6
0
 def setUp (self):
 	self.tb = gr.top_block ()
 	tp = drm.transm_params(1, 3, False, 0, False, 1, 0, 1, 1, 0, False, 24000, "station label", "text message")
 	self.tables = tp.cfg().ptables()
コード例 #7
0
    def __init__(self,DRMParameters):
        gr.top_block.__init__(self, "DRM Transmitter 1")

        ##################################################
        # Variables
        ##################################################
        self.text_message = text_message = DRMParameters.text_msg
        self.station_label = station_label = DRMParameters.station_label
        self.msc_prot_level_2 = msc_prot_level_2 = 1
        self.long_interl = long_interl = True
        self.audio_sample_rate = audio_sample_rate = DRMParameters.audio_samp*1000
        self.SO = SO = DRMParameters.so
        self.RM = RM = DRMParameters.rm
        self.tp = tp = drm.transm_params(RM, SO, False, 0, DRMParameters.msc_mod, 0, msc_prot_level_2, DRMParameters.sdc_mod, 0, long_interl, audio_sample_rate, station_label, text_message)
        self.samp_rate = samp_rate = 48e3
        self.usrp_addr = DRMParameters.usrp_id
        self.output_name = DRMParameters.output_name
        self.center_freq = DRMParameters.center_freq*1e6
        self.audio_file = DRMParameters.audio_file

        ##################################################
        # Blocks
        ##################################################
        if DRMParameters.uhd_found:
            self.uhd_usrp_sink_0 = uhd.usrp_sink(
                ",".join((self.usrp_addr, "")),
                uhd.stream_args(
                    cpu_format="fc32",
                    channels=range(1),
                ),
            )
            self.uhd_usrp_sink_0.set_samp_rate(samp_rate * 250 / 48)
            self.uhd_usrp_sink_0.set_center_freq(self.center_freq, 0)
            self.uhd_usrp_sink_0.set_gain(0, 0)
            self.uhd_usrp_sink_0.set_antenna("TXA", 0)
            self.rational_resampler_xxx_0 = filter.rational_resampler_ccc(
                    interpolation=250,
                    decimation=48,
                    taps=None,
                    fractional_bw=None,
            )
        self.fft_vxx_0 = fft.fft_vcc(tp.ofdm().nfft(), False, (), True, 1)
        self.drm_scrambler_bb_0_1 = drm.scrambler_bb(tp.sdc().L())
        self.drm_scrambler_bb_0_0 = drm.scrambler_bb(tp.fac().L())
        self.drm_scrambler_bb_0 = drm.scrambler_bb(tp.msc().L_MUX())
        self.drm_mlc_fac_bc = drm.make_mlc(
            channel_type="FAC",
            tp=tp
        )

        #SDC Configuration
        self.drm_mlc_sdc_bc= drm.make_mlc(
                channel_type="SDC",
                tp=tp
            )
            
        #MSC Configuration
        self.drm_mlc_msc_bc = drm.make_mlc(
                channel_type="MSC",
                tp=tp
            )
        self.drm_interleaver_cc_0 = drm.interleaver_cc((tp.msc().cell_interl_seq()), long_interl, drm.INTL_DEPTH_DRM)
        self.drm_generate_sdc_b_0 = drm.generate_sdc_b(tp)
        self.drm_generate_fac_b_0 = drm.generate_fac_b(tp)
        self.drm_audio_encoder_sb_0 = drm.audio_encoder_sb(tp)
        self.digital_ofdm_cyclic_prefixer_1 = digital.ofdm_cyclic_prefixer(tp.ofdm().nfft(), tp.ofdm().nfft()+tp.ofdm().nfft()*tp.ofdm().cp_ratio_enum()/tp.ofdm().cp_ratio_denom(), 0, "")
        self.cell_mapping_cc_0 = drm.cell_mapping_cc(tp, (tp.msc().N_MUX() * tp.ofdm().M_TF() * 8, tp.sdc().N() * 8, tp.fac().N() * tp.ofdm().M_TF() * 8))
        self.blocks_null_sink_0 = blocks.null_sink(gr.sizeof_float*1)
        if DRMParameters.pulse_audio:
            self.audio_source_1 = audio.source(audio_sample_rate, "", True)
        else:
            self.blocks_wavfile_source_0 = blocks.wavfile_source(self.audio_file, False)
        if DRMParameters.gen_output:
            self.blocks_wavfile_sink_0 = blocks.wavfile_sink(self.output_name, 1, 48000, 16)
        self.blocks_multiply_xx_0 = blocks.multiply_vcc(1)
        self.blocks_multiply_const_vxx_1 = blocks.multiply_const_vcc((7e-3, ))
        self.blocks_multiply_const_vxx_0 = blocks.multiply_const_vff((32768, ))
        self.blocks_complex_to_real_0 = blocks.complex_to_real(1)
        self.analog_sig_source_x_0 = analog.sig_source_c(samp_rate, analog.GR_COS_WAVE, 7000, 1, 0)

        ##################################################
        # Connections
        ##################################################
        self.connect((self.analog_sig_source_x_0, 0), (self.blocks_multiply_xx_0, 1))    
        if DRMParameters.gen_output:
            self.connect((self.blocks_complex_to_real_0, 0), (self.blocks_wavfile_sink_0, 0))
        self.connect((self.blocks_multiply_const_vxx_0, 0), (self.drm_audio_encoder_sb_0, 0))    
        self.connect((self.blocks_multiply_const_vxx_1, 0), (self.blocks_multiply_xx_0, 0))
        self.connect((self.blocks_multiply_xx_0, 0), (self.blocks_complex_to_real_0, 0))
        if DRMParameters.pulse_audio:
            self.connect((self.audio_source_1, 0), (self.blocks_multiply_const_vxx_0, 0))
        else:
            self.connect((self.blocks_wavfile_source_0, 0), (self.blocks_multiply_const_vxx_0, 0))
        self.connect((self.cell_mapping_cc_0, 0), (self.fft_vxx_0, 0))
        self.connect((self.digital_ofdm_cyclic_prefixer_1, 0), (self.blocks_multiply_const_vxx_1, 0))    
        self.connect((self.drm_audio_encoder_sb_0, 0), (self.drm_scrambler_bb_0, 0))    
        self.connect((self.drm_generate_fac_b_0, 0), (self.drm_scrambler_bb_0_0, 0))    
        self.connect((self.drm_generate_sdc_b_0, 0), (self.drm_scrambler_bb_0_1, 0))    
        self.connect((self.drm_interleaver_cc_0, 0), (self.cell_mapping_cc_0, 0))    
        self.connect((self.drm_mlc_msc_bc, 0), (self.drm_interleaver_cc_0, 0))
        self.connect((self.drm_mlc_sdc_bc, 0), (self.cell_mapping_cc_0, 1))
        self.connect((self.drm_mlc_fac_bc, 0), (self.cell_mapping_cc_0, 2))    
        self.connect((self.drm_scrambler_bb_0, 0), (self.drm_mlc_msc_bc, 0))
        self.connect((self.drm_scrambler_bb_0_0, 0), (self.drm_mlc_fac_bc, 0))    
        self.connect((self.drm_scrambler_bb_0_1, 0), (self.drm_mlc_sdc_bc, 0))
        self.connect((self.fft_vxx_0, 0), (self.digital_ofdm_cyclic_prefixer_1, 0))    
        if DRMParameters.uhd_found:
            self.connect((self.rational_resampler_xxx_0, 0), (self.uhd_usrp_sink_0, 0))
            self.connect((self.blocks_multiply_const_vxx_1, 0), (self.rational_resampler_xxx_0, 0))
        self.connect((self.blocks_complex_to_real_0, 0), (self.blocks_null_sink_0, 0))
コード例 #8
0
 def set_RM(self, RM):
     self.RM = RM
     self.set_tp(drm.transm_params(self.RM, self.SO, False, 0, False, 1, 0, self.msc_prot_level_2, 1, 0, self.long_interl, self.audio_sample_rate, self.station_label, self.text_message))
コード例 #9
0
 def setUp(self):
     self.tb = gr.top_block()
     tp = drm.transm_params(1, 3, False, 0, False, 1, 0, 1, 1, 0, False,
                            24000, "station label", "text message")
     self.tables = tp.cfg().ptables()
コード例 #10
0
 def setUp (self):
     self.tb = gr.top_block ()
     tp = drm.transm_params(1, 3, False, 0, False, 1, 0, 1, 1, 0, False, 24000, "station label", "text message")
     self.aac_decoder = drm.audio_decoder_vbs(tp)
コード例 #11
0
ファイル: drm_transmitter.py プロジェクト: pothosware/gr-drm
    def __init__(self,DRMParameters):
        gr.top_block.__init__(self, "DRM Transmitter 1")

        ##################################################
        # Variables
        ##################################################
        self.text_message = text_message = DRMParameters.text_msg
        self.station_label = station_label = DRMParameters.station_label
        self.msc_prot_level_2 = msc_prot_level_2 = 1
        self.long_interl = long_interl = True
        self.audio_sample_rate = audio_sample_rate = DRMParameters.audio_samp*1000
        self.SO = SO = DRMParameters.so
        self.RM = RM = DRMParameters.rm
        self.tp = tp = drm.transm_params(RM, SO, False, 0, False, DRMParameters.msc_mod, 0, msc_prot_level_2, DRMParameters.sdc_mod, 0, long_interl, audio_sample_rate, station_label, text_message)
        self.samp_rate = samp_rate = 48e3
        self.usrp_addr = DRMParameters.usrp_id
        self.output_name = DRMParameters.output_name
        self.center_freq = DRMParameters.center_freq*1e6
        self.audio_file = DRMParameters.audio_file

        ##################################################
        # Blocks
        ##################################################
        if DRMParameters.uhd_found:
            self.uhd_usrp_sink_0 = uhd.usrp_sink(
                ",".join((self.usrp_addr, "")),
                uhd.stream_args(
                    cpu_format="fc32",
                    channels=range(1),
                ),
            )
            self.uhd_usrp_sink_0.set_samp_rate(samp_rate * 250 / 48)
            self.uhd_usrp_sink_0.set_center_freq(self.center_freq, 0)
            self.uhd_usrp_sink_0.set_gain(0, 0)
            self.uhd_usrp_sink_0.set_antenna("TXA", 0)
            self.rational_resampler_xxx_0 = filter.rational_resampler_ccc(
                    interpolation=250,
                    decimation=48,
                    taps=None,
                    fractional_bw=None,
            )
        self.fft_vxx_0 = fft.fft_vcc(tp.ofdm().nfft(), False, (), True, 1)
        self.drm_scrambler_bb_0_1 = drm.scrambler_bb(tp.sdc().L())
        self.drm_scrambler_bb_0_0 = drm.scrambler_bb(tp.fac().L())
        self.drm_scrambler_bb_0 = drm.scrambler_bb(tp.msc().L_MUX())
        self.drm_mlc_4qam_bc_0_0 = drm_mlc_4qam_bc(
            bits_per_symbol=tp.fac().mod_order(),
            denom_mother_code_rate=drm.DENOM_MOTHER_CODE,
            gen_poly=(91, 121, 101, 91, 121, 101),
            interl_seq=tp.fac().bit_interl_seq_0_2(),
            map_tab=tp.cfg().ptables().d_QAM4,
            n_tailbits=drm.N_TAILBITS / drm.DENOM_MOTHER_CODE,
            pp=tp.fac().punct_pat_0(),
            pp_tail=tp.fac().punct_pat_0(),
            vlen_in=tp.fac().L(),
            vlen_out=tp.fac().N(),
        )

        #SDC Configuration

        if DRMParameters.sdc_mod == 0:
            self.drm_mlc_sdc_bc= drm_mlc_16qam_bc(
                vlen_in=tp.sdc().L(),
                vlen_out=tp.sdc().N(),
                n_tailbits=drm.N_TAILBITS / drm.DENOM_MOTHER_CODE,
                denom_mother_code_rate=drm.DENOM_MOTHER_CODE,
                gen_poly=(91, 121, 101, 91, 121, 101),
                bits_per_symbol=tp.sdc().mod_order(),
                map_tab=tp.cfg().ptables().d_QAM16,
                pp_0=tp.sdc().punct_pat_0(),
                interl_seq_0_2=tp.sdc().bit_interl_seq_0_2(),
                interl_seq_1_2=tp.sdc().bit_interl_seq_1_2(),
                pp_1_tail=tp.sdc().punct_pat_tail_1(),
                pp_1=tp.sdc().punct_pat_1(),
                pp_0_tail=tp.sdc().punct_pat_tail_0(),
                M_total=tp.sdc().M_total(),
                part_len_top=tp.sdc().M_total()[0],
                part_len_bot=tp.sdc().M_total()[1],
            )
        else:
            self.drm_mlc_sdc_bc = drm_mlc_4qam_bc(
                vlen_in=tp.sdc().L(),
                vlen_out=tp.sdc().N(),
                n_tailbits=drm.N_TAILBITS / drm.DENOM_MOTHER_CODE,
                denom_mother_code_rate=drm.DENOM_MOTHER_CODE,
                map_tab=tp.cfg().ptables().d_QAM4,
                interl_seq=tp.sdc().bit_interl_seq_0_2(),
                bits_per_symbol=tp.sdc().mod_order(),
                pp=tp.sdc().punct_pat_0(),
                pp_tail=tp.sdc().punct_pat_tail_0(),
                gen_poly=(91, 121, 101, 91, 121, 101),
            )

        #MSC Configuration

        if DRMParameters.msc_mod == 2:
            self.drm_mlc_msc_bc = drm_mlc_64qam_sm_bc(
                vlen_in=tp.msc().L_MUX(),
                n_tailbits=drm.N_TAILBITS / drm.DENOM_MOTHER_CODE,
                denom_mother_code_rate=drm.DENOM_MOTHER_CODE,
                gen_poly=(91, 121, 101, 91, 121, 101),
                vlen_out=tp.msc().N_MUX(),
                bits_per_symbol=tp.msc().mod_order(),
                map_tab=tp.cfg().ptables().d_QAM64SM,
                pp_0=tp.msc().punct_pat_0_2(),
                pp_0_tail=tp.msc().punct_pat_tail_0_2(),
                pp_1=tp.msc().punct_pat_1_2(),
                pp_1_tail=tp.msc().punct_pat_tail_1_2(),
                pp_2=tp.msc().punct_pat_2_2(),
                pp_2_tail=tp.msc().punct_pat_tail_2_2(),
                interl_seq_0_2=tp.msc().bit_interl_seq_0_2(),
                interl_seq_2_2=tp.msc().bit_interl_seq_2_2(),
                interl_seq_1_2=tp.msc().bit_interl_seq_1_2(),
                M_total=tp.msc().M_total(),
                part_len_bot=tp.msc().M_total()[2],
                part_len_top=tp.msc().M_total()[0],
                part_len_mid=tp.msc().M_total()[1],
            )
        else:
            self.drm_mlc_msc_bc = drm_mlc_16qam_bc(
                vlen_in=tp.msc().L_MUX(),
                vlen_out=tp.msc().N_MUX(),
                n_tailbits=drm.N_TAILBITS / drm.DENOM_MOTHER_CODE,
                denom_mother_code_rate=drm.DENOM_MOTHER_CODE,
                gen_poly=(91, 121, 101, 91, 121, 101),
                bits_per_symbol=tp.msc().mod_order(),
                map_tab=tp.cfg().ptables().d_QAM16,
                pp_0=tp.msc().punct_pat_0_2(),
                interl_seq_0_2=tp.msc().bit_interl_seq_0_2(),
                interl_seq_1_2=tp.msc().bit_interl_seq_1_2(),
                pp_1_tail=tp.msc().punct_pat_tail_1_2(),
                pp_1=tp.msc().punct_pat_1_2(),
                pp_0_tail=tp.msc().punct_pat_tail_0_2(),
                M_total=tp.msc().M_total(),
                part_len_top=tp.msc().M_total()[0],
                part_len_bot=tp.msc().M_total()[1],
            )
        self.drm_interleaver_cc_0 = drm.interleaver_cc((tp.msc().cell_interl_seq()), long_interl, drm.INTL_DEPTH_DRM)
        self.drm_generate_sdc_b_0 = drm.generate_sdc_b(tp)
        self.drm_generate_fac_b_0 = drm.generate_fac_b(tp)
        self.drm_audio_encoder_sb_0 = drm.audio_encoder_sb(tp)
        self.digital_ofdm_cyclic_prefixer_1 = digital.ofdm_cyclic_prefixer(tp.ofdm().nfft(), tp.ofdm().nfft()+tp.ofdm().nfft()/4, 0, "")
        self.cell_mapping_cc_0 = drm.cell_mapping_cc(tp, (tp.msc().N_MUX() * tp.ofdm().M_TF() * 8, tp.sdc().N() * 8, tp.fac().N() * tp.ofdm().M_TF() * 8))
        self.blocks_null_sink_0 = blocks.null_sink(gr.sizeof_float*1)
        if DRMParameters.pulse_audio:
            self.audio_source_1 = audio.source(audio_sample_rate, "", True)
        else:
            self.blocks_wavfile_source_0 = blocks.wavfile_source(self.audio_file, False)
        if DRMParameters.gen_output:
            self.blocks_wavfile_sink_0 = blocks.wavfile_sink(self.output_name, 1, 48000, 16)
        self.blocks_multiply_xx_0 = blocks.multiply_vcc(1)
        self.blocks_multiply_const_vxx_1 = blocks.multiply_const_vcc((7e-3, ))
        self.blocks_multiply_const_vxx_0 = blocks.multiply_const_vff((32768, ))
        self.blocks_complex_to_real_0 = blocks.complex_to_real(1)
        self.analog_sig_source_x_0 = analog.sig_source_c(samp_rate, analog.GR_COS_WAVE, 7000, 1, 0)

        ##################################################
        # Connections
        ##################################################
        self.connect((self.analog_sig_source_x_0, 0), (self.blocks_multiply_xx_0, 1))    
        if DRMParameters.gen_output:
            self.connect((self.blocks_complex_to_real_0, 0), (self.blocks_wavfile_sink_0, 0))
        self.connect((self.blocks_multiply_const_vxx_0, 0), (self.drm_audio_encoder_sb_0, 0))    
        self.connect((self.blocks_multiply_const_vxx_1, 0), (self.blocks_multiply_xx_0, 0))
        self.connect((self.blocks_multiply_xx_0, 0), (self.blocks_complex_to_real_0, 0))
        if DRMParameters.pulse_audio:
            self.connect((self.audio_source_1, 0), (self.blocks_multiply_const_vxx_0, 0))
        else:
            self.connect((self.blocks_wavfile_source_0, 0), (self.blocks_multiply_const_vxx_0, 0))
        self.connect((self.cell_mapping_cc_0, 0), (self.fft_vxx_0, 0))
        self.connect((self.digital_ofdm_cyclic_prefixer_1, 0), (self.blocks_multiply_const_vxx_1, 0))    
        self.connect((self.drm_audio_encoder_sb_0, 0), (self.drm_scrambler_bb_0, 0))    
        self.connect((self.drm_generate_fac_b_0, 0), (self.drm_scrambler_bb_0_0, 0))    
        self.connect((self.drm_generate_sdc_b_0, 0), (self.drm_scrambler_bb_0_1, 0))    
        self.connect((self.drm_interleaver_cc_0, 0), (self.cell_mapping_cc_0, 0))    
        self.connect((self.drm_mlc_msc_bc, 0), (self.drm_interleaver_cc_0, 0))
        self.connect((self.drm_mlc_sdc_bc, 0), (self.cell_mapping_cc_0, 1))
        self.connect((self.drm_mlc_4qam_bc_0_0, 0), (self.cell_mapping_cc_0, 2))    
        self.connect((self.drm_scrambler_bb_0, 0), (self.drm_mlc_msc_bc, 0))
        self.connect((self.drm_scrambler_bb_0_0, 0), (self.drm_mlc_4qam_bc_0_0, 0))    
        self.connect((self.drm_scrambler_bb_0_1, 0), (self.drm_mlc_sdc_bc, 0))
        self.connect((self.fft_vxx_0, 0), (self.digital_ofdm_cyclic_prefixer_1, 0))    
        if DRMParameters.uhd_found:
            self.connect((self.rational_resampler_xxx_0, 0), (self.uhd_usrp_sink_0, 0))
            self.connect((self.blocks_multiply_const_vxx_1, 0), (self.rational_resampler_xxx_0, 0))
        self.connect((self.blocks_complex_to_real_0, 0), (self.blocks_null_sink_0, 0))
コード例 #12
0
 def setUp(self):
     self.tb = gr.top_block()
     tp = drm.transm_params(1, 3, False, 0, False, 1, 0, 1, 1, 0, False,
                            24000, "station label", "text message")
     self.aac_decoder = drm.audio_decoder_vbs(tp)