CMSYS
CMSYS
CMSYS
TABLE OF CONTENTS
Nu Topic Page
m Number
1 INTRODUCTION 2
i. History 2
ii. Objective 3
2 LITERATURE REVIEW
i. Theory in modulation (a) 4
ii. Theory in modulation (b) 4
iii. Block Diagram 5
3 METHODOLOGY
i. Question 6
ii. Answer 7
4 RESULTS AND DISCUSSION
i. Matlab Answer (Figure) 8
ii. Matlab Coding 22
5 CONCLUSION
6 APPENDIX
1.0 INTRODUCTION
Code division multiple access (CDMA) is a channel access method used by various radio
communication technologies. It should not be confused with the mobile phone standards called
cdmaOne and CDMA2000 (which are often referred to as simply CDMA), which use CDMA as
an underlying channel access method.
One of the basic concepts in data communication is the idea of allowing several transmitters to
send information simultaneously over a single communication channel. This allows several users
to share a band of frequencies (see bandwidth). This concept is called Multiple Access. CDMA
employs spread-spectrum technology and a special coding scheme (where each transmitter is
assigned a code) to allow multiple users to be multiplexed over the same physical channel. By
contrast, time division multiple access (TDMA) divides access by time, while frequency-division
multiple access (FDMA) divides it by frequency. CDMA is a form of spread-spectrum
signalling, since the modulated coded signal has a much higher data bandwidth than the data
being communicated. An analogy to the problem of multiple access is a room (channel) in which
people wish to talk to each other simultaneously. To avoid confusion, people could take turns
speaking (time division), speak at different pitches (frequency division), or speak in different
languages (code division). CDMA is analogous to the last example where people speaking the
same language can understand each other, but other languages are perceived as noise and
rejected. Similarly, in radio CDMA, each group of users is given a shared code. Many codes
occupy the same channel, but only users associated with a particular code can communicate.
2.0 HISTORY
CDMA is a military technology first used during World War II by English allies to foil German
attempts at jamming transmissions. The allies decided to transmit over several frequencies,
instead of one, making it difficult for the Germans to pick up the complete signal. Because
Qualcomm created communications chips for CDMA technology, it was privy to the classified
information. Once the information became public, Qualcomm claimed patents on the technology
and became the first to commercialize it.
3.0 OBJECTIVE
Basically, our main objective here is to underline the understanding of CDMA. What are the
CDMA actually and the application of it. We also need to familiar with use of multiplexing in
wireless environments. The most important thing is how to do the calculations by using Matlab
and compare their answer with our manual answer.
CDMA in general simply means communication with different codes. For example, in a large
room with a lot of people, two people can talk in Chinese if nobody else understands Chinese.
Another two people talk in English if they are the only ones who understand English and so on.
In other words, the common channel (space of the room), can easily allow communication
between several couples but in different languages (codes).
But in a specific way, CDMA is a multiplexing technique used with Spread Spectrum such a
narrowband message signal is multiplied by a very huge bandwidth spreading signal (pseudo-
noise). Users will use same carrier frequency and may transmit simultaneously. Users also have
their own pseudorandom codeword which is approximately orthogonal to other codewords.
Receiver performs time correlation operation to detect only specific codeword, other codewords
apeear as noise due to decorrelation.
code
Channel 1 to
Channel N
Frequency
Time
Code Division Multiple Access is an effective wireless access technology for supporting variable
and high data rate transmission services that has been adopted in third generation of wireless
systems. The basic concept is multiple accesses which are to allow several transmitters to send
information simultaneously over a single communication channel. It is a form of multiplexing
and therefore to optimize the available bandwidth. CDMA employs the spread-spectrum
technology and uses a special coding scheme (pseudo-random code) where each transmitter is
assigned a code to allow multiple users to be multiplexed over a same physical channel. Many
codes occupy the same channel but only users that are associated with a particular code can
communicate. What a spread spectrum technique does is to spread the bandwidth of the data
uniformly for the same transmitted power. In CDMA the data for transmission is combined via
bitwise XOR(exclusive OR). The data signal with pulse duration of T b is XOR’ed with the code
signal with pulse duration Tc. Therefore the bandwidth of the data signal is 1/ Tb and the
bandwidth of the spread spectrum signal are 1/ T c. Since Tc is much smaller than Tb the
bandwidth of the spread spectrum is much larger than the bandwidth of the original signal. The
ratio Tb/ Tc is called as spreading factor or processing gain and it is to determine a certain extent
the upper limit of the total number of users supported simultaneously by a base station.
Theory in
Modulation (b) :
Assume we have 4 different stations 1,2,3 and 4 connected to the same channel. The data from
station 1 are d1, from station 2 are d2 and so on. The code assigned to station 1 is c1, to station 2
is c2 and so on. Assume that the assigned codes have two properties :
Block Diagram
d1
d2
1 2
d2.c2
d1.c1
d3.c3 D4.c4
3 4
d3
d4
5.0 METHODOLOGY
Calculation
i)
assumption :
0 = -1v
1= +1v
A0 = [ 1 1 1 0 1 0 0 0 ] = +1 +1 +1 -1 +1 -1 -1 -1
A1 = [ 0 0 0 1 0 1 1 1 ] = -1 -1 -1 +1 -1 +1 +1 +1
B0 = [ 1 0 1 1 1 0 1 1 ] = +1 -1 +1 +1 +1 -1 +1 +1
B1 = [ 1 0 1 1 1 0 1 1 ] = +1 -1 +1 +1 +1 -1 +1 +1
ii)
prove orthogonal :
iii)
so :
A1 + B1 = [+1 +1 +1 -1 +1 -1 -1 -1 ] + [+1-1+1+1+1-1+1+1] = [ +2 0 +2 0 +2 -2 0 0 ]
V)
For slot 0 :
[ +2 0 +2 0 +2 -2 0 0 ] * [+1 +1 +1 -1 +1 -1 -1 -1 ] = [+2 0 +2 0 +2 +2 0 0]
[ +2 0 +2 0 +2 -2 0 0 ] ]*[+1 -1 +1 +1 +1 -1 +1 +1 ]= [+2 0 +2 0 +2 +2 0 0 ]
For slot 1 :
[ +2 0 +2 0 +2 -2 0 0 ] *[-1 -1 -1 +1 -1 +1 +1 +1 +1 ] = [-2 0 -2 0 -2 -2 0 0 ]
[ +2 0 +2 0 +2 -2 0 0 ] *[+1 -1 +1 +1 +1 -1 +1 +1 ] = [+2 0 +2 0 +2 +2 0 0 ]
A0 = [1,1,1,0,1,0,0,0]
A1 = [0,0,0,1,0,1,1,1]
B0 = [1,0,1,1,1,0,1,1]
B1 = [1,0,1,1,1,0,1,1]
a=1,b=-1
line([0,1],[a(1),a(1)],'Marker','.','LineStyle','-')
line([1,1],[a(1),a(1)],'Marker','.','LineStyle','-')
line([1,2],[a(1),a(1)],'Marker','.','LineStyle','-')
line([2,2],[a(1),a(1)],'Marker','.','LineStyle','-')
line([2,3],[a(1),a(1)],'Marker','.','LineStyle','-')
line([3,3],[a(1),a(1)],'Marker','.','LineStyle','-')
line([3,4],[a(1),a(1)],'Marker','.','LineStyle','-')
line([4,4],[a(1),a(1)],'Marker','.','LineStyle','-')
line([4,5],[a(1),a(1)],'Marker','.','LineStyle','-')
line([5,5],[a(1),a(1)],'Marker','.','LineStyle','-')
line([5,6],[a(1),a(1)],'Marker','.','LineStyle','-')
line([6,6],[a(1),a(1)],'Marker','.','LineStyle','-')
line([6,7],[a(1),a(1)],'Marker','.','LineStyle','-')
line([7,7],[a(1),a(1)],'Marker','.','LineStyle','-')
line([7,8],[a(1),a(1)],'Marker','.','LineStyle','-')
line([0,1],[b(1),b(1)],'Marker','.','LineStyle','-')
line([1,1],[b(1),b(1)],'Marker','.','LineStyle','-')
line([1,2],[b(1),b(1)],'Marker','.','LineStyle','-')
line([2,2],[b(1),b(1)],'Marker','.','LineStyle','-')
line([2,3],[b(1),b(1)],'Marker','.','LineStyle','-')
line([3,3],[b(1),b(1)],'Marker','.','LineStyle','-')
line([3,4],[b(1),b(1)],'Marker','.','LineStyle','-')
line([4,4],[b(1),b(1)],'Marker','.','LineStyle','-')
line([4,5],[b(1),b(1)],'Marker','.','LineStyle','-')
line([5,5],[b(1),b(1)],'Marker','.','LineStyle','-')
line([5,6],[b(1),b(1)],'Marker','.','LineStyle','-')
line([6,6],[b(1),b(1)],'Marker','.','LineStyle','-')
line([6,7],[b(1),b(1)],'Marker','.','LineStyle','-')
line([7,7],[b(1),b(1)],'Marker','.','LineStyle','-')
line([7,8],[b(1),b(1)],'Marker','.','LineStyle','-')
clf('reset')
axis([-1 9 -3 3])
line([0,1],[a(1),a(1)],'Marker','.','LineStyle','-')
line([1,1],[a(1),a(1)],'Marker','.','LineStyle','-')
line([1,2],[a(1),a(1)],'Marker','.','LineStyle','-')
line([2,2],[a(1),a(1)],'Marker','.','LineStyle','-')
line([2,3],[a(1),a(1)],'Marker','.','LineStyle','-')
line([3,3],[a(1),a(1)],'Marker','.','LineStyle','-')
line([3,4],[a(1),a(1)],'Marker','.','LineStyle','-')
line([4,4],[a(1),a(1)],'Marker','.','LineStyle','-')
line([4,5],[a(1),a(1)],'Marker','.','LineStyle','-')
line([5,5],[a(1),a(1)],'Marker','.','LineStyle','-')
line([5,6],[a(1),a(1)],'Marker','.','LineStyle','-')
line([6,6],[a(1),a(1)],'Marker','.','LineStyle','-')
line([6,7],[a(1),a(1)],'Marker','.','LineStyle','-')
line([7,7],[a(1),a(1)],'Marker','.','LineStyle','-')
line([7,8],[a(1),a(1)],'Marker','.','LineStyle','-')
line([0,1],[a(1),a(1)],'Marker','.','LineStyle','-')
line([1,1],[a(1),a(1)],'Marker','.','LineStyle','-')
line([1,2],[a(1),a(1)],'Marker','.','LineStyle','-')
line([2,2],[a(1),a(1)],'Marker','.','LineStyle','-')
line([2,3],[a(1),a(1)],'Marker','.','LineStyle','-')
line([3,3],[a(1),a(1)],'Marker','.','LineStyle','-')
line([3,4],[a(1),a(1)],'Marker','.','LineStyle','-')
line([4,4],[a(1),a(1)],'Marker','.','LineStyle','-')
line([4,5],[a(1),a(1)],'Marker','.','LineStyle','-')
line([5,5],[a(1),a(1)],'Marker','.','LineStyle','-')
line([5,6],[a(1),a(1)],'Marker','.','LineStyle','-')
line([6,6],[a(1),a(1)],'Marker','.','LineStyle','-')
line([6,7],[a(1),a(1)],'Marker','.','LineStyle','-')
line([7,7],[a(1),a(1)],'Marker','.','LineStyle','-')
line([7,8],[a(1),a(1)],'Marker','.','LineStyle','-')
N = [-1,-1,-1,-1,-1,-1,-1,-1];
w = A0 + (A0+N);
x= A1 + (A1+N);
y= B0 + (B0+N);
z= B1 + (B1+N);
%Plot graph
hold on
figure(5)%graph for chip sequence A0
clf('reset')
axis([-1 9 -3 3]);
line([0,0],[0,w(1)],'Marker','.','LineStyle','-')
line([0,1],[w(1),w(1)],'Marker','.','LineStyle','-')
line([1,1],[w(1),w(2)],'Marker','.','LineStyle','-')
line([1,2],[w(2),w(2)],'Marker','.','LineStyle','-')
line([2,2],[w(2),w(3)],'Marker','.','LineStyle','-')
line([2,3],[w(3),w(3)],'Marker','.','LineStyle','-')
line([3,3],[w(3),w(4)],'Marker','.','LineStyle','-')
line([3,4],[w(4),w(4)],'Marker','.','LineStyle','-')
line([4,4],[w(4),w(5)],'Marker','.','LineStyle','-')
line([4,5],[w(5),w(5)],'Marker','.','LineStyle','-')
line([5,5],[w(5),w(6)],'Marker','.','LineStyle','-')
line([5,6],[w(6),w(6)],'Marker','.','LineStyle','-')
line([6,6],[w(6),w(7)],'Marker','.','LineStyle','-')
line([6,7],[w(7),w(7)],'Marker','.','LineStyle','-')
line([7,7],[w(7),w(8)],'Marker','.','LineStyle','-')
line([7,8],[w(8),w(8)],'Marker','.','LineStyle','-')
line([4,4],[y(4),y(5)],'Marker','.','LineStyle','-')
line([4,5],[y(5),y(5)],'Marker','.','LineStyle','-')
line([5,5],[y(5),y(6)],'Marker','.','LineStyle','-')
line([5,6],[y(6),y(6)],'Marker','.','LineStyle','-')
line([6,6],[y(6),y(7)],'Marker','.','LineStyle','-')
line([6,7],[y(7),y(7)],'Marker','.','LineStyle','-')
line([7,7],[y(7),y(8)],'Marker','.','LineStyle','-')
line([7,8],[y(8),y(8)],'Marker','.','LineStyle','-')
%multiply/Modulate
W= w*a
X= x*b
Y= y*c
Z= z*d
%Receiver signal
R1 =W + Y
R2 =X + Z
line([2,3],[W(3),W(3)],'Marker','.','LineStyle','-')
line([3,3],[W(3),W(4)],'Marker','.','LineStyle','-')
line([3,4],[W(4),W(4)],'Marker','.','LineStyle','-')
line([4,4],[W(4),W(5)],'Marker','.','LineStyle','-')
line([4,5],[W(5),W(5)],'Marker','.','LineStyle','-')
line([5,5],[W(5),W(6)],'Marker','.','LineStyle','-')
line([5,6],[W(6),W(6)],'Marker','.','LineStyle','-')
line([6,6],[W(6),W(7)],'Marker','.','LineStyle','-')
line([6,7],[W(7),W(7)],'Marker','.','LineStyle','-')
line([7,7],[W(7),W(8)],'Marker','.','LineStyle','-')
line([7,8],[W(8),W(8)],'Marker','.','LineStyle','-')
line([4,4],[R2(4),R2(5)],'Marker','.','LineStyle','-')
line([4,5],[R2(5),R2(5)],'Marker','.','LineStyle','-')
line([5,5],[R2(5),R2(6)],'Marker','.','LineStyle','-')
line([5,6],[R2(6),R2(6)],'Marker','.','LineStyle','-')
line([6,6],[R2(6),R2(7)],'Marker','.','LineStyle','-')
line([6,7],[R2(7),R2(7)],'Marker','.','LineStyle','-')
line([7,7],[R2(7),R2(8)],'Marker','.','LineStyle','-')
line([7,8],[R2(8),R2(8)],'Marker','.','LineStyle','-')
We had compared the result of manual calculation and the Matlab simulation. Both seem
converge to a same output. Thus we can deduce that our simulation output is accurate.
From this assignment code division multiplication access (CDMA) , we are given CDMA
encoding with 2 users which is user A and user B. Both of the user utilized a PN code of 8 bits.
In order to answer those question, we are using two method to solve the problem. We use the
calculation method and simulation using MATLAB. So, we can compare our calculation with
our simulation MATLAB result.
We make an assumption, bit 0 as -1v and bit 1 as +1v to find the spreading code for both users.
Next, we manage to prove the orthogonal of user A and user B by multiplying the A0 with A1
(A0*A1) and B0 with B1 (B0*B1)
We also find the transmitted signal for slot 0 and slot 1 by multiplying the data bit and spreading
code for each user. Then, we prove that if the transmitted bit signal is de-spread at the receiver,
the bit value assigned for user A and user B at slot 0 and slot 1 are the same as input data.
7.0 CONCLUSION
By using both methods of MATLAB and calculation, we have come up with the same output.
The objectives are met where we are able to apply this theory on wireless technology.
8.0 APPENDIX
1. http://en.wikipedia.org/wiki/CDMA_Spectral_Efficiency
2. Electronic Communications Systems, Fundamental Through Advanced. Wayne Tomasi.
5th Edition. Prentice Hall.
3. http://en.wikipedia.org/wiki/Code_division_multiple_access
4. Data Communications and Networking , 4th Edition, Behrouz A. Forouzan
5. Wireless Communication Principles and Practice, 2nd Edition, Theodore S Rappaport