|
From: | Achilleas Anastasopoulos |
Subject: | Re: [Discuss-gnuradio] Gr-trellis ; convolutional code and, convolutionnal interleaver. |
Date: | Wed, 14 Apr 2010 10:35:39 -0400 |
User-agent: | Thunderbird 2.0.0.24 (Windows/20100228) |
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 2which 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 Belliard wrote:
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 On Tue, April 13, 2010 7:58 pm, Achilleas Anastasopoulos wrote: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
-- _______________________________________________________ Achilleas Anastasopoulos Associate Professor EECS Department Voice : (734)615-4024 UNIVERSITY OF MICHIGAN Fax : (734)763-8041 Ann Arbor, MI 48109-2122 E-mail: address@hidden URL: http://www.eecs.umich.edu/~anastas/ _______________________________________________________
[Prev in Thread] | Current Thread | [Next in Thread] |