Tuesday, November 16, 2010

Walsh Codes

Walsh Code is a group of spreading codes having good autocorrelation properties and poor crosscorrelation properties. Walsh codes are the backbone of CDMA systems and are used to develop the individual channels in CDMA.

For IS-95, 64 codes are available. Code 0 is used as the pilot and code 32 is used for synchronization. Codes 1 though 7 are used for control channels, and the remaining codes are available for traffic channels. Codes 2 through 7 are also available for traffic channels if they are not needed. For cdma2000, there exists a multitude of Walsh codes that vary in length to accommodate the different data rates and Spreading Factors of the different Radio Configurations.

IS-95 uses 64 Walsh codes and these allow the creation of 64 channels the base station. In other words, a base station can talk to a maximum of 64 (this number is actually only 54 because some codes are used for pilot and synch channels) mobiles at the same time. CDMA 2000 used 256 of these codes.

Walsh codes are created out of Haddamard matrices and Transform. Haddamard is the matrix type from which Walsh created these codes. Walsh codes have just one outstanding quality. In a family of Walsh codes, all codes are orthogonal to each other and are used to create channelization within the 1.25 MHz band.

Here are first four Hadamard matrices. The code length is the size of the matrix. Each
row is one Walsh code of size N. The first matrix gives us two codes; 00, 01. The second
matrix gives: 0000, 0101, 0011, 0110 and so on.

Their main purpose of Walsh codes in CDMA is to provide orthogonality among all the users in a cell. Each user traffic channel is assigned a different Walsh code by the base station. IS-95 has capability to use 64 codes, whereas CDMA 2000 can use up to 256 such codes. They are also used to create an orthogonal modulation on the forward link and are used for modulation and spreading on the reverse channel.

Orthogonal means that cross correlation between Walsh codes is zero when aligned. However, the auto-correlation of Walsh-Hadamard codewords does not have good characteristics. It can have more than one peak and this makes it difficult for the receiver to detect the beginning of the codeword without an external synchronization. The partial sequence cross correlation can also be non-zero and un-synchronized users can interfere with each other particularly as the multipath environment will differentially delay the sequences. This is why Walsh-Hadamard codes are only used in synchronous CDMA and only by the base station which can maintain orthogonality between signals for its users.


The above is simplified look at the use of these codes. Assume there are three users in
one cell. Each is trying to talk to someone else. User 1 wants to talk to someone who is
outside its cell and is in cell 2. User 3 wants to talk to someone in cell 3.

Let’s take User 1. Its data is first covered by a channel Wash code, which is any Walsh code from 8 to 63. It is assigned to the user by the base station 1 in whose cell the mobile is located. The Base Station has also assigned different Walsh codes to users 2 and 3. All three of these are different are assigned by base station 1 and are orthogonal to each other. This keeps the data apart at the base station. Now based on the random number assigned by the BS, the mobile generates a long code mask (which is just the starting point of the long code sequence and is a scalar number). It now multiplies the signal by this long code starting at the mask ID. Now it multiplies it by the short code of the base station to whom it is directing the signal.

When the base station receives this signal, it can read the long code and see that the message needs to be routed to base station 2. So it strips off 1st short code and adds on the short code of base station 2 which is then broadcast by the BS 1 to BS 2 or sent by landlines. BS2 then broadcasts this signal along to all mobiles in its cell. The users who is located in this cell, now does the reverse. It multiplies the signal by the BS 2 short code (it knows nothing about BS 1 where the message generated) then it multiplies the signal by the same long code as the generating mobile. How? During the call paging, the mobile was given the same random number from which it creates the same long code mask. After that it multiplies it by the Walsh code sequence (also relayed during call setup).

1 comment:

Bunkers said...

Thanks...was very helpful...got to know more about Walsh Codes... :-)