-
Notifications
You must be signed in to change notification settings - Fork 0
Decoding Algorithm
Correlation is to calculate the similarity between 2 signals by convolution. In ground station program, the prns correlate against the signal to determine that in a given time, the signal represents 1 or 0.
Following are prn 0/1 and an example signal. The signal contains 3 prns.

A more efficient way to do convolution than directly calculate the convolution is to convert all related signal to frequency domain, then simply multiplys them. There is another reason making this necessary: considering that this chipsat is a moving object on the low earth orbit, the doppler effect must be taken into account. The signal in frequency domain has to try different frequency shift by simply rolling shift itself.
At this time, we simply set a center frequency offset(doppler_center, which is 0, meaning that the center is the default frequency 915 MHz) and a doppler_range, the program will search the best correlation magnitude in the range [doppler_center - doppler_range, doppler_center + doppler_range). In order to achieve better performance, the range should be as narrow as possible. Given the fact that the relative velocity between chipsat and ground station doesn't change a lot, dynamically tracking the center frequency could be a good way to improve the performance.
Applying IFFF to the product of signal and prn in the frequency domain converts it back to time domain, we only choose the best magnitude.