Menu

How to use fixed sequence interleaver

2011-03-25
2012-09-15
  • Nasr Minallah

    Nasr Minallah - 2011-03-25

    I am coding and interleaving a vector stream and saving it into file.

    Later I want to deinterleav and decode the same stream, but the interleaver
    has different interleaving sequence and the results doesn't match the original
    stream.

    Is there any technique to declare a similar interleaver later for
    deinterleaving?

    Many thanks in advance.

     
  • Stephan Ludwig

    Stephan Ludwig - 2011-03-25

    Hi iamnasr,

    if you use the Sequence_Interleaver class you have to set the interleaving
    sequence by calling

    void    Sequence_Interleaver::set_interleaver_sequence (ivec in_interleaver_sequence)
    

    (or within the constructor). Why not save the sequence you passed then? Or you
    could get the interleaver sequence by calling

    ivec Sequence_Interleaver::get_interleaver_sequence ()
    

    , especially in the case that you called

    randomize_interleaver_sequence ()
    

    before.

    Have a look at the documentation, it shows you all the options: http://itpp.s
    ourceforge.net/current/classitpp_1_1Sequence__Interleaver.html

    /donludovico

     
  • Nasr Minallah

    Nasr Minallah - 2011-03-25

    Many Thanks for your detailed response.

    Actually, I am performing frame by frame coding and interleaving of 1500
    (variable length) video frames. I want to transmit these 1500 coded and
    interleaved frames and to decode and deinterleave frame by frame after I
    received all of them :'( so keeping track of 1500 interleaving sequences for
    later use seems very tedious job :(

    Is there any way to define some generic sort of fixed interleaver sequence
    which I can use later and get the same results.

    Kind Regards,

     
  • Stephan Ludwig

    Stephan Ludwig - 2011-03-25

    Jep, you have to save all.

    Is there any way to define some generic sort of fixed interleaver sequence
    which I can use later and get the same results.

    Not to my knowledge. You could use the methods in the UMTS, CCSDS or CDMA2000
    standards, but calculating them might be a higher effort than reading from
    file.

    in the Turbo_Codec file there is a global function

    ivec wcdma_turbo_interleaver_sequence(int interleaver_size)
    

    which calculates the interleaver for UMTS/WCDMA with some restriction on
    sizes. I do not know how this works, especially if you use block lengthes
    other than the ones specified in the standard. I quickly had a look at it and
    it seems that it acceps arbitrary block lengthes between 40 and 5114 bits. But
    I am not sure if the interleaver sequence of this has the full length, i.e.
    the interleaver will output all bits you have sent into it.

    Is there no way circumventing the variable block lengthes?

    /donludovico

     
  • Nasr Minallah

    Nasr Minallah - 2011-03-25

    I also tried "ivec wcdma_turbo_interleaver_sequence(int interleaver_size)"
    function but after some limit in interleaver size it also doesn't work.
    Unfortunately I can't manage to keep my block length constant.

    I tried using my own "ivec my_interleaver_sequence(int interleaver_size)"
    sequence generator, which generates non repetitive random sequence of size
    interleaver_size. The sequence is random but I make it fixed by providing
    specific seed to srand() C function and so far it works fine.

    But I am not sure about its efficiency.

    Do you think the IT++ interleaver sequence generator have some specific
    features for performance improvement? or they are just random? because "ivec
    my_interleaver_sequence(int interleaver_size)" is just random.

     
  • Stephan Ludwig

    Stephan Ludwig - 2011-04-12

    Hi,

    Do you think the IT++ interleaver sequence generator have some specific
    features for performance improvement? or they are just random? because "ivec
    my_interleaver_sequence(int interleaver_size)" is just random.

    in short: you cannot know, except simulation all codes an compare to the WCDMA
    interleaver ;-)

    The WCDMA has been surely chosen for some certain (peroformance) reasons (I do
    not know them!). But you cannot say how the performance will differ from a
    randomly chosen but fixed interleaver. Depending on you fortune when drawing
    the interleaver sequence you performance will differ. Hence, the theoretical
    random interleaver argument will not hold here. But with high probability it
    will not have the worst performance :-)

    /donludovico

     

Log in to post a comment.