I am new to this site, which I joined with the aim of finding someone to help me with a little doubt.

I am trying to design a system that must be able to work at extremely low (the lower, the better, since that would improve the range) SNR (AWGN channel). Latency and datarate (less than 10Kbps at the source, low resolution imaging) are not a problem, so I am looking for the "best" FEC possible. It will use a BPSK with a roll-off factor of the RRC filter of 0,2.

As of now, the three options I am working with are Turbocodes, LDPC and BCH codes. The one I am considering implementing is an LDPC as outer code and a Turbocode as inner code, with an interleaver in between. However, I do not know whether this corresponds to the optimal configuration of outer and inner code.

For instance, the DVB-S2 standard makes use of a BCH code instead of the Turbo, while other spacial missions tend to use the latter.

  1. Would any other combination of codes reduce the necessary Eb/No in order to achieve relatively low (<1e-04) BER?

  2. How do these codes perform against burst errors? Apart from the interleaver between inner and outer code and a randomizer before the FEC stage, is there any other mechanism to improve this aspect?

  3. What of the two (outer/inner) codes should have the highest coding rate and why?

Those are a lot of questions, but I would really appreciate if anyone could help in some way with any of them.

Thank you in advance

  • 2
    $\begingroup$ These are very wide questions. What are your gross and net bitrates? What is the modulation scheme? And could you provide an SNR value when you mean low SNR? You coud update your post with those parameters to have better answers $\endgroup$
    – user51024
    May 8, 2021 at 11:16
  • $\begingroup$ @gotchi8& Updated! Thanks! $\endgroup$ May 8, 2021 at 11:45
  • $\begingroup$ what is "very low" to you? Generally, as channel coder, I usually don't care about SNR, tell me your $E_b/N_0$ ;) (the difference here is that if you have fixed bandwidth, and fixed SNR, you can integrate for longer, and exchange bit rate for bit energy proportionally) $\endgroup$ May 8, 2021 at 16:32
  • $\begingroup$ @MarcusMüller Thank you for the information. As I am studying the link, K take into account the SNR. What about an Eb/No of around 0dB? $\endgroup$ May 8, 2021 at 16:50
  • $\begingroup$ If you're set at using BPSK, little coding that you can actually do at that Eb/N0; Shannon-Hartley says your bit rate is then identical to your bandwidth, and since BPSK transports one bit per channel usage, you've got zero heardoom for anything but your raw info bits. $\endgroup$ May 8, 2021 at 17:01

2 Answers 2


The one I am considering implementing is an LDPC as outer code and a Turbocode as inner code, with an interleaver in between.

I have not seen any implementation of LDPC and Turbo Codes concatenation yet. There is probably a reason no one tried (which I don't know). The first limitation I see is the fact that decoders need soft-decision inputs in order to be optimum or close to theory. Building an LDPC or Turbo decoder with soft outputs is an effort (COST IPs deliver hard bits on outputs).

Inner-Outer coders topologies were used for technological reasons. At the beginning of communication systems main coders/decoders that were possible to implement (no IC technology limitations) were Convolutional Codes and Reed-Solomon. The decoding gain of each was not enough, so they were combined.

Then arrived Turbo Codes (in the 90's - I was a child) allowing more decoding gain in a single decoder than CC+RS. After then, in the 2000's arrived DVB-S2 and LDPC's. The reason why LDPC is combined with BCH is that there is an error floor. BCH is there to correct those last single errors LDPC cannot correct.

How do these codes perform against burst errors?

Interleaving is really to investigate case by case and depends on your channel. If you find that a burst of errors which can be to much to be corrected in a frame could happen, then interleave several frames is a possible approach.

Would any other combination of codes reduce the necessary Eb/No in order to achieve relatively low (<1e-04) BER?

I think you should be able to pick a single code. The choice is up to your link budget. Finding the code for a given architecture is another story important to consider!

There is a good document that gives an overview of codes used in space communications. Look for CCSDS 130.1-G-3. Figure 3-3 shows Shannon limits, Figure 3-5 some codes comparisons and Figure 7-10 shows Turbo Codes performances.

Also this website has an interactive FEC comparator: https://aff3ct.github.io/comparator.html

Whatever the code you choose to go to the lowest SNR or EbN0, you have to keep in mind how your demodulator is going to behave to lock the low signal. A 0 dB EbN0 LDPC 1/2 BPSK channel can be so "noisy" that some demodulators are not able to lock on it

  • $\begingroup$ Thank you very much! Just for your interest, this is a paper I read about chaining an LDPC with a tubo code: onlinelibrary.wiley.com/doi/pdf/10.4218/etrij.06.0206.0060 $\endgroup$ May 10, 2021 at 11:14
  • $\begingroup$ By the way, in case of using for example a single LDPC code, what would the optimal place for the interleaver be? Intuitively, I think it should be at the output of the encoder but before the Attached Sync Marker. However, in this configuration, aren't the sync words unprotected? Wouldn't this be a problem? $\endgroup$ May 10, 2021 at 13:28
  • 1
    $\begingroup$ You could interleave several LDPC frames. The ASM and Frame synchronization are described in CCSDS 130.1-G-3 in section 9.3. ASM has to be long enough and with a correct FSM stategy implemented to be robust $\endgroup$
    – user51024
    May 10, 2021 at 13:55
  • $\begingroup$ Nice! Thank you very much! $\endgroup$ May 10, 2021 at 19:28

Very shortly: as you approach the ultimate Shannon limit (-1.59 dB = Eb/N0) with a finite-length code, then you're better off not coding at all. Intuitively, you have very little energy to spend, and spreading the little energy to more bits hurts more than you can then correct with these code bits.

So, for Eb/N0 that I'd call "very low", the right code in term in terms of Bit Error Rate is "no code at all".


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.