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

on 2007-02-23 06:46

on 2007-02-23 21:17

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