I've run a lot of simulations and it seems like DSSS is just as noise resistant as people say it is. Resistant from jamming and even it seems some fading and narrow-band interference. I'm doing this simply by signal correlation - taking the FFT of the desired signal, and the FFT of the demodulated signal, multiplying in frequency space and IFFT'ing to look at the output in linear time.

I'm interested in running a VERY low data rate (<100 bps) but moderately wide-band signal (~2.8 MHz bandwidth), as to minimize impact on the spectrum and being able to recover the signal in extremely poor quality. I'd also like to maintain a very high degree of signal orthogonality to other sources. This would mean a very long chip sequence (I'm hoping for 4096 or so).

I'd like to do this so all communications can pass over the DSSS path. Everything seems to work perfectly so long as the clocks remain perfectly (or almost perfectly synchronized).

If I have my clocks out by as little as 40 ppm, it seems to start confusing the end and beginning of the chunks. The only way around this I can think of is run several decoders, each at a slightly different chip frequency and seeing if any of the detectors get a match.

ACTUAL QUESTION: Is there any magical way to recover a DSSS signal with poor synchronization this that doesn't take a linear number of logical receivers over the frequency space?


The decorrelation versus clock (or more specifically frequency) error is a Sinc function with the the first nulls (main lobe) at 1/T where T is the length of your sequence. For example, if your sequence is 2 seconds long, the correlation will go to zero when the frequency offset is only 1/2 Hz! Thus you see the challenge with processing gain and frequency accuracy: If your frequency is accurate enough, you can correlate over a long duration and get a significant processing gain. The question is if you have more time or processing: if you have more time, then the approach is to step over the various possible frequency offsets during acquisition to find the clock offset (and then track once acquired)- so for example, if your duration was indeed 2 seconds as in my example, you would likely step by 1 Hz in the search process. If you have enough processing this can all be done in parallel, which I have done and posted at Matlab's fileexchange site at the link below:


In actual implementation, you will want to do both carrier and code tracking once acquired.

  • $\begingroup$ My messages will be very short, and discrete. My hope was that there would be some magical way of doing correlation in both frequency and phase space. Like how FFTs can do convolution faster than n^3. Looks like I'm still stuck with f*n^2*log(n) (where f is the number of frequencies I must search for) for searching frequency and phase space. I'm up for it if someone else knows of a magic transform that can be performed but I'm losing hope. $\endgroup$ Jul 19 '17 at 18:03
  • $\begingroup$ I hope you reviewed the link I gave as I demonstrated some additional benefit of reuse in the fft, by taking advantage of a circular shift of the fft is the same as a Doppler shift of the same, thus when you do correlation using the ifft(fft(a)*fft(b)) approach, you do not need to recompute the fft for each Doppler shift. See my link for further details on that. $\endgroup$ Jul 20 '17 at 0:39
  • $\begingroup$ I don't own a license to matlab, when I tried downloading it required a login. I just noticed the extra "Functions" tab where you can see the code! EDIT Will re-post after I really take this in. I don't understand how you can get out of one IFFT for each frequency bin, but I'll keep prodding. $\endgroup$ Jul 20 '17 at 17:33
  • $\begingroup$ It is a 2D IFFT, so essentially you are still doing one IFFT for each Doppler offset, it is just that the computation is in matrix form. Depending on the amount of resources available versus the time to process, you could alternatively do a single IFFT for each Doppler offset column. The computational savings is that you only need to take the FFT portion once since the matrix of FFT's vs Doppler offset is just a circular shift. $\endgroup$ Jul 21 '17 at 11:32

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.