def test_003_data_gen(self):
        N_rb_dl = self.N_rb_dl
        subcarriers = self.subcarriers
        N_ofdm_symbols = self.N_ofdm_symbols
        tag_key = self.tag_key
        msg_buf_name = self.msg_buf_name
        cell_id = 124
        Ncp = 1
        N_ant = 2
        style= "tx_diversity"
        sfn = 0
        srcid = "source"

        nf = 4
        data = []
        for sfn in range(nf):
            mib = lte_test.pack_mib(N_rb_dl, 0, 1.0, sfn)
            bch = lte_test.encode_bch(mib, N_ant)
            pbch = lte_test.encode_pbch(bch, cell_id, N_ant, style)
            frame = lte_test.generate_phy_frame(cell_id, N_rb_dl, N_ant)
            for p in range(len(frame)):
                frame[p] = lte_test.map_pbch_to_frame_layer(frame[p], pbch[p], cell_id, sfn, p)

            stream = frame[0].flatten().tolist()
            stream = np.add(stream, frame[1].flatten().tolist() )
            data.extend(stream)
        print len(data)

        tags = lte_test.get_tag_list(140 * nf, 140, self.tag_key, srcid)

        tb2 = gr.top_block ()
        src = blocks.vector_source_c(data, False, subcarriers)
        dbg = blocks.file_sink(gr.sizeof_gr_complex * 12*N_rb_dl, "/home/johannes/tests/est_frame_data.dat")
        tb2.connect(src, dbg)
        tb2.run()
예제 #2
0
 def get_tag_list(self, fft_len, initial_offset, num_tags, value_range, inkey, srcid):
     slotl = t.get_slot_length(fft_len)
     tl = t.get_tag_list(num_tags, value_range, inkey, srcid)
     for s in tl:
         s.offset *= slotl
         s.offset += initial_offset
     return tl
예제 #3
0
    def setUp(self):
        self.tb = gr.top_block()

        key = "subframe"
        msg_buf_name = "cfi"
        print "setup test"

        data = []
        self.cfi_list = []
        for i in range(3):
            val = i + 1
            self.cfi_list.append(val)
            cfi = lte_test.get_cfi_sequence(val)
            data.extend(lte_test.nrz_encoding(cfi))

        reps = 5
        self.cfi_list *= reps

        srcid = "src"
        taglist = lte_test.get_tag_list(3 * reps, 10, key, srcid)

        data = [float(data[i]) for i in range(len(data))]
        ext_data = []
        for i in range(reps):
            ext_data.extend(data)
        data = ext_data

        self.src = blocks.vector_source_f(data, False, 32, taglist)
        self.cfi = lte.pcfich_unpack_vfm(key, msg_buf_name)
        self.cfi.activate_debug_mode(True)

        self.tb.connect(self.src, self.cfi)
        print "setup finished"
예제 #4
0
    def test_003_data_gen(self):
        N_rb_dl = self.N_rb_dl
        subcarriers = self.subcarriers
        N_ofdm_symbols = self.N_ofdm_symbols
        tag_key = self.tag_key
        msg_buf_name = self.msg_buf_name
        cell_id = 124
        Ncp = 1
        N_ant = 2
        style = "tx_diversity"
        sfn = 0
        srcid = "source"

        nf = 4
        data = []
        for sfn in range(nf):
            mib = lte_test.pack_mib(N_rb_dl, 0, 1.0, sfn)
            bch = lte_test.encode_bch(mib, N_ant)
            pbch = lte_test.encode_pbch(bch, cell_id, N_ant, style)
            frame = lte_test.generate_phy_frame(cell_id, N_rb_dl, N_ant)
            for p in range(len(frame)):
                frame[p] = lte_test.map_pbch_to_frame_layer(
                    frame[p], pbch[p], cell_id, sfn, p)

            stream = frame[0].flatten().tolist()
            stream = np.add(stream, frame[1].flatten().tolist())
            data.extend(stream)
        print len(data)

        tags = lte_test.get_tag_list(140 * nf, 140, self.tag_key, srcid)

        tb2 = gr.top_block()
        src = blocks.vector_source_c(data, False, subcarriers)
        tb2.run()
