Forum: GNU Radio Re: convolutional code + viterbi working

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Achilleas A. (Guest)
on 2007-02-23 06:46
(Received via mailing list)
vincenzo,

Regarding the inter/deinterleaver addition you have to:

instantiate an interleaver object of size K
where K is the length of the data you want to interleave.
There are different ways to do this. The simplest is a random
interleaver:

int_object=trellis.interleaver(K,666) # last parameter is a seed

then you have to instantiate the interleaver and deinterleaver
blocks and put them before and after the CC encoder, Viterbi decoder,
respectively, eg:

inter =
trellis.permutation(int_object.K(),int_object.INTER(),1,gr.sizeof_char)

deinter =
trellis.permutation(int_object.K(),int_object.DEINTER(),1,gr.sizeof_char)

the last argument is the input/output signature size.
the second to last argument says how many of these i/o items you want
to consider as a block that will be permuted according to the
permutation described in the inter_object.

Achilleas
Vincenzo P. (Guest)
on 2007-02-23 21:17
(Received via mailing list)
Hi Achilleas,

yes.. I had got a bit confused about how to use these blocks...

is this correct instead?


 Nfft=2048


        file_source_bytewise=gr.file_source(gr.sizeof_char,
"/mnt/root/gnuradio_datastreams/1.MPG")
        file_chunker=gr.packed_to_unpacked_bb(1,gr.GR_LSB_FIRST) #second
argument is endianness


f=trellis.fsm("/root/MAIN/soft/gnuradio/gr-mystuff/finite_state_machine")
        convolutional_encoder = trellis.encoder_bb(f,0)

self.connect(file_source_bytewise,file_chunker,convolutional_encoder,symbol_mapper)

self.connect(symbol_mapper,series_to_parallel,inverse_fft,parallel_to_series,gain,self.u)






today I've been showing the code to prof. Luise, and he was suggesting
that it is a bit too difficult to achieve the convolutional encoder
needed in DVB-T by specifying a finite state machine, as it would have
too many states and transitions to figure out..

is it possible to specify the encoder using the associated polynomial?



and this is how I connected the viterbi decoder:


 metrics =
trellis.metrics_c(f.O(),1,constellation,trellis.TRELLIS_EUCLIDEAN)
        viterbi_decoder = trellis.viterbi_b(f,K,0,-1)



        file_repacker=gr.unpacked_to_packed_bb(1,gr.GR_LSB_FIRST)
        file_sink=gr.file_sink(gr.sizeof_char,
"/mnt/root/gnuradio_datastreams/2")


self.connect(gain,series_to_parallel_2,direct_fft,parallel_to_series_2,metrics,viterbi_decoder,file_repacker,file_sink)

this stuff seems to work as it is just giving me back the original file
as it happened with the qpsk+ofdm-only script.

best regards
and really realy thanks

vincenzo
This topic is locked and can not be replied to.