I searched the web and could not find any reference on the girth of 5G NR LDPC code. Could someone please help me?
Hello,
The 5G-NR codes are based on lifting. I do not think it is possible to determine the girth directly from the corresponding exponent/base graph directly. It depends on the used codeword size, i.e., depends on the lifting factor involved. As far as I know, you probably need to run some iterative algorithm that goes through possible combination of cycles for the specific base graph and lifting size. I guess some algebraic properties can be used to simplify the procedure, but I am not sure if they can lead to a non-exhaustive option.
Best,
Bashar
Thank you. I heard that for ldpc decoding if the number of iterations exceeds the girth, the decoding output will soon be highly correlated. I couldn’t prove that, but I observed in simulation the number of correct signs also increases with the number of iterations. Then what’s the consequence of highly correlated decoding output? Can I use the decoding output as APP probability even if the number of iterations is large?
The girth corresponds to the shortest cycle in the Tanner graph. Since iterative (loopy) belief propagation is used to decode LDPC codes, then the girth can tell you after how many iterations the information from a variable node comes/propagates back to itself. This is not straightforward to answer, and it depends on the iterative algorithm used, its strategy (i.e., serial vs. parallel), and how the bits altogether connect with each other (code design), which then affects how “new” the passed information is.
Generally speaking, more iterations means that you are able to fetch information from far away bits that are connected to neighbors of neighbors and so on. The farther you can reach, the more you can correct your bits, hence more iterations help with improving the decoding performance. However, since cycles are present in the code, then it will cause you not just to get information from “new” neighbors, but also pass back and forth already known information (what you call correlation).
Depending on the algorithm used, passing already known information back to the node, may result in amplified beliefs, where the variable nodes essentially start to think that their decision is highly reliable, while in reality, they are just getting the same info passed around and added indirectly. In this case, it would be of course problematic to consider such an output as a probabilistic estimate. But as I mentioned, this depends on how things are implemented.
There are many good coding theory books that dive deep into such issues. If you are interested in the theoretical background, you should definitely check one of them out; for example “Channel Codes: Classical and Modern” by Shu Lin and William E. Ryan.
Thank you for the reference. Before I read this book, I wonder if you have a quick answer to the question: I’m using layered belief propagation algorithm to decode 5G NR LDPC code with 12 iterations, then what can I do to make the final output LLRs as exact APP probabilities?
As I mentioned, there is no exact answer to that. It depends on the code you are using, what variant of belief propagation you have, and what strategy it follows (parallel vs. serial). There are some regularization methods that can be used to prevent the LLRs from blowing up in value, and therefore can be used to arrive somehow at acceptable APPs estimates.
You should look up papers on this topic and see what worked for others. Unfortunately, I do not really have an answer to your question.
Best regards,
Bashar
Thank you for the clue. By regularization do you mean normalized min-sum or offset min-sum or something like that?
Damping, LLR clipping, early decoding stopping, as well as what you mentioned with normalization and offsetting with min-sum. It depends really. You have to see what works for your problem.
Thank you very much. By the way, is there a very active community interested in physical layer algorithms for current communication systems like 5G NR which I can join?
Maybe open-source communities? For example Sionna or GNU Radio?