Apply Trellis in benchmark_tx and rx

Hi,

I applied trellis in benchmark_tx2 and rx2 using dbpsk2.

I have modified the dbpsk2.py file according to the test_tcm_bit.py.

On the TX side, I add:

    # turn bytes into k-bit vectors
    self.bytes2chunks = \
      gr.packed_to_unpacked_bb(self.bits_per_symbol(), 

gr.GR_MSB_FIRST)

    #add the error correlation code
    fsm =

trellis.fsm("/home/symbol/gnuradio/gr-trellis/src/examples/fsm_files/awgn1o2_128.fsm")
self.trellis_enc = trellis.encoder_bb(fsm, 0);

    #gray code
    self.symbol_mapper = gr.map_bb(psk.binary_to_gray[arity])

    self.diffenc = gr.diff_encoder_bb(arity)
    self.chunks2symbols =

gr.chunks_to_symbols_bc(psk.constellation[arity])

    # pulse shaping filter
    nfilts = 32
    ntaps = nfilts * 11 * int(self._samples_per_symbol)    # make

nfilts filters of ntaps each
self.rrc_taps = gr.firdes.root_raised_cosine(
nfilts, # gain
nfilts, # sampling rate based on 32 filters in
resampler
1.0, # symbol rate
self._excess_bw, # excess bandwidth (roll-off factor)
ntaps)
self.rrc_filter =
gr.pfb_arb_resampler_ccf(self._samples_per_symbol, self.rrc_taps)

Connect

    self.connect(self,
                 self.bytes2chunks, self.symbol_mapper,

self.trellis_enc,
self.diffenc, self.chunks2symbols, self.rrc_filter,
self)

On the RX side:
self.phase_recov = gr.costas_loop_cc(self._phase_alpha,
self._phase_beta,
fmax, fmin, arity)

    # Do differential decoding based on phase change of symbols
    self.diffdec = gr.diff_phasor_cc()

    #the error correlation code
    fsm =

trellis.fsm("/home/symbol/gnuradio/gr-trellis/src/examples/fsm_files/awgn1o2_128.fsm")
metrics = trellis.metrics_c(fsm.O(), arity,
psk.constellation[arity], trellis.TRELLIS_EUCLIDEAN)
va = trellis.viterbi_b(fsm, 1520, 0, -1)

    self.symbol_mapper = gr.map_bb(psk.gray_to_binary[arity])

    # unpack the k bit vector into a stream of bits
    self.unpack = gr.unpack_k_bits_bb(self.bits_per_symbol())

    # Connect
    self.connect(self, self.agc, self.freq_recov, self.time_recov,

self.phase_recov,
self.diffdec, metrics, va, self.symbol_mapper,
self.unpack, self)

I can not get any packets on the receiver side. If I remove the trellis
encode and decode block, everything works fine.
There must be some problems with the use of trellis blocks. Could some
one
give me any clue?
Any help is appreciated!

Best,

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs