Everything2
Near Matches
Ignore Exact
Full Text
Everything2

CDMA

created by molo

(thing) by Omnidirectional Halo (2 y) (print)   ?   (I like it!) 1 C! Fri Mar 30 2001 at 23:39:57

Code Division Multiple Access (CDMA) is a method for multiplexing signals that assigns each communication channel a unique code created by a pseudorandom generator. Here's a simple example showing how it works:

Say we have 3 channels as shown in the table below (zeros encoded as negative voltage, ones as positive voltage):


Channel   Channel Code    Data to be sent
------------------------------------------
   1      (-1,-1,-1,-1)   110 = (+1,+1,-1)
   2      (-1,+1,-1,+1)   010 = (-1,+1,-1)
   3      (-1,-1,+1,+1)   001 = (-1,-1,+1)

Each bit of data is multiplied by its corresponding channel code:


Channel 1 (110):  
   
   (+1)(-1,-1,-1,-1), (+1)(-1,-1,-1,-1), (-1)(-1,-1,-1,-1)

 = (-1,-1,-1,-1), (-1,-1,-1,-1), (+1,+1,+1,+1)

Channel 2 (010):
   
   (-1)(-1,+1,-1,+1), (+1)(-1,+1,-1,+1), (-1)(-1,+1,-1,+1)

 = (+1,-1,+1,-1), (-1,+1,-1,+1), (+1,-1,+1,-1)

Channel 3 (001):

   (-1)(-1,-1,+1,+1), (-1)(-1,-1,+1,+1), (+1)(-1,-1,+1,+1)

 = (+1,+1,-1,-1), (+1,+1,-1,-1), (-1,-1,+1,+1)

Then the coded signals are summed together (multiplexing stage):


              |           |           |           |
              |           |           |           |
              |           |           -------------
              |           |           |+1|+1|+1|+1|
Channel 1  -------------------------------------------
              |-1|-1|-1|-1|-1|-1|-1|-1|           |
              -------------------------           |
              |           |           |           |
              |           |           |           |
              ----  ----  |  ----  -------  ----  |
              |+1|  |+1|  |  |+1|  |+1|+1|  |+1|  |
Channel 2  -------------------------------------------
              |  |-1|  |-1|-1|  |-1|  |  |-1|  |-1|
              |  ----  -------  ----  |  ----  ----
              |           |           |           |
              |           |           |           |
              -------     -------     -------     |
              |+1|+1|     |+1|+1|     |+1|+1|     |
Channel 3  -------------------------------------------
              |     |-1|-1|     |-1|-1|     |-1|-1|
              |     -------     -------     -------
              |           |           |           |
              |           |           |           |
              |           |           |     ----  |
              |           |           |     |  |  |
              ----        |  ----     ----  |  |---
              |+1|        |  |+1|     |+1|  |+3|+1|
Sum signal -------------------------------------------
              |  |-1|-1|-3|-1|  |-3|-1|  |-1|     |
              |  ------|  |---  |  |---  ----     |
              |        |  |     |  |  |           |
              |        ----     ----  |           |
                          

The sum signal is what is transmitted to the receiver. On the receiving end, say we want to extract the data from Channel 2 (demultiplexing stage). The receiver multiplies the sum signal by the Channel 2 code signal to obtain a signal correlated to the data sent on Channel 2, and then the final result is integrated to obtain the actual data bits:


              |           |           |     ----  |
              |           |           |     |  |  |
              ----        |  ----     ----  |  |---
              |+1|        |  |+1|     |+1|  |+3|+1|
Sum signal -------------------------------------------
              |  |-1|-1|-3|-1|  |-3|-1|  |-1|     |
              |  ------|  |---  |  |---  ----     |
              |        |  |     |  |  |           |
              |        ----     ----  |           |
              |           |           |           |
              |           |           |           |
              |  ----  ----  ----  ----  ----  ----
              |  |+1|  |+1|  |+1|  |+1|  |+1|  |+1|
