Please take a look at the BlockBasedPrecoder letter, paper, source code and documentation.

The BlockBasedPrecoder class provides C++ functions for the encoders, decoders and multiplexers of the block-based precoder. Tested with IT++ 4.0.1 and g++ 4.0.

Block-based precoder schematic

Copyright © 2008 Robert G. Maunder. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

7 Responses to “BlockBasedPrecoder”

  1. Ardi Says:

    Hi Rob,

    I am interested with your block-based precoder. I have been using unity-rate conv code, and I am looking for an alternative. Instead of putting an interleaver between the precoder and the inner code, I directly connect the precoder with demapper. Is it true that the greater the Nd, the earlier the bend will be?

    Thank you

  2. Ardi Says:

    I meant the EXIT curve’s bend.

  3. Rob Says:

    Hello Ardi,

    I would be cautious about removing the interleaver between the precoder and inner code. This interleaver is required to break the correlation between consecutive extrinsic LLRs, as they are iteratively exchanged between the corresponding decoders. I suspect that removing this interleaver would degrade your BER performance. I’m not sure what you mean by Nd. The bend in the precoder EXIT curve depends on the number of states in the precoder - more states can give less bend, which is typically desirable for achieving near-capacity operation. You can see the EXIT functions of various precoder designs in Figure 4 of…

    Take care, Rob.

  4. Ardi Says:

    Hi Rob

    Thanks for your prompt reply.

    1. Does the paper that you mention in the comment above (NCIVLCAIURC) use trellis-based encoder?

    2. Refer to your paper (, Nd is the length of parity bits. Have you published a paper that mention how the value of Nd differs each other?

  5. Rob Says:

    Hello Ardi,

    The paper that I mentioned above does use the trellis-based encoder. Sorry, I thought you were talking about using a convolutional precoder in your message above. As Nd is increased, the EXIT function of the check component shown in Figure 3b will move downwards. I haven’t published any papers on how the value of Nd affects things - in this paper, I chose Nd to give a fair comparison with the benchmarker, but it may be that other values give better performance.

    Take care, Rob.

  6. Ardi Says:

    Dear Rob,

    I’d like to confirm your statement about the comparison. Did you mean the comparison between the effective throughput when you use block-based precoder which is 2.51 and when you use convolutional precoder which is 0.754*1*4 = 3.016? Hence, there will be “effective throughput loss” (sorry I don’t know what proper name is for the degradation), won’t it? Is there any rule of thumb so that the degradation is worthy enough?

    Thank you

  7. Rob Says:

    Hi Ardi,

    The convolutional precoder scheme also has an effective throughput of 2.51, since it uses a 6-bit FLC. This gives a fair comparison between the two schemes.

    More specifically, the convolutional precoder scheme has an effective throughput of 3.77/6*1*4 = 2.51.

    Take care, Rob.

Leave a Reply

Security Code: