NOMA - How superposition coding works?




Non Orthogonal Multiple Access (NOMA) is a candidate multiple access scheme for 5G. The fact that NOMA allows multiple users to transmit and receive simultaneously using the same frequency may appear intriguing. The two key operations that make NOMA possible are superposition coding which must be done at the transmitter side and successive interference cancellation (also known as SIC) at the receiver side. In this post we will see about superposition coding.

Let us say two users User 1 and User 2 are going to communicate simultaneously using the same frequency. Let x1 denote User 1's data and x2 denote User 2's data. For simplicity, let us assume that each user has just 4 bits of data to send. This assumption is far from reality, but is sufficient to understand the basic working of NOMA.

Let x1 = 1010 and x2 = 0110. A graphical view of x1 and x2 is shown below.


x1 and x2 must undergo digital modulation before transmission. Let's use BPSK for simplicity. BPSK maps 0's to -1's and 1's to +1's. After BPSK modulation, x1 is mapped to +1 -1 +1 -1 and x2 is mapped to -1 +1 +1 -1 as shown below.

NOMA requires superposition coding at the transmitter side. Superposition coding is a fancy term for power domain multiplexing. To superpose means to add. So basically we're going to add x1 and x2 together. But before doing that, we are going to multiply them with different power levels. Then, we will add them together.

From the previous figure, we can see that both x1 and x2 have a peak amplitude of ±1. That means, they both have unit power or, 1 watt (Remember, power = amplitude2).

Lets say we give the power weights as a1=0.75 to user 1 and a2=0.25 to user 2. A rule to follow here is that a1 and a2 must sum up to 1.
Here, we have used fixed power allocation. That is fixed values of a1 and a2. To know how to optimize a1 and a1, see this post: How to do power allocation in NOMA?
First, let's scale x1 and x2 with √a1 and √a2 respectively. Why square root? Because a1 and a2 represent the power scaling factors. To make them represent amplitude, we take the square root. After scaling, the signals look as shown below. Note that the amplitude of x1 is scaled to √a1 = √0.75 = 0.866 and the amplitude of x2 is scaled to √a2 = √0.25 = 0.5. So our amplitude scaled versions of the data are, √a1x1 = 0.866 -0.866 0.866 -0.866 and √a2x2 = -0.5 0.5 0.5 -0.5.

Now it is time to add both the scaled signals together. The resulting signal is called superposition coded signal and is denoted by,
x = √a1x1 + √a2x2. Adding them both together we get x = 0.366 -0.366 1.366 -1.366.
A graphical representation of x is shown below. Note that each corresponding term of √a1x1 and √a2x2 from the previous figure are added together to get the graph of x shown below.

This signal x is the superposition coded NOMA signal that is actually transmitted into the channel. So, that's how superposition coding is done. Note that x is a linear combination of x1 and x2. In the next post, we shall see how we can recover x1 and x2 from x using successive interference cancellation (SIC).

PS: Click here to download the MATLAB code for superposition coding. Try different values for data x1, x2 and power weights a1 and a2 to gain an intuition on how superposition coding works!



