Пример #1
0
    def test_004_pcfich(self):
        print "\ntest_004_pcfich"
        cell_id = 124
        ns = 0
        N_ant = 2
        vlen = 16
        style = "tx_diversity"
        self.tb2 = gr.top_block()
        self.src = blocks.vector_source_c([0] * vlen, False, vlen)
        self.demapper = lte.layer_demapper_vcvc(0, vlen, style)
        self.snk = blocks.vector_sink_c(vlen)
        self.tb2.connect(self.src, self.demapper, self.snk)
        self.demapper.set_N_ant(N_ant)

        data = []
        exp_res = []
        for cfi in range(4):
            cfi_seq = lte_test.get_cfi_sequence(cfi + 1)
            scr_cfi_seq = lte_test.scramble_cfi_sequence(cfi_seq, cell_id, ns)
            mod_cfi_seq = lte_test.qpsk_modulation(scr_cfi_seq)
            exp_res.extend(mod_cfi_seq)
            lay_cfi_seq = lte_test.layer_mapping(mod_cfi_seq, N_ant, style)
            for i in range(len(lay_cfi_seq)):
                data.extend(lay_cfi_seq[i])

        self.src.set_data(data)
        self.tb2.run()
        res = self.snk.data()
        self.assertComplexTuplesAlmostEqual(res, exp_res)
Пример #2
0
 def test_004_pcfich(self):
     print "\ntest_004_pcfich"
     cell_id = 124
     ns = 0
     N_ant = 2
     vlen = 16
     style = "tx_diversity"
     self.tb2 = gr.top_block()
     self.src = blocks.vector_source_c([0]*vlen,False,vlen)
     self.demapper = lte_swig.layer_demapper_vcvc(0, vlen, style)
     self.snk = blocks.vector_sink_c(vlen)
     self.tb2.connect(self.src, self.demapper, self.snk)
     self.demapper.set_N_ant(N_ant)
     
     data = []
     exp_res = []
     for cfi in range(4):
         cfi_seq = lte_test.get_cfi_sequence(cfi+1)
         scr_cfi_seq = lte_test.scramble_cfi_sequence(cfi_seq, cell_id, ns)
         mod_cfi_seq = lte_test.qpsk_modulation(scr_cfi_seq)
         exp_res.extend(mod_cfi_seq)
         lay_cfi_seq = lte_test.layer_mapping(mod_cfi_seq, N_ant, style)
         for i in range(len(lay_cfi_seq)):
             data.extend(lay_cfi_seq[i])
             
     self.src.set_data(data)
     self.tb2.run()
     res = self.snk.data()
     self.assertComplexTuplesAlmostEqual(res, exp_res)
Пример #3
0
    def test_001_t(self):
        cell_id = 124
        N_ant = 2
        tl = 1024
        data = []
        input_data = []
        for i in range(tl / 4):
            mib = lte_test.pack_mib(50, 0, 1.0, i * 4)
            bch = tuple(lte_test.encode_bch(mib, N_ant))
            p_scrambled = lte_test.pbch_scrambling(bch, cell_id)
            input_data.extend(lte_test.nrz_encoding(p_scrambled))
            mod = lte_test.qpsk_modulation(p_scrambled)
            data.extend(mod)

        self.src.set_data(data)

        dbgs = blocks.file_sink(240 * gr.sizeof_gr_complex,
                                "/home/johannes/tests/demodulate.dat")
        self.tb.connect(self.src, dbgs)
        # set up fg
        self.tb.run()
        # check data
        res = self.snk.data()
        exp_res = tuple(
            input_data
        )  #tuple([input_data[i]/math.sqrt(2) for i in range(len(input_data))])
        print self.assertFloatTuplesAlmostEqual(res, exp_res, 5)
Пример #4
0
    def test_001_generated(self):
        print "\ntest_001_generated"
        cell_id = 124
        N_ant = 2
        style = "tx_diversity"
        mib = lte_test.pack_mib(50, 0, 1.0, 511)
        bch = lte_test.encode_bch(mib, N_ant)

        scrambled = lte_test.pbch_scrambling(bch, cell_id)
        qpsk_modulated = lte_test.qpsk_modulation(scrambled)
        #print np.shape(qpsk_modulated)
        layer_mapped = lte_test.layer_mapping(qpsk_modulated, N_ant, style)
        pre_coded = lte_test.pre_coding(layer_mapped, N_ant, style)
        #print np.shape(pre_coded)

        h0 = [complex(1, 0)] * len(pre_coded[0])
        h1 = [complex(1, 0)] * len(pre_coded[1])
        stream = [pre_coded[0][i] + pre_coded[1][i] for i in range(len(pre_coded[0]))]

        self.src1.set_data(stream)
        self.src2.set_data(h0)
        self.src3.set_data(h1)
        self.tb.run()
        res = self.snk.data()

        exp_res = []
        for i in range(len(stream) / 240):
            print i
            lay0 = layer_mapped[0][i * 120:(i + 1) * 120]
            lay1 = layer_mapped[1][i * 120:(i + 1) * 120]
            comb = [lay0, lay1]
            exp_res.extend(lte_test.prepare_for_demapper_block(comb, N_ant, style))

        print "test 001 final ASSERT!"
        print self.assertComplexTuplesAlmostEqual(res, exp_res)