Channel 2  -------------------------------------------
sequence      |-1|  |-1|  |-1|  |-1|  |-1|  |-1|  |
              ----  ----  ----  ----  ----  ----  |
              |           |           |           |
              |           |           |           |
              |           |     ----  |           |
              |           |     |  |  |           |
              |     ----  ------|  |  |        ----
              |     |+1|  |+1|+1|+3|  |        |+1|
Correlator -------------------------------------------
  output      |-1|-1|  |-3|        |-1|-1|-1|-3|  |
              -------  |  |        ---------|  |  |
              |        |  |           |     |  |  |
              |        ----           |     ----  |
              |           |       *** |           |
              |           |     **   *|+4         |
              |           |  ***      |           |
              |           |**         |           |
Integrator ---*-----------*-----------*---------------
  output      |*   **     |           |**         |
              | ***  **   |           |  ***      |
              |        ** |           |     **    |
              |          *|-4         |       ****|-4
              |           |           |           |

So, (-4,+4,-4) = 010, which was the data sent on Channel 2!


REFERENCES:

Leon-Garcia and Widjaja. Communication Networks. McGraw Hill, 2000.


(idea) by Ulkesh (3.2 wk) (print)   ?   (I like it!) Wed Oct 02 2002 at 1:01:39

Also stands for Collision Detecting Multi-Access, a scheme by which multiple devices can transmit data on a network in an uncoordinated manner. CDMA governs the transmission of data on Ethernet (IEEE 802.3) networks, and thus is vitally important to what you're doing right now.

In CDMA, when a device wants to transmit a packet of data it does so immediately, rather than first checking to see if the network is busy (i.e. there is another transmission in progress).

Device "a" transmits a packet of data. As it transmits, it "listens" to the network to ensure that what it hears is its own data packet. If another device "b" is transmitting data at the same time as device "a", as device "a" listens to the network it will here device "b"'s transmission interfering with its own. In this manner, a simultaneous use of the network, or a "collision", can be detected.

Because device "a" must detect the collision while it is still transmitting its packet, the signal from device "b" must be received before device "a" has finished its transmission. Therefore, the size of a packet that can be sent is restricted such that the time it takes to transmit the packet is less than or equal to the time it will take the signal from device "b" to reach device "a". Thus, even as device "a" sends the end of its packet it will detect the interference from the beginning of device "b"'s packet while the transmission is still in progress.

As such, in a CDMA network, the maximum size of a data packet is the transmission rate (bits per second) times the signal propogation delay (roughly the speed of light (C) times the length of the cable) when the distance on the network between any two devices is the maximum distance allowed.

When a collision occurs, all of the colliding packets must be re-sent. However, if both device "a" and "b" attempted to retransmit their packets in the same instant, the collision would simply repeat. In order to avoid this problem, each device randomly selects a time slice from a window of time that is two time slices long (the length of the time slice is the transmission time for a packet). Hopefuly, the collision will not reoccur, however because both devices may randomly choose the same time slice for retransmission, each device will continue to retry the transmission, doubling the number of time slices in the window each time, until there are 32768 time slices in the window. If the packets are still colliding, the transmission is abandoned.


------------
editor's note:
CDMA is referenced here as the generic term for Collision-Detect Multi-Access busses, not in the specific communications usage.

Reference:http://classes.engr.oregonstate.edu/eecs/fall2003/ece441/groups/g11/JoshWhitePaper.html
iceowl: 2/11/03


(idea) by wfberg (4.9 y) (print)   ?   (I like it!) 1 C! Wed Aug 13 2003 at 20:29:40

CDMA stands for Code Division Multiple Access. Multiple Access schemes are used to allow multiple senders to use one medium, such as one network cable/ring or a band of frequencies.

CDMA is also used as a name for IS-95 and IS-2000 cell phone networks.

TDMA (Time Division Multiple Access) works very simply by allowing each sender a time slot to send its information. A simple implementation would allow each sender in turn to send for one second and then wait n-1 seconds, where n is the total number of senders competing for access to the medium.

FDMA (Frequency Division Multiple Access) is how radio stations share the FM band; each station has its own frequency.

CDMA is different from these two, as all senders broadcast on the same frequency, all at the same time!

