Forums

Code vs Uncoded EbN0

Started by chess 6 years ago4 replieslatest reply 6 years ago1159 views
I would like to calculate E_b/N_0  when the code rate is R_c for BPSK signal. What I got this

$$
E_b/N_0= \frac{1}{2R_mR_c \sigma^2}
$$
and that is the case also according to [this page](http://www.gaussianwaves.com/2010/04/ber-vs-ebn0-for-bpsk-modulation-over-awgn-2/).

$R_m=1$ for BPSK and $\sigma$ is standard deviation of the noise. Therefore I can say new $E_b/N_0$ is equal to old $E_b/N_0$ multiplied by $1/R_c$, therefore in $\log$ scale
$$
{E_bN_0}_{[\rm db]}={E_bN_0}_{[\rm db]}(\textrm{old})-10\log10(R_c)
$$
however this is different from [what  MATLAB help says](http://www.mathworks.com/help/comm/ug/configure-ebno-for-awgn-channels-with-coding.html) since according to them

    CodedEbNo = UncodedEbNo + 10*log10(codeRate);


- Can anyone explain where might be the problem?
- And why my equation is not the same as Matlab help?
[ - ]
Reply by SlartibartfastAugust 22, 2016

Help me understand your question.   If I understand correctly, you're asking what's the difference between:

EbN0[db]=EbN0[db](old)10log10(Rc)

and

CodedEbNo = UncodedEbNo + 10*log10(codeRate);

According to your description of what you mean by EbN0[dB] and EbNo[dB](old), there is no difference.

I will refer you once again to:

https://www.dsprelated.com/showarticle/168.php

I will also suggest that if you ask a question and somebody gives you an answer or points you to an article that answers the question, instead of re-posting the same question re-written a little differently, that you ask for clarification of what you didn't understand from the answers you got the first time you posted the question.


[ - ]
Reply by chessAugust 22, 2016

Thanks but I do not get how come two equations are the same according to articles you were referring to my equation would be correct. Can you elaborate why following equation[1] and what is described in the article or my first equation are the same?

CodedEbNo = UncodedEbNo + 10*log10(codeRate);            [1]

[ - ]
Reply by SlartibartfastAugust 22, 2016

The definitions of coded bit and uncoded bit can get swapped.  In the article I referenced Ec was specifically defined to represent the channel bits, which are coded, so, therefore coded bits.

However, in other contexts the channel bit is always referred to as the uncoded bit since the terminology is then consistent whether the system uses coding or not, and adding coding makes the information bit the coded bit.

So, as Tim mentioned, follow the definitions for the specific sources.   If the definitions of coded bit and uncoded bit are swapped (which they can be), then the sign of 10log(Rc) may change depending on what you're trying to compute.

Regardless, N0 doesn't change, so the only thing being changed (when you use Eb for both the channel and the information bits, as you are doing), is the energy in Eb.   For example, if Rc = 1/2, then the energy from two channel bits are added together to get the energy in one information bit, so in that case Eb (information bit) = Eb (channel bit) - 10log(Rc) since 10log(1/2) = -3.

So, check the definitions for each source, and also check the intent of the equation in each source.

[ - ]
Reply by Tim WescottAugust 22, 2016

I suspect a different definition for \(R_c\).  Reading the derivation is always a good idea.  If I'm not mistaken this should be for linear coding, AKA spread-spectrum.