This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

VCP2 with tail biting on 6482

I'm using the VCP2 on a 6482 to do tail-biting Viterbi decode (like in 3GPP LTE). To get the tail-biting to work, I made 3 copies of the input branch metrics (back-to-back-to-back in memory) and set the VCP2 frame length to 3x the actual size.

After running the VCP2, I pull the middle 1/3 of the output bits out as my actual output. That works ok... but is there a way to have the VCP2 take care of the tail-biting without having to make 3 copies of the input?

I messed with the tailBitEnable field in the VCP2_BaseParams...  but didn't have any luck.

thanks!

  • Brad,

     

    The zip attached is an example (src\ConvDecoder\) of using tail biting with the vcp2.  I am by no means an expert on this topic, but my understanding of your approach is that you are doing it correct, however, your pre and post cyclic size doesn't have to be the full block length.  The zip also contains a pdf which discusses this...  "The size of the prefix/postfix must at least be set to the convergence length of the treillis (i.e. 3x to 5x the length of the code constraint length (K))."

    Hope that helps,

    Travis

    VCP2_TailBiting_WiMax_ConvCodec_tci6482.zip
  • Thanks alot!  The pdf was very helpful!

    Brad

  • I have a similar problem about this issue.

    I am using 1/2 convolutional coder but don't include the k-1 tail bits at the end of the encoded data. If I use 0 for the initial state value for the convolutional coder, I get the true results even with noise but when I try to use last k-1 bits for initial state value for encoding, I can't get the true results for the last 12 bits, even if I try the post and prefix insertion, still can't get the right results for the last bits.

    Can I ask if you use 2 *( data_len + K - 1 ) encoded data len or not?

    Thanks

    Alphan

  • For a rate-1/2 convolutional encoder, the total number of encoded bits for a zero-tailed code block should be (2 * (num_uncoded_bits + K - 1)) and the number of encoded bits for a tail-biting code block should be (2 * num_uncoded_bits). 

    In order to use the prefix/postfix tail-biting decoding method described in the zipfile, the frame_length parameter given to the VCP2 should be (num_uncoded_bits + 2 * P), where P is the (uncoded equivalent) length of the prefix/postfix, which should be in the range: (3 to 5) * (K-1).

    There is a complete example project in the zipfile that uses rate-1/2 and constraint-length K=7.  Please refer to it as a detailed working reference.

     

    Regards,

    John

  • Hi John,

    May I ask you a simple question?

    I want to run the example above using C6670,how could I change it to fit in the new board ,since its project is constructed in the 6482. It's big endian or little endian?

  • tscheck,
    when I use the example,I find some questions,can you help me?
    1. the prefix/postfix , do we calculate them using the soft bits after demodulation or do we calculate them using the BM ?
    2.what does the length mean "3x to 5x the length of the code constraint length (K))",in bit or byte? In my case , the uncoded bit length is 47bit,
    I use the 1/3 rate tail-biting convolutional coding, (K=7),so the coded length is 47*3=141bit, but after demodulation ,the legth of soft bits I get is 141 byte ,what should I do? take 3*6-5*6,i.e.18-30bit(or byte ?) of the 141 byte as the prifix/posfix ? or I calculate the BM using the 141byte soft bits ,and then I take 18-30 bit(or byte ?) from the BM as prefix/postfix?