Académique Documents
Professionnel Documents
Culture Documents
CDMA Basics
Each user is assigned a chip sequence. This is simply a sequence of bits (chips). The
spreading process is shown below, using an example:
Chip Sequence:
Spreading Sequence:
1 -1
1 -1 -1
1 -1
1 -1 -1
-1
0
1 -1 -1
In its simplest form, decoding involves calculating the dot product of the received bit
stream with one users spreading sequence. Note that when signals arrive at the receiver
from different users, they linearly add. See the example below.
Length of chip sequences = n = 4
Station
Spreading
Sequence
Data
Transmitted
Sequence
Dot
Product
DP / n
-1 +1 -1 +1
Low
+1 -1 +1 -1
-4
+1 +1 -1
High
+1 +1 -1 -1
+4
-1
-1 -1
N/T
Received:
0 -2
Investigation
The above method makes two key assumptions: code synchronization and chip
synchronization. Code synch indicates that the transmitted sequences from each user
begin at the same time. Chip synch implies that all users transmit a chip (bit) at the same
time. In a realistic CDMA system, neither assumption is valid.
Code Synchronization
In this section, we will investigate chip sequences that are orthogonal regardless of code
asynchrony. The key idea is to use codes that are longer than n bits (for n users). This
"wasted" bandwidth will solve code synchronization problems, thus negating the need for
other solutions (such as a high-power synch carrier).
The test for orthogonality despite code synchronization issues is very similar to the basic
orthogonality test. However, for every transmission combination, each code must be
rotated in all possibilities relative to each other. So for 4-user, 8-bit codes, this program
will take 84=4096 times as long as the previous program. However, the run time is still
acceptable.
The steps for configuring this program are identical to those above: set the number of
users and code length, then the chip sequences.
Chip Synchronization
We will not be developing a program to solve chip synchronization issues. Unlike the
code asynchrony problem, which had a discrete (and finite) number of possibilities, the
number of ways in which bits may be unsynchronized is infinite. Therefore, this program
will be a simulation.
To solve the chip synchronization issue, supersampling is used. That is, rather than
sample the received waveform once per bit period, multiple samples are taken during the
same period. A supersampling value of 4, for example, should provide enough extra
resolution to handle all cases (i.e. sampling on a bit transition). The purpose of the
simulation is to determine how accurately the transmitted signals can be decoded.
This program simulates the CDMA transmission and decoding process. It requires an
input file that specifies the transmission sequence. Here is a sample input file. See the
comments at the top of the program file for more details. This program creates a set of
files for every station being simulated. These results are intended to be viewed with
gnuplot, a freeware plotting program. If running in a unix environment, with the sample
input file given above, use the following command line: simul1 simul1.in app This
will produce the following files:
app0.comm app0.data
app1.comm app1.data
app2.comm app2.data
app3.comm app3.data
To start gnuplot, simple type gnuplot. To view the results of the first station from within
gnuplot, type load "app0.comm" (this command, as well as all that follow, can easily be
extended for any particular station). This will graph the results of the simulation,
considering the decoded data for the first chip sequence. The following three series are
produced:
1. "User X Data" - indicates the correct value that should be received for this user. It
stays at this value for the first four samples (i.e. throughout the first chip in the
sequence) and drops to -50 elsewhere to indicate where the sequence should NOT
be despread correctly at these times. The received value, (-1, 0, or +1), is
multiplied by 32 for easy comparison with other series.
2. "User X Dot Prod" - is the dot product with taking one sample during each oversampling period (this is the method actually used for this project). So the dot
product vectors will be as wide as the chip sequences. This result is multiplied but
the over-sampling rate (4) for easy comparison.
3. "User X DP Quad Sum" - this is the result of adding four adjacent dot products,
each calculated as above for the second series. In effect, this averages the dot
product values. This series is just for comparison.
The ideal case shows all three plots having the same value when the data graph is not -50
(this is when the incoming samples should be decoded). In other words, correlation is
highest at these points and is lower elsewhere. A sample plot is shown below: Click here
for the original Postscript file.
To generate a postscript file for a particular plot, use the following sequence of gnuplot
commands:
set terminal postscript
set output "app0.ps"
load "app0.comm"
Now instead of displaying the graph on the current display, it will be saved to disk using
the given filename.
Stephen Somogyi
CDMA Group
December 4, 2000