예제 #5
0
 def get_tag_list(self, fft_len, initial_offset, num_tags, value_range,
                  inkey, srcid):
     slotl = t.get_slot_length(fft_len)
     tl = t.get_tag_list(num_tags, value_range, inkey, srcid)
     for s in tl:
         s.offset *= slotl
         s.offset += initial_offset
     return tl
예제 #6
0
    def test_001_t(self):
        cell_id = 124
        N_ant = 2
        style = "tx_diversity"
        N_rb_dl = self.N_rb_dl
        sim_frames = 4
        self.demux.set_cell_id(cell_id)
        sfn = 512
        mib = lte_test.pack_mib(N_rb_dl, 0, 1.0, sfn)
        bch = lte_test.encode_bch(mib, N_ant)
        pbch = lte_test.encode_pbch(bch, cell_id, N_ant, style)

        stream = []
        #for i in range(sim_frames):
        #    frame = lte_test.generate_frame(pbch, N_rb_dl, cell_id, i+20, N_ant)
        #    stream.extend(frame[0].flatten())
        #
        #print len(stream)
        for i in range(sim_frames):
            frame = lte_test.generate_phy_frame(cell_id, N_rb_dl, N_ant)
            for p in range(len(frame)):
                frame[p] = lte_test.map_pbch_to_frame_layer(
                    frame[p], pbch[p], cell_id, sfn + i, p)
            stream.extend(frame[0].flatten().tolist())

        key = self.key
        srcid = "source"
        tags = lte_test.get_tag_list(140 * sim_frames, 140, key, srcid)

        self.src1.set_data(stream, tuple(tags))
        self.dbg = blocks.file_sink(gr.sizeof_gr_complex * 12 * N_rb_dl,
                                    "/home/johannes/tests/pbch_frame.dat")
        self.tb.connect(self.src1, self.dbg)
        # set up fg
        self.tb.run()
        # check data
        res1 = self.snk1.data()
        #res2 = self.snk2.data()
        #res3 = self.snk3.data()

        print len(res1)
        compare = res1[0:len(pbch[0])]

        #'''
        #partl = 10
        #for i in range(len(res1)/partl):
        #    partres = compare[partl*i:partl*(i+1)]
        #    partcom = pbch[0][partl*i:partl*(i+1)]
        #    try:
        #        self.assertComplexTuplesAlmostEqual(partcom,partres)
        #        print str(i*partl) + "\tsuccess"
        #    except:
        #        #print "\n\n\n\n\n\n"
        #        print str(i*partl) + "\t" + str(partres)
        #'''

        self.assertComplexTuplesAlmostEqual(compare,
                                            tuple(pbch[0][0:len(compare)]))