Пример #5
0
    def test_002_pcfich(self):
        print "test_002_pcfich"

        # some constants
        cell_id = 124
        N_ant = 2
        style = "tx_diversity"
        vlen = 16
        ns = 0

        # new top_block because even the interface changes
        self.tb2 = gr.top_block()

        # generate test data together with the expected output
        data = []
        exp_res = []
        for cfi in range(4):
            cfi_seq = lte_test.get_cfi_sequence(cfi + 1)
            scr_cfi_seq = lte_test.scramble_cfi_sequence(cfi_seq, cell_id, ns)
            mod_cfi_seq = lte_test.qpsk_modulation(scr_cfi_seq)
            lay_cfi_seq = lte_test.layer_mapping(mod_cfi_seq, N_ant, style)
            lay_cfi_prep = lte_test.prepare_for_demapper_block(
                lay_cfi_seq, N_ant, style)
            exp_res.extend(lay_cfi_prep)
            pc_cfi_seq = lte_test.pre_coding(lay_cfi_seq, N_ant, style)
            pc_cfi_seq = [
                pc_cfi_seq[0][i] + pc_cfi_seq[1][i]
                for i in range(len(pc_cfi_seq[0]))
            ]
            data.extend(pc_cfi_seq)

        # dummy channel estimates
        intu2 = [complex(1, 0)] * len(data)
        intu3 = [complex(1, 0)] * len(data)

        # get blocks
        self.src1 = blocks.vector_source_c(data, False, vlen)
        self.src2 = blocks.vector_source_c(intu2, False, vlen)
        self.src3 = blocks.vector_source_c(intu3, False, vlen)
        self.pd = lte.pre_decoder_vcvc(1, 1, vlen, style)
        self.snk = blocks.vector_sink_c(vlen)

        # connect all blocks
        self.tb2.connect(self.src1, (self.pd, 0))
        self.tb2.connect(self.src2, (self.pd, 1))
        self.tb2.connect(self.src3, (self.pd, 2))
        self.tb2.connect(self.pd, self.snk)

        self.pd.set_N_ant(N_ant)

        # run flowgraph
        self.tb2.run()

        # compare result with expected result
        res = self.snk.data()

        self.assertComplexTuplesAlmostEqual(res, exp_res)
Пример #6
0
    def test_002_pcfich(self):
        print "test_002_pcfich"

        # some constants
        cell_id = 124
        N_ant = 2
        style = "tx_diversity"
        vlen = 16
        ns = 0

        # new top_block because even the interface changes
        self.tb2 = gr.top_block()

        # generate test data together with the expected output
        data = []
        exp_res = []
        for cfi in range(4):
            cfi_seq = lte_test.get_cfi_sequence(cfi + 1)
            scr_cfi_seq = lte_test.scramble_cfi_sequence(cfi_seq, cell_id, ns)
            mod_cfi_seq = lte_test.qpsk_modulation(scr_cfi_seq)
            lay_cfi_seq = lte_test.layer_mapping(mod_cfi_seq, N_ant, style)
            lay_cfi_prep = lte_test.prepare_for_demapper_block(lay_cfi_seq, N_ant, style)
            exp_res.extend(lay_cfi_prep)
            pc_cfi_seq = lte_test.pre_coding(lay_cfi_seq, N_ant, style)
            pc_cfi_seq = [pc_cfi_seq[0][i] + pc_cfi_seq[1][i] for i in range(len(pc_cfi_seq[0]))]
            data.extend(pc_cfi_seq)

        # dummy channel estimates
        intu2 = [complex(1, 0)] * len(data)
        intu3 = [complex(1, 0)] * len(data)

        # get blocks
        self.src1 = blocks.vector_source_c(data, False, vlen)
        self.src2 = blocks.vector_source_c(intu2, False, vlen)
        self.src3 = blocks.vector_source_c(intu3, False, vlen)
        self.pd = lte.pre_decoder_vcvc(1, vlen, style)
        self.snk = blocks.vector_sink_c(vlen)

        # connect all blocks
        self.tb2.connect(self.src1, (self.pd, 0))
        self.tb2.connect(self.src2, (self.pd, 1))
        self.tb2.connect(self.src3, (self.pd, 2))
        self.tb2.connect(self.pd, self.snk)

        self.pd.set_N_ant(N_ant)

        # run flowgraph
        self.tb2.run()

        # compare result with expected result
        res = self.snk.data()

        self.assertComplexTuplesAlmostEqual(res, exp_res)
