# DIRECT SEQUENCE SPREAD SPECTRUM AND RAKE RECEIVER

|**autocorrelation**properties, which make the transmitted signals less vulnerable to multipath effects. In CDMA every user employs a different spread-sequence which is orthogonal to the one employed by another user; hence, their transmitted signal should not interfere.

Pseudo-noise sequences (PN sequences) used in DSSS are generated in a deterministic manner although they appear to be random noise. From all the types of pseudo-noise sequences, the ones chosen for this study were m-sequences. The main purposes of spread-spectrum techniques are to make the signal less susceptible to jamming, to reduce energy density and to allow multiple access . In addition, a system using this technique has three main properties:

– The signal will occupy a bandwidth greater than its baseband version.

– The spreading sequence is independent of the data signal.

– The receiver correlates the received signal with a replica of the spreading sequence, a process known as despreading.

A chip is defined as the duration of each element inside the sequence and it is usually named Tc. This time is much smaller than the bit duration in the sequence that is going to be coded. In addition, PN sequences must satisfy the following properties:

**Balance**: the number of 1s in a sequence’s period differs by one from the number of 0s.

**Run-length**: there are runs of 1s and 0s inside one period. The number of runs of 1s must be the same as the number of 0s. In each period, half of the runs with the same sign have length 1, a quarter has length 2, an eighth have length 3 and so forth.

**Autocorrelation**: the autocorrelation function for these sequences is periodic and it has two values. For a given sequence ak of 1s and -1s, the autocorrelation C(K) is computed as:

Its values are 1 for k=0 and -1/N for the rest of the values of k. This is associated with the fact that comparing the periodic sequence with any shifted version of itself will result in a difference between matches and mismatches equal to 1.

Maximum-length sequences (m-sequences) are one of the most important PN sequences in use. They are called maximum-length because they can be generated by using a shift register of length equal to m; therefore, there are 2m-1 chips of length m. Typical length values are 7, 15, 31, 63, 127 and 255.

# RAKE RECEIVER

As the diagram shows, the reflected waves that arrive with different time delays are detected individually by the rake receiver. The diversity technique employed is maximal-ratio combining, where there is an amplification or attenuation factor proportional to the signal amplitude for each branch.

Let x(t) be the spread transmitted signal, then, the received signal will be:

Therefore, the signal is convolved by the channel impulse response, and AWGN is added. If the channel introduces k paths, we can model each of them by using the following expression:

where α_{k} is a complex number. Every correlator or finger is set with a time delay equal to or a multiple of the channel time delays. Therefore, assuming a delay of td, and two paths introduced by the channel, the signal at the output of the rake receiver is:

^{2}(t)=1, and g(t)·g(t-td) is small due to the benefits from the autocorrelation properties of the PN sequences. In the Matlab code, the rake receiver was implemented to detect the strongest path and sort the rest of the paths in decreasing order of energy. This technique helps to reduce the number of fingers needed when some of the paths have very low energy values. In addition, the rake receiver coherently combines the two path components. As shown in the Matlab simulation, this technique hugely improves the quality of the received signal.

**BPSK, QPSK and more channel implementations**will be posted 🙂

Hello,

Thanks a lot for your code and explanation, I am trying to implement RAKE CDMA using OOK modulation, in order to reduce the energy consumption, I don’t know if you already tried it?

Thx

Thanks for your comment, but unfortunately, we haven’t tried that modulation. However, if you know how to code OOK in Matlab, you can just replace the 16QAM modulator and demodulator by OOK and the rest should be the same, if you want to use a multipath Rayleigh channel. The receiver structure shouldn’t change.

hi, thank for your good sharing about rake receiver matlab code. but, i ryto run your code for 2 fingers ( rake by 2 fingers) but it has a error on 80 line.

can you describe this error and how i can run this code for 2 or further fingers??

best regard

could you send a screenshot to our email, please?

It is kind of confusing. First it says “Balance: the number of 1s in a sequence’s period differs by one from the number of 0s.” Then, it says “The number of runs of 1s must be the same as the number of 0s”. What exactly is a ‘run’? And what is a ‘run length’? Also, in your diagram, there is a symbol c1(t). But the formulas start introducing symbols like x(t), r(t), h(t) etc. that aren’t shown in the diagram. Also, the signal received at the input to the antenna is usually embedded in a high frequency carrier signal (eg. a high frequency sinusoidal carrier), right? So does the incoming signal need to be down-converted first, which would require some kind of synchronous mixing? And what is the role of the integrator? Thanks!!

a “run” is a sequence of 1s or 0s. x(t) is convolved with the sequence, c1(t). The downconversion stage would come afterwards in the diagram and the integrator is the maximum ratio combining principle applied. Have a look here for a more detailed explanation in the formulas.

Hello! Also, if x(t) is the spread signal, then the received signal would involve a delayed version of x(t), right? That’s because it takes time for the signal from the transmitter to reach the receiver. So would r(t) be something closer to:

r(t) = x(t-T)*h(t) + n(t) ?

Thanks!!

Sure! There is a delay in the received signal but we count that delay in the channel impulse response, h(t) which is a shifted delta and this shift is Td, the delay. If you don’t want to include the delay in the h(t), then, you can write r(t) as you did 🙂