correlation receiver to allow two users to transmit at the same time

Hello! I understand that using correlation, one can set up a system wherein multiple users can transmit at the same time using the same channel. And theoretically, I understand that if the correlation is equal to 0, then one can restrict which one will be able to receive which kind of data. For example, If User 1 transmits data X and User 2 transmits data Y, add them, and send them in the same channel, then User 3 can receive data X provided that it knows the correlation. And another user cannot receive data X.

What I don't quite understand is the mathematics behind it. How do I prove that data X transmitted by User 1 gets received by User 3, and not another User. What equations can I use, or how does this use the autocorrelation function $$ R_{xy}\left[ k \right] =\sum_{n=-\infty }^{+\infty }x\left[ n-k \right]y*\left[ n \right] $$



Correlation is a sum of products. With a "correlation function" (such as autocorrelation function, cross-correlation function, etc) we are actually doing multiple correlations, one for each possible change in some variable of interest. In this case, the OP has shown a cross-correlation function since it is the correlation between $x$ and $y$ with the variable of interest being a delay index $k$. It is also very important to point out that it is a complex conjugate multiplication (the OP did not raise the * so may not be clear so rewriting here):

$$R_{xy}[k] = \sum_{n=-\infty}^{+\infty} x[n-k]y^*[n]$$

In this case the variable of interest is the delay index $k$ where the correlation (sum of products) is being computed for each possible delay index $k$: we delay one waveform relative to another and repeat the sum of products computation (lots of processing!), and here we would be looking for either a delay index $k$ where the correlation is strongest to the waveform we are looking for (so if $y[n] = x[n] + noise$ for example where "noise" could be other users), and we would desire that other users be uncorrelated so not have any correlation response.

We could also use this property for timing and synchronization by using codes that have an auto-correlation property where they are very strong when the codes align and nearly zero for every other offset. Auto-correlation is given as:

$$R_{yy}[k] = \sum_{n=-\infty}^{+\infty} y[n-k]y^*[n]$$

A simple example of this is a 11-bit barker code given as 1 0 1 1 0 1 1 1 0 0 0

If you replace all zeros with -1 in the above sequence, you will see that the autocorrelation is 11 when the code aligns and -1 for every other rotational shift (by doing a sum of products which is correlation).

In terms of using this with multiple users (CDMA), consider that each user has a unique code, and very importantly we'll assume that the power from each user that a receiver sees is about the same (this is very important for CDMA to work properly and thus a reverse power control mechanism is often used, or as it the case of Satcom such as GPS, the transmitters are so far away that all receivers receive about the same power level from each of the satellites). If each user has a unique code and those codes for each user are known to be uncorrelated, we can use cross correlation of correlating the received signal given by $r[n]$ with the code for a given user given by $y[n]$ to extract the data for that user (one way to do this such as with spread spectrum is to modulate the code sequence so that the entire sequence is inverted according to the data and thus the data is at a much lower rate than the code). The math is to just use the cross-correlation function, or more likely use a delay lock loop to align the local code with the code position in the received signal and just keep computing the correlation: if our local code is known to be aligned from a prior acquisition operation, then we simply multiply the received signal by the local code and accumulate over the sequence (symbol) period. This is an integrate and dump receiver. Often there will be additional integrate and dump channels to maintain tracking (early-late).

  • $\begingroup$ Hello! To check if I understood this right, if I have 4 uncorrelated signals, lets say [1 0 0 0] [0 1 0 0] [0 0 1 0] [0 0 0 1], then if I want to send a symbol $a$ from [1 0 0 0] to [0 0 1 0] I will just cross correlate the two? so $r = [0 1 0 0 0 0 0]$. And I know the other users won't see this because if I cross correlate [1 0 0 0] with the other two signals it won't be equal to $r$? $\endgroup$
    – Minchu
    May 18 at 13:24
  • $\begingroup$ Yes just cross correlate but you need to be aligned in time with the code and you need to have some confidence that all users are received at similar power levels. With a 4 chip code then you also depend on zero cross correlation which requires absolute phase coherence between all the codes so is really only usable when transmitted from the same transmitter (one to many broadcast) unlike using longer PN codes where you actually can get a power advantage through processing gain. $\endgroup$ May 18 at 13:48

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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