robmaunder / polar-3gpp-matlab

Matlab simulations of the encoder and SCL decoder for the New Radio polar code from 3GPP Release 15
GNU General Public License v3.0
118 stars 76 forks source link

Hi,Why QPSK modulation's LLR is that? #1

Closed cod1239 closed 6 years ago

cod1239 commented 6 years ago

I am a rookie in new radio. In plot_BLER_vs_SNR.m ,I find the LLR vector be caculated by your method(In line 151-154). But I find some paper,the LLR in QPSK modulation,use 'ln' to caculate,and you donot use it. can you tell me why? thank you!

robmaunder commented 6 years ago

Hi cod1239,

LLRs are defined as LLR = ln(P(bit=0)/P(bit=1)) - I think this is the ln that you are referring to. To get P(bit = 0) and P(bit = 1) in QPSK, you need to use exp - this comes from the Gaussian noise equation. So rather than using exp to get P(bit = 0) and P(bit = 1), then use ln to get LLR, we can cancel the exp and the ln out. This is why we don't need ln (or exp) to get LLRs from QPSK.

Take care, Rob.

kumuds4 commented 4 years ago

How about the approximate LLR's for 64-QAM or say 8-PAM? I have all individual LLR's. My question is how to add them to get the total of LLR's to go for decoding. Here 8-PAM is not same as 4-PAM. QPSK, I have seen your codes. I am talking about polar codes, higher order modulation. I know eEidl's work and Tavildar's as well. I would like to keep the polarization base as 2x2 instead using Mahadafir's approach. Thank you so much. Matlab or Python either OK.

robmaunder commented 4 years ago

Hi kumuds4,

I use QPSK here because that is what 3GPP used throughout the polar code design and analysis process. Also, polar-coded control information is mostly (but not always) transmitted using QPSK in 5G New Radio.

But the code I have provided here can be readily combined with a higher order modulation scheme - the LLRs produced by a higher-order demodulator can be used directly with this polar decoder.

Take care, Rob.

kumuds4 commented 4 years ago

Hi Professor Maunder,

Thank you so much. Yes, the LLR's are fine. I have figured out to calculate piece-wise approximations of LLR'S for 8-ASK, 64-QAM. However, I am still unable to add approximate LLR's i.e. let us say using, 8-ASK for three bits, b{0}, b{1} and b{3}, [y{i}= Z]; [ y{i}=[abs(Z-4)]; [y{i}=abs((Z-4 )+2)]. These are three and Euclidean distance keeps changing. That's where it becomes different from BPSK, QPSK.

Once, I get all these added to feed to decoder, I can do BER, and BLER both for QAM as well. When, minute, please suggest, any good method to add the approximate LLR's obtained.

Best regards,

Kumud S. Altmayer

On Sun, Sep 6, 2020, 3:27 PM Rob Maunder notifications@github.com wrote:

Hi kumuds4,

I use QPSK here because that is what 3GPP used throughout the polar code design and analysis process. Also, polar-coded control information is mostly (but not always) transmitted using QPSK in 5G New Radio.

But the code I have provided here can be readily combined with a higher order modulation scheme - the LLRs produced by a higher-order demodulator can be used directly with this polar decoder.

Take care, Rob.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/robmaunder/polar-3gpp-matlab/issues/1#issuecomment-687878122, or unsubscribe https://github.com/notifications/unsubscribe-auth/AFPTJ5NUBMWAEEHGDIAO5WTSEPPCPANCNFSM4EDNSFXQ .

robmaunder commented 4 years ago

Hello again,

You can see Matlab code for soft decision demodulation at... https://github.com/robmaunder/exit-matlab

You just need to modify the bit_labels and constellation_points in soft_demodulate.m

Take care, Rob.