예제 #7
0
    def test_001_t (self):
        cell_id = 124
        N_ant = 2
        style= "tx_diversity"
        N_rb_dl = self.N_rb_dl
        sim_frames = 4
        self.demux.set_cell_id(cell_id)
        sfn = 512
        mib = lte_test.pack_mib(N_rb_dl, 0, 1.0, sfn)
        bch = lte_test.encode_bch(mib, N_ant)
        pbch = lte_test.encode_pbch(bch, cell_id, N_ant, style)

        stream = []
        #for i in range(sim_frames):
        #    frame = lte_test.generate_frame(pbch, N_rb_dl, cell_id, i+20, N_ant)
        #    stream.extend(frame[0].flatten())
        #
        #print len(stream)
        for i in range(sim_frames):
            frame = lte_test.generate_phy_frame(cell_id, N_rb_dl, N_ant)
            for p in range(len(frame)):
                frame[p] = lte_test.map_pbch_to_frame_layer(frame[p], pbch[p], cell_id, sfn+i, p)
            stream.extend(frame[0].flatten().tolist() )

        key = self.key
        srcid = "source"
        tags = lte_test.get_tag_list(140 * sim_frames, 140, key, srcid)

        self.src1.set_data(stream, tuple(tags))
        self.dbg = blocks.file_sink(gr.sizeof_gr_complex * 12*N_rb_dl, "/home/johannes/tests/pbch_frame.dat")
        self.tb.connect(self.src1, self.dbg)
        # set up fg
        self.tb.run ()
        # check data
        res1 = self.snk1.data()
        #res2 = self.snk2.data()
        #res3 = self.snk3.data()

        print len(res1)
        compare = res1[0:len(pbch[0])]

        #'''
        #partl = 10
        #for i in range(len(res1)/partl):
        #    partres = compare[partl*i:partl*(i+1)]
        #    partcom = pbch[0][partl*i:partl*(i+1)]
        #    try:
        #        self.assertComplexTuplesAlmostEqual(partcom,partres)
        #        print str(i*partl) + "\tsuccess"
        #    except:
        #        #print "\n\n\n\n\n\n"
        #        print str(i*partl) + "\t" + str(partres)
        #'''

        self.assertComplexTuplesAlmostEqual(compare, tuple(pbch[0][0:len(compare)]))
예제 #8
0
    def test_002_t(self):
        print "test_002_t BEGIN"
        N_rb_dl = self.N_rb_dl
        subcarriers = self.subcarriers
        N_ofdm_symbols = self.N_ofdm_symbols
        tag_key = self.tag_key
        msg_buf_name = self.msg_buf_name
        cell_id = 124
        Ncp = 1
        N_ant = 2
        style = "tx_diversity"
        sfn = 0
        srcid = "source"

        print "get and set data"
        stream = self.get_data_stream(N_ant, cell_id, style, N_rb_dl, sfn,
                                      subcarriers)
        data_len = len(stream) / subcarriers
        tag_list = lte_test.get_tag_list(data_len, N_ofdm_symbols, tag_key,
                                         srcid)
        self.src.set_data(stream, tag_list)

        print "get and set pilot map"
        [rs_pos_frame, rs_val_frame
         ] = lte_test.frame_pilot_value_and_position(N_rb_dl, cell_id, Ncp, 0)
        self.estimator.set_pilot_map(rs_pos_frame, rs_val_frame)
        print "pilot Map set"
        self.tb.run()
        # check data
        #print pmt.pmt_symbol_to_string(tag_list[0].key)
        expected = np.ones((subcarriers, ), dtype=np.complex)
        res = self.snk.data()

        failed = 0
        first_failed = -1
        for i in range(len(res) / subcarriers):
            #print i
            vec = res[i * subcarriers:(i + 1) * subcarriers]
            try:
                self.assertComplexTuplesAlmostEqual(vec, expected, 5)
                #print "success"
            except:
                print str(i) + "\tfail"
                print vec[0:20]
                first_failed = i
                #print vec
                failed = failed + 1
        print "failed vectors: " + str(failed)

        if first_failed > -1:
            i = first_failed
            vec = res[i * subcarriers:(i + 1) * subcarriers]
            self.assertComplexTuplesAlmostEqual(vec, expected, 5)

        print "test_002_t END\n\n"
    def test_002_t (self):
        print "test_002_t BEGIN"
        N_rb_dl = self.N_rb_dl
        subcarriers = self.subcarriers
        N_ofdm_symbols = self.N_ofdm_symbols
        tag_key = self.tag_key
        msg_buf_name = self.msg_buf_name
        cell_id = 124
        Ncp = 1
        N_ant = 2
        style= "tx_diversity"
        sfn = 0
        srcid = "source"

        print "get and set data"
        stream = self.get_data_stream(N_ant, cell_id, style, N_rb_dl, sfn, subcarriers)
        data_len = len(stream)/subcarriers
        tag_list = lte_test.get_tag_list(data_len, N_ofdm_symbols, tag_key, srcid)
        self.src.set_data(stream, tag_list)

        print "get and set pilot map"
        [rs_pos_frame, rs_val_frame] = lte_test.frame_pilot_value_and_position(N_rb_dl, cell_id, Ncp, 0)
        self.estimator.set_pilot_map(rs_pos_frame, rs_val_frame)
        print "pilot Map set"
        self.tb.run ()
        # check data
        #print pmt.pmt_symbol_to_string(tag_list[0].key)
        expected = np.ones((subcarriers,), dtype=np.complex)
        res = self.snk.data()

        failed = 0
        first_failed = -1
        for i in range(len(res)/subcarriers):
            #print i
            vec = res[i*subcarriers:(i+1)*subcarriers]
            try:
                self.assertComplexTuplesAlmostEqual(vec, expected, 5)
                #print "success"
            except:
                print str(i) +  "\tfail"
                print vec[0:20]
                first_failed = i
                #print vec
                failed = failed +1
        print "failed vectors: " + str(failed)

        if first_failed > -1:
            i = first_failed
            vec = res[i*subcarriers:(i+1)*subcarriers]
            self.assertComplexTuplesAlmostEqual(vec, expected, 5)

        print "test_002_t END\n\n"