The trick is that in stead of sending a 0 or 1 each sender is assigned a special code, known as its spreading code or chip sequence. Unlike a previous write-up stated, these are not truly pseudo random, there is a method to this madness, known as the Walsh Matrix.

In a Walsh Matrix the dot product of each two rows is zero. Using the example from the previous writeup;

channel   code
-----------------------
   1      (-1,-1,-1,-1)
   2      (-1,+1,-1,+1)
   3      (-1,-1,+1,+1)

Let's calculate the dot product of code 1 and 2

-1*-1 = +1
-1*+1 = -1
-1*-1 = +1
-1*+1 = -1 
       ---+
        0

The same holds for the dot products of every combination of different codes. But when you generate the dot product of a single code the answer is one! Generating Walsh codes is left as an exercise for the user.

If sender 1 wants to transmit a 1, (-1,-1,-1,-1) is broadcast, is sender 1 wants to transmit a 0 (+1,+1,+1,+1) is broadcast. In the ether, these amplitude modulations simply add up.

If sender 1 now sends a 1 and everyone else sends a 0 the following happens in the ether:

   1      (-1,-1,-1,-1)
   2      (+1,-1,+1,-1)
   3      (+1,+1,-1,-1)
          -------------+
          (+1,-1,-1,-3)

We know there are 3 stations sending, and we want to know what the first station is sending. So we calculate the dot product of the first station's code (-1,-1,-1,-1) and the received signales (+1,-1,-1,-3) the answer is.. 1 !

Had (+1,+1,+1,+1) been sent, the received value would have been (+3,+1,+1,-1); the dot product of that value with (-1,-1,-1,-1) is -1, which stands for a digital zero.

If station one didn't transmit at all, the received value would have been (+2,0,0,-2), with a dot product with (-1,-1,-1,-1) of zero (which signifies silence).

How to calculate the dot products of these simple matrices; simply multiply the nth element in one matrix with the nth element in the other matrix, sum these all up, and divide by the number of elements. e.g. (-1,-1,-1,-1) . (+3,+1,+1,-1) = ((-1*+3) + (-1*+1) + (-1*+1) + (-1*-1))/4 = -4/4 = -1.

The dot product is all you need to know to understand the basics of CDMA!!

The devil is in the details in implementing CDMA. To work succesfully, each station must start transmitting its code/chip sequence at the exact same time as all other broadcasting stations.

Furthermore, each sender's signal MUST be the same strength (i.e. +1 and -1 and not +0.5 and -0.5 whilst a neighbor transmits +0.8 and -0.8) at the RECEIVER. In cell phone networks this is done by having a tight control loop between the CDMA handsets and the base station, to calibrate the signal continually.

To join the network, a handset must also request a chip sequence from the network to use. In cellular mobile phone networks logging on to the network is often done by having a special set of 'bootstrapping' frequencies, where stations can announce their presence; these frequencies usually operate using some sort of slotted Aloha.

The number of simultanious users on a CDMA network is not infinite, just like the number of users on a TDMA network is not infinite, even though we can split up time in infinitely small pieces, there will always be a limiting factor. Still CDMA seems to be very succesful, and lies at the heart of the new UMTS standard that will be used in Europe for 3G networks. (The US 3G standard is of course slightly different from the European one).


(idea) by xq (3.1 y) (print)   ?   (I like it!) Fri Mar 04 2005 at 5:45:11

Other writeups have stated that CDMA is based around `codes'; these codes may be described as sets of m n-element vectors of real numbers. We then assign one code Ci to each of the m users. We can choose the codes arbitrarily; the only requirement is that
    Ci·Cj = 0   for i ≠ j
Here Ci is a vector in Rn, and the · symbol denotes the dot product. This is the magical property that allows many different users to transmit on the same channel at the same time without interfering with each other. Geometrically, this means that the vectors representing the codes assigned to any pair of users must be perpendicular, or orthogonal. The vectors {Ci} therefore form a basis of an m-dimensional vector space.

It isn't very difficult to come up with codes that satisfy this property. For example, let m = n = 3. At this point we are just looking for a basis for R3; an obvious choice is

    T1 = i = (1, 0, 0)
    T2 = j = (0, 1, 0)
    T3 = k = (0, 0, 1)
This is just an ordinary Cartesian coordinate system, but clearly these satisfy the orthogonality requirement. We can generalize this to any n and m ≤ n: just let the ith component of Ci equal 1, and let all the other components equal zero.

So what kind of code is this? We see that only T1 has a non-zero first component, only T2 has a non-zero second component, and so on. In physical terms, that means that only the user assigned to Ti gets to transmit in the ith `time slot'. But that is just TDMA; TDMA is therefore a special case of CDMA.

