Gr-trellis ; convolutional code and, convolutionnal interleaver

Axel,

First, there is no such thing in gr-trellis as a “convolutional
interleaver”. There is only a generic interleaver, ie a permutation
which is defined through the different constructors provided in
interleaver.h (through a file, random, etc).
If you do not want to have super control over it i suggest you start
with just a random interleaver and see how it works.

Second, I see a minor problem in your code:
the viterbi block should specify the block size as its 2nd parameter
so instead of

self.va = trellis.viterbi_s(f,2,0,-1)

you should put something like

self.va = trellis.viterbi_s(f,len(self.src_data),0,-1)

I tried this modification and works fine with me.
Let me know if you have any problems,
Achilleas

Hi
Thanks for answering my questions.

I changed my code, it works now.
I will try the random interleaver, to see how it works. But in the end I
will need a super control over it. I need something that look like that
:
http://www.mathworks.com/access/helpdesk/help/toolbox/commblks/ug/fp60504.html
(see convolutional interleaver section).

Thanks again

Axel

Axel,

regarding your interleaver question:
Block or convolutional, I suspect that any practical application will
use a convolutional interleaver in a “block” fashion, ie
it will have M symbols in the input and produce M symbols at the output
where the positions are permuted.
If you can describe this permutation, and put it in a file then
you can use the gr-trellis version of interleaver.
For instance a length 5 interleaver looks like that:
3 1 5 4 2
which means that the first symbol goes to position 3, the second to
position 1 the third to position 5, etc. I have included at least one
exampl in the examples directory og gr-trellis.

If this is not the case and you still want a semi-infinite sequence as
the input you can easily write your own block for the convolutional
interleaver; it seems pretty straightforward as it consists of a
demultiplexer 1-to-N, multiple delay elements with different delays
D(1), D(2),…,D(N), and an N-to-1 multiplexer. Hey, this can even be
done as a hierarchical block using existing gnuradio blocks…

Achilleas

Axel B. wrote:

(through a file, random, etc).

self.va = trellis.viterbi_s(f,len(self.src_data),0,-1)

I tried this modification and works fine with me.
Let me know if you have any problems,
Achilleas


Achilleas A.
Associate Professor
EECS Department Voice : (734)615-4024
UNIVERSITY OF MICHIGAN Fax : (734)763-8041
Ann Arbor, MI 48109-2122 E-mail: [email protected]
URL: http://www.eecs.umich.edu/~anastas/


I took your advice, and I designed my convolutional interleaver using
existing gnuradio blocks. It was pretty easy. I just need to add an
“addtail” c++ block. It will do the exact opposite of gr.skiphead.
Do you think I should post this work?

Thanks for your help.
Axel