예제 #10
0
    def test_002_pcfich(self):
        print "pcfich test"
        cfi = 2
        cell_id = 387
        vlen = 32

        # Generate descrambling sequences.
        seqs = []
        for ns in range(10):
            #scr = lte_test.scramble_cfi_sequence([0] * 32, cell_id, ns)
            scr = lte_test.get_pcfich_scrambling_sequence(cell_id, ns)
            seqs.append(lte_test.nrz_encoding(scr))

        # Generate a CFI sequence
        cfi_seq = lte_test.get_cfi_sequence(cfi)
        nrz_cfi_seq = lte_test.nrz_encoding(cfi_seq)

        # Generate scrambled sequences
        nvecs = 100
        scr_cfi_seqs = []
        expres = []
        for ns in range(nvecs):
            scr_cfi_seqs.extend(
                lte_test.nrz_encoding(
                    lte_test.scramble_cfi_sequence(cfi_seq, cell_id, ns % 10)))
            expres.extend(nrz_cfi_seq)

        # Get tags
        tags = lte_test.get_tag_list(nvecs, 10, self.tag_key, "test_src")

        # Get blocks for test flowgraph
        src = blocks.vector_source_f(scr_cfi_seqs, False, vlen)
        src.set_data(scr_cfi_seqs, tags)
        descr = lte.descrambler_vfvf(self.tag_key, "cfi_seqs", vlen)
        descr.set_descr_seqs(seqs)
        snk = blocks.vector_sink_f(vlen)

        # Create, connect, run fg
        tb = gr.top_block()
        tb.connect(src, descr, snk)
        tb.run()

        # Get result
        res = snk.data()

        # Check results!
        self.assertFloatTuplesAlmostEqual(res, expres)
예제 #11
0
    def test_002_pcfich(self):
        print "pcfich test"
        cfi = 2
        cell_id = 387
        vlen =32

        # Generate descrambling sequences.
        seqs = []
        for ns in range(10):
            #scr = lte_test.scramble_cfi_sequence([0] * 32, cell_id, ns)
            scr = lte_test.get_pcfich_scrambling_sequence(cell_id, ns)
            seqs.append(lte_test.nrz_encoding(scr))

        # Generate a CFI sequence
        cfi_seq = lte_test.get_cfi_sequence(cfi)
        nrz_cfi_seq = lte_test.nrz_encoding(cfi_seq)

        # Generate scrambled sequences
        nvecs = 100
        scr_cfi_seqs = []
        expres = []
        for ns in range(nvecs):
            scr_cfi_seqs.extend(lte_test.nrz_encoding(lte_test.scramble_cfi_sequence(cfi_seq, cell_id, ns%10)))
            expres.extend(nrz_cfi_seq)

        # Get tags
        tags = lte_test.get_tag_list(nvecs, 10, self.tag_key, "test_src")

        # Get blocks for test flowgraph
        src = blocks.vector_source_f(scr_cfi_seqs, False, vlen)
        src.set_data(scr_cfi_seqs, tags)
        descr = lte.descrambler_vfvf(self.tag_key, "cfi_seqs", vlen)
        descr.set_descr_seqs(seqs)
        snk = blocks.vector_sink_f(vlen)

        # Create, connect, run fg
        tb = gr.top_block()
        tb.connect(src, descr, snk)
        tb.run()

        # Get result
        res = snk.data()

        # Check results!
        self.assertFloatTuplesAlmostEqual(res, expres)
