No, the problem is that the 1PPS is derived from a clock which is not synchronous with the GPS carrier, so the correct 1PPS is snapped to wherever the nearest processor clock edge happens to be, hence the signal is very jittery. Using an OCXO is still a good idea, but it would be better to have the OCXO in the GPS receiver's phase-tracking loop.
That is about 30,000,000 cycles of the carrier that is coming and going as the SV changes elevation in the sky. And also remember when you downcovert the carrier to a few MHz, this becomes a bigger problem, as 1kHz of Doppler at 1.5GHz is still be 1kHz of Doppler at 4 MHz.
(I did some calculations in a google spreadsheet here https://docs.google.com/spreadsheets/d/1tvwPaO3myi9LmIDogYbf3oNIBolyRflw2EgOXPQyZds/edit?usp=sharing)
I pulled a ASTX-H12 TCXO out of Digikey, it's a +/- 2.5ppm TCXO over -30 to +75C part at $3.35 per, in the ballpark for a $20 BOM cost. Just from temperature alone, you have to keep the TCXO stable to within 0.02 C to achieve 1PPB. You've got quite a challenge doing this.
(I did some calculations in a google spreadsheet here https://docs.google.com/spreadsheets/d/1tvwPaO3myi9LmIDogYbf3oNIBolyRflw2EgOXPQyZds/edit?usp=sharing)
I pulled a ASTX-H12 TCXO out of Digikey, it's a +/- 2.5ppm TCXO over -30 to +75C part at $3.35 per, in the ballpark for a $20 BOM cost. Just from temperature alone, you have to keep the TCXO stable to within 0.02 C to achieve 1PPB. You've got quite a challenge doing this.
That is why we are tracking the GPS carrier in realtime (and correcting for doppler). The whole point is to avoid needing a stable (and expensive) oscillator.
You can reconstruct the carrier with a Costas- or squaring loop.
Once you have locked to the carrier, you can demodulate the data.
You get a bit stream that looks arbitrary. But since you know the
polynomial, you can generate a local copy and correlate it to
the received stream. Timeshift the local copy until it fits.
regards,
Gerhard
You've got that a bit back to front. There is no carrier to initially lock onto - the spreading code (pseudo-random noise) has smeared all signal out over +/- 2MHz of bandwidth (actually a bit more).
You have to first remove the spreading code to recover the carrier, and only then you can lock on the carrier with a Costas loop or similar.
You've got that a bit back to front. There is no carrier to initially lock onto - the spreading code (pseudo-random noise) has smeared all signal out over +/- 2MHz of bandwidth (actually a bit more).
You have to first remove the spreading code to recover the carrier, and only then you can lock on the carrier with a Costas loop or similar.
I believe the point being made above is that the DSSS signal *is* a BPSK signal. That's all DSSS is: a very high-data-rate BPSK signal. The difference between the spread and despread signal is a difference in degree, not in kind. We cannot say that one has a carrier to lock onto and the other doesn't.
Now, is it feasible for a Costas-like loop to bootstrap itself on a signal that is near or below the noise floor? I have no idea.
The original question would really be more suitable for the time-nuts mailing list. I would like to know the answer, though, so if you ask there, please come back here and summarize.
You've got that a bit back to front. There is no carrier to initially lock onto - the spreading code (pseudo-random noise) has smeared all signal out over +/- 2MHz of bandwidth (actually a bit more).
You have to first remove the spreading code to recover the carrier, and only then you can lock on the carrier with a Costas loop or similar. I would think that removing the spreading code from an analogue 1.5GHz signal without sampling or down-converting first would be challenging, esp for a <$100 project.
I've written a 'raw 1-bit ADC sample to position fix' GPS receiver so am quite familiar with the techniques - http://hackaday.io/project/20965-full-stack-gps-receiver is my project.