Alternately, we might remember from a class on Fourier transforms that

    1
    /
    | cos(2πit) cos(2πjt) dt = 0 ,  i ≠ j
    /
    0
We can approximate the integral as a summation:
    n-1    
    ---
    \   cos(2πi (k/n)) cos(2πj (k/n)) ≈ 0 ,  i ≠ j
    /--
    k=0 
The Nyquist theorem tells us that as long as a < n/2 we aren't even approximating, and the summation is exactly equal to zero. In any case this summation is just the dot product of two vectors Fi and Fj, where Fa is an n-element vector such that its kth component is equal to
    cos(2πa ((k-1)/n))
Clearly the set {F0, F1, F2, ...} is orthogonal. So now we are sharing our channel by modulating each user's message with a different sinusoid, and each value of a corresponds to a different frequency. That is just FDMA; FDMA is therefore a special case of CDMA.

In practice we can come up with much better codes than these. Otherwise there wouldn't be much point to the way that CDMA is typically implemented, which involves huge amounts of digital signal processing. However, the math behind CDMA holds for any multiple-access system in which the receivers correlate the received signal against the `reference waveforms', and that is almost any practical multiple-access scheme.


Actually it should be obvious that everyone is glossing over a lot of details here. We are dealing entirely with vectors of real numbers, and it is not possible to connect n real numbers to an antenna. Electromagnetic fields are described as functions of time, not vectors in Rn. It turns out that it is possible to define a vector space of functions. Then we can map our vectors in Rn into signals that can be sent over the air, and everything in this node becomes useful and rigorous.

Further confusing things, Qualcomm has a set of standards with CDMA in the name (like CDMA2000, also known as 1x). These don't just specify the modulation scheme; they specify everything, including stuff like how long a phone number can be. They do, of course, use CDMA for the modulation.


printable version
chaos

GSM TDMA Cellphones in Israel SINCGARS
W-CDMA Sprint PCS VoiceStream StarTac
Qualcomm Changing the Alpha Tag on Nokia Phones UMTS PCS
slot load IEEE 802.1 IS-95 mobile network
nynex cdma2000 multiplexing Cyclic Redundancy Check
square wave Aloha ESN NMT
Y'know, if you log in, you can write something here, or contact authors directly on the site. Create a New User if you don't already have an account.
  Epicenter
Login
Password

password reminder
register

Everything2 Help

Cool Staff Picks
Look at this mess the Death Borg made!
Gentrification
XML
Mutant brains of London cabbies
For a boat of white bone, and we three
Anglo-Saxon Laws and Customs
How the Alphabet Began
Henry V
Historiography
Ash Wednesday
In Taberna
Celtic Mythology
Brahman and the fractal nature of the universe due to the chaotic nature of string theory
Lucid dream
New Writeups
Glowing Fish
Tualatin River(place)
The Jacket
Words of Advice(idea)
keepinitreal
Why buy the cow when you can get the milk for free?(idea)
John_Fox
Good Intentions Gone Wrong(person)
Cuckowski
Slavonic Princess(poetry)
Heitah
Posthumous Oscar(thing)
ignis_glaciesque
University of South Florida(place)
ignis_glaciesque
Flogstaskriket(idea)
liveforever
Caesar's last breath(idea)
dagnyswaggart
she wants to believe(personal)
antigravpussy
he doesn't know, but her eyes widen too far(thing)
dagnyswaggart
Wild tides guard her secrets(poetry)
Lord Brawl
Caesar's last breath(poetry)
locke baron
Forgotten things in space(fiction)
sitaraika
Colours(idea)
This affordable entertainment brought to you by The Everything Development Company