예제 #12
0
    def test_001_t(self):
        print "test_001_t"
        # set up fg
        cell_id = 124
        max_len = 84 * self.cce_len
        n_cce = 20
        pdcch_format = 3

        # set up descrambling block
        seqs = []
        for sub in range(10):
            seq = lte_test.get_pdcch_scrambling_sequence(
                max_len, cell_id, 2 * sub)
            seqs.append(lte_test.nrz_encoding(seq))
        self.descr.set_descr_seqs(seqs)

        # generate test data
        data = []
        exp_res = []
        for i in range(n_cce):
            pdcch = lte_test.get_pdcch(pdcch_format)
            exp_res.extend(lte_test.nrz_encoding(pdcch))
            scr = lte_test.scramble_pdcch(pdcch, 2 * (i % 10), cell_id)
            data.extend(lte_test.nrz_encoding(scr))
            #data = [0] * self.cce_len * n_cce
        tag_list = lte_test.get_tag_list(n_cce, 10, self.tag_key, "source")
        for i in range(len(tag_list)):
            tag_list[i].offset *= (2**pdcch_format)
        self.src.set_data(data, tag_list)

        self.tb.run()
        # check data
        res = self.snk.data()

        #        self.assertFloatTuplesAlmostEqual(res, exp_res)
        for i in range(self.cce_len * n_cce):
            #            print i
            resp = res[i * n_cce:(i + 1) * n_cce]
            expp = exp_res[i * n_cce:(i + 1) * n_cce]
            self.assertFloatTuplesAlmostEqual(resp, expp)
예제 #13
0
    def test_001_t(self):
        print "test_001_t"
        # set up fg
        cell_id = 124
        max_len = 84 * self.cce_len
        n_cce = 20
        pdcch_format = 3

        # set up descrambling block
        seqs = []
        for sub in range(10):
            seq = lte_test.get_pdcch_scrambling_sequence(max_len, cell_id, 2 * sub)
            seqs.append(lte_test.nrz_encoding(seq))
        self.descr.set_descr_seqs(seqs)

        # generate test data
        data = []
        exp_res = []
        for i in range(n_cce):
            pdcch = lte_test.get_pdcch(pdcch_format)
            exp_res.extend(lte_test.nrz_encoding(pdcch))
            scr = lte_test.scramble_pdcch(pdcch, 2 * (i % 10), cell_id)
            data.extend(lte_test.nrz_encoding(scr))
            #data = [0] * self.cce_len * n_cce
        tag_list = lte_test.get_tag_list(n_cce, 10, self.tag_key, "source")
        for i in range(len(tag_list)):
            tag_list[i].offset *= (2 ** pdcch_format)
        self.src.set_data(data, tag_list)

        self.tb.run()
        # check data
        res = self.snk.data()

        #        self.assertFloatTuplesAlmostEqual(res, exp_res)
        for i in range(self.cce_len * n_cce):
        #            print i
            resp = res[i * n_cce:(i + 1) * n_cce]
            expp = exp_res[i * n_cce:(i + 1) * n_cce]
            self.assertFloatTuplesAlmostEqual(resp, expp)