Comments

  1. hi ! thanks for useful information .I want to ask why so many errors occur when I superimpose the same high level of modulated signals. (for example 64-QAM for both of user) I cannot get a uniformly distributed constellation scheme for the superimposed signal.

    ReplyDelete
    Replies
    1. Hi yagmur! NOMA is aiming for high spectral efficiency at the cost of increased BER.

      We know that there is always a tradeoff between spectral efficiency and BER.

      Especially, when we go for higher order modulation schemes like 64-QAM, the euclidean distance between the constellation points decreases. This leads to high BER. (We can avoid this by increasing the transmit power)

      Coming to the 2nd part of your question, the distribution of points (or, their euclidean distance) in NOMA constellation is decided by the values of the power allocation coefficients.

      You can adjust those values to get an uniformly distributed constellation. But it may not be mandatory.

      Hope this helps.

      Delete
    2. Hi yagmur! Just an additional thought. While doing SIC, make sure you remodulate the previously decoded signal before subtracting it from the received signal.

      Because the x1 and x2 are present in modulated format in y.

      Delete
  2. thank you very much for antwort ! Although I have tried different power allocation coefficients, there are gaps in the constellation scheme, I can not see some points.

    ReplyDelete
    Replies
    1. If you are using matlab's in-built functions for modulation, you may want to generate the input data x1 and x2 as randi([0,M-1],N,1), where M is the constellation size. If you do that, all the points will be visible in the constellation.

      Delete
  3. Thank you so much for this tutorial and Matlab references. It's quite helpful to understand power spectrum NOMA scheme.

    ReplyDelete
    Replies
    1. Hi! Glad to know that you found this useful. Thanks for your support

      Delete
    2. Hi Joe! Yes ,I am using Matlab and I generated the input signal in that way, thanks again and I also wanted to say that it's really helpful and great that you answer the questions.

      Delete
    3. Highly appreciable. Thanks a lot , for sharing the knowledge.
      can you help me with NOMA matlab codes for short packet communication and SWIPT-NOMA find OUTAGE PROBABILITY AND ENERGY EFFECIECY

      Delete
    4. Hi, glad to know you found the blog useful.
      SWIPT-NOMA is covered in this post: https://ecewireless.blogspot.com/2020/08/what-is-cooperative-swipt-noma.html
      Will make a post on short-packet communication soon!
      Thanks for your support

      Delete
  4. hello joe , I higly appreciate your efforts on providing us such helpful material.
    do you have further material on SWIPT-NOMA find OUTAGE PROBABILITY AND ENERGY EFFECIECY
    thanks

    ReplyDelete
    Replies
    1. Thanks Mubasher! I have the code for cooperative SWIPT NOMA
      Ping me electronicswithme@gmail.com and I will send it to you!

      Delete
  5. Hi Joe,
    Why don't we multiply the available capacity?
    √(α_2) x_2 ?

    and

    Why get this? (power = amplitude2)
    Thank you!

    ReplyDelete
    Replies
    1. Hi, we know that power,
      P = V^2/R = I^2 R.
      If we assume R = 1 ohm, we can see that power is equal to the square of the voltage or current amplitude.

      Can you explain the first part of your question in more detail please? I can't get it.

      Delete
    2. Why don't you multiply them by the available P capacity?
      √ P(α_2) x_2?
      √ P(α_1) x_1?
      Thank you!

      Delete
    3. Yes, we have to include P also, like you said. Here we are assuming P = 1 watt. I did not state that in the post. Will update it. Thanks for notifying!

      Delete
  6. xmod1 = 2*x1-1;
    xmod2 = 2*x2-1;
    sir ,why you introduced these new variables?

    ReplyDelete
    Replies
    1. Hi,
      These two lines are to perform BPSK modulation.
      x1 and x2 contain binary data in 0's and 1's. They are mapped to -1's and +1's in xmod1 and xmod2

      Delete
  7. sir,
    why the graph for x-axis starts from 1 to 5 why not 0 to 4 ?
    if it is possible how to change?

    ReplyDelete
    Replies
    1. Hi, you can change the axes by using the following lines in the place of stair plots
      hh = 0:length(x1);
      stairs(hh,[x1, x1(end)]);
      axis([0 4 -2 2])

      hope this helps

      Delete
  8. sir,
    during modulation why carrier signal is not used

    ReplyDelete
    Replies
    1. Hi, carrier signal will be used real-time bandpass transmission. But here we are using an equivalent baseband transmission model. So carrier is not required.

      Delete
  9. Very impressive post, help me a lot to learn the basic knowledge of NOMA!!!

    ReplyDelete
  10. Joe I don't know who you are or where you at, but I will find you and I will hug you, seriously thank you for this amazing tutorials sir.

    ReplyDelete
  11. Sir ,can you please explain what changes we need to make when two signals of different modulation formats are overlapped by NOMA? Say a 900 bit sequence is BPSK modulated at user-1 and 8PSK modulated at user-2. In that case the lengths will be 900x1 for BPSK and 300x3 for 8PSK. In that case how can we add the two signals?

    Also, please mention the details regarding upsampling and pulse shaping before transmission.

    ReplyDelete
    Replies
    1. Hi, if we have to add BPSK and 8-PSK signals, then we have to adjust the number of binary bits such that, after performing digital modulation, we have the same number of symbols for BPSK and 8-PSK.

      For example, if we generate 1000 bits for the BPSK user, then we have to generate 3000 bits for the 8-PSK user. After digital modulation both the users will have 1000 symbols. So adding the symbols now is straightforward.

      Regarding upsampling and pulse shaping, we will cover them in a future post...

      Hope this helps

      Delete
  12. Thank you Mr. Joe for the awesome tutorial and coding with appropriate explanation. Keep posting ....

    ReplyDelete
  13. Hello, its happy to see this blog with the valuable information required, Please help me with the data/information on NOMA+GWO implementation on vehicular networking. After searching for so many blogs its not very clear how it actually works. Kindly help me

    ReplyDelete

Post a Comment

Popular posts from this blog

How to simulate BER, capacity and outage probability of NOMA (Rayleigh fading) using MATLAB?

How to simulate a simple NOMA system (AWGN) using MATLAB?

How to do power allocation in NOMA? (with fairness to far/weak user)