Пример #7
0
 def test_001_t (self):
     print "demodulation test"
     mib = lte_test.pack_mib(50,0,1.0, 511)   
     bch = lte_test.encode_bch(mib, 2)
     p_scrambled = lte_test.pbch_scrambling(bch, 124)
     input_data = p_scrambled#[0:480]
     qpsk_mod = lte_test.qpsk_modulation(input_data)
     input_data = lte_test.nrz_encoding(input_data)
     
     self.src.set_data(qpsk_mod)
     # set up fg
     self.tb.run ()
     # check data
     res = self.snk.data()
     exp_res = tuple(input_data)#tuple([input_data[i]/math.sqrt(2) for i in range(len(input_data))])
     print self.assertFloatTuplesAlmostEqual(res, exp_res, 5)
Пример #8
0
    def test_001_generated(self):
        print "\ntest_001_generated"
        cell_id = 124
        N_ant = 2
        style = "tx_diversity"
        mib = lte_test.pack_mib(50, 0, 1.0, 511)
        bch = lte_test.encode_bch(mib, N_ant)

        scrambled = lte_test.pbch_scrambling(bch, cell_id)
        qpsk_modulated = lte_test.qpsk_modulation(scrambled)
        #print np.shape(qpsk_modulated)
        layer_mapped = lte_test.layer_mapping(qpsk_modulated, N_ant, style)
        pre_coded = lte_test.pre_coding(layer_mapped, N_ant, style)
        #print np.shape(pre_coded)

        h0 = [complex(1, 0)] * len(pre_coded[0])
        h1 = [complex(1, 0)] * len(pre_coded[1])
        stream = [
            pre_coded[0][i] + pre_coded[1][i] for i in range(len(pre_coded[0]))
        ]

        self.src1.set_data(stream)
        self.src2.set_data(h0)
        self.src3.set_data(h1)
        self.tb.run()
        res = self.snk.data()

        exp_res = []
        for i in range(len(stream) / 240):
            print i
            lay0 = layer_mapped[0][i * 120:(i + 1) * 120]
            lay1 = layer_mapped[1][i * 120:(i + 1) * 120]
            comb = [lay0, lay1]
            exp_res.extend(
                lte_test.prepare_for_demapper_block(comb, N_ant, style))

        print "test 001 final ASSERT!"
        print self.assertComplexTuplesAlmostEqual(res, exp_res)
Пример #9
0
    def test_001_t (self):
        cell_id = 124
        N_ant = 2
        tl = 1024
        data = []
        input_data = []
        for i in range(tl/4):
            mib = lte_test.pack_mib(50,0,1.0, i*4)
            bch = tuple(lte_test.encode_bch(mib, N_ant))
            p_scrambled = lte_test.pbch_scrambling(bch, cell_id)
            input_data.extend(lte_test.nrz_encoding(p_scrambled))
            mod = lte_test.qpsk_modulation(p_scrambled)
            data.extend(mod)

        self.src.set_data(data)

        dbgs = blocks.file_sink(240 * gr.sizeof_gr_complex, "/home/johannes/tests/demodulate.dat")
        self.tb.connect(self.src, dbgs)
        # set up fg
        self.tb.run ()
        # check data
        res = self.snk.data()
        exp_res = tuple(input_data)#tuple([input_data[i]/math.sqrt(2) for i in range(len(input_data))])
        print self.assertFloatTuplesAlmostEqual(res, exp_res, 5)
Пример #10
0
    def test_001_t(self):
        cell_id = 124
        N_ant = 2
        tl = 1024
        data = []
        input_data = []
        for i in range(tl / 4):
            mib = lte_test.pack_mib(50, 0, 1.0, i * 4)
            bch = tuple(lte_test.encode_bch(mib, N_ant))
            p_scrambled = lte_test.pbch_scrambling(bch, cell_id)
            input_data.extend(lte_test.nrz_encoding(p_scrambled))
            mod = lte_test.qpsk_modulation(p_scrambled)
            data.extend(mod)

        self.src.set_data(data)

        # set up fg
        self.tb.run()
        # check data
        res = self.snk.data()
        exp_res = tuple(
            input_data
        )  #tuple([input_data[i]/math.sqrt(2) for i in range(len(input_data))])
        self.assertFloatTuplesAlmostEqual(res, exp_res, 5)