예제 #14
0
    def test_001_t (self):
        cell_id = 124
        N_ant = 2
        style= "tx_diversity"
        N_rb_dl = self.N_rb_dl
        sim_frames = 4
        self.demux.set_cell_id(cell_id)
        sfn = 512
        mib = lte_test.pack_mib(N_rb_dl, 0, 1.0, sfn)
        bch = lte_test.encode_bch(mib, N_ant)
        pbch = lte_test.encode_pbch(bch, cell_id, N_ant, style)

        stream = []
        #for i in range(sim_frames):
        #    frame = lte_test.generate_frame(pbch, N_rb_dl, cell_id, i+20, N_ant)
        #    stream.extend(frame[0].flatten())
        #
        #print len(stream)
        for i in range(sim_frames):
            frame = lte_test.generate_phy_frame(cell_id, N_rb_dl, N_ant)
            for p in range(len(frame)):
                frame[p] = lte_test.map_pbch_to_frame_layer(frame[p], pbch[p], cell_id, sfn+i, p)
            stream.extend(frame[0].flatten().tolist() )

        key = self.key
        srcid = "source"
        tags = lte_test.get_tag_list(140 * sim_frames, 140, key, srcid)

        self.src1.set_data(stream, tuple(tags))
        # set up fg
        self.tb.run ()
        # check data
        res1 = self.snk1.data()

        print len(res1)
        compare = res1[0:len(pbch[0])]

        self.assertComplexTuplesAlmostEqual(compare, tuple(pbch[0][0:len(compare)]))
예제 #15
0
    def test_001_t (self):
        cell_id = 124
        srcid = "test_src"
        N_ant = 2
        style = "tx_diversity"
        N_rb_dl = self.N_rb_dl
        sfn = 0
        Ncp = 1
        cfi = 2

        mib = lte_test.pack_mib(50,0,1.0, 511)
        bch = lte_test.encode_bch(mib, N_ant)
        pbch = lte_test.encode_pbch(bch, cell_id, N_ant, style)

        exp_res = []
        for sub in range(10):
            ns = sub * 2
            pcfich = lte_test.encode_pcfich(cfi, cell_id, ns, N_ant)
            exp_res.append(pcfich[0])

        frame = lte_test.generate_frame(pbch, N_rb_dl, cell_id, sfn, N_ant)
        data = frame[0].flatten()
        taglist = lte_test.get_tag_list(len(frame[0]), 140, self.key, srcid)
        self.src0.set_data(data, taglist)

        self.demux.set_cell_id(cell_id)
        #print calculate_pcfich_pos(N_rb_dl, cell_id)
        # set up fg
        self.tb.run()
        # check data

        res = self.snk0.data()

        print "test 001 check res"
        for i in range(len(res)/len(exp_res[0])):
            part = res[i*16:(i+1)*16]
            self.assertComplexTuplesAlmostEqual(part, exp_res[i])
예제 #16
0
    def test_001_t(self):
        cell_id = 124
        srcid = "test_src"
        N_ant = 2
        style = "tx_diversity"
        N_rb_dl = self.N_rb_dl
        sfn = 0
        Ncp = 1
        cfi = 2

        mib = lte_test.pack_mib(50, 0, 1.0, 511)
        bch = lte_test.encode_bch(mib, N_ant)
        pbch = lte_test.encode_pbch(bch, cell_id, N_ant, style)

        exp_res = []
        for sub in range(10):
            ns = sub * 2
            pcfich = lte_test.encode_pcfich(cfi, cell_id, ns, N_ant)
            exp_res.append(pcfich[0])

        frame = lte_test.generate_frame(pbch, N_rb_dl, cell_id, sfn, N_ant)
        data = frame[0].flatten()
        taglist = lte_test.get_tag_list(len(frame[0]), 140, self.key, srcid)
        self.src0.set_data(data, taglist)

        self.demux.set_cell_id(cell_id)
        #print calculate_pcfich_pos(N_rb_dl, cell_id)
        # set up fg
        self.tb.run()
        # check data

        res = self.snk0.data()

        print "test 001 check res"
        for i in range(len(res) / len(exp_res[0])):
            part = res[i * 16:(i + 1) * 16]
            self.assertComplexTuplesAlmostEqual(part, exp_res[i])