[time-nuts] WWVB Disciplined Oscillator

jimlux jimlux at earthlink.net
Sun Apr 7 16:31:51 UTC 2019


On 4/7/19 4:30 AM, Wayne Holder wrote:
>> Hi Wayne,
>> Great to see you found my presentation!
>> The paper is available here:
>>   https://www.kevincroissant.com/WWVB/WWVB_PTTI_2018_paper.pdf
> 
> Kevin, thanks for the link to the paper.  I'd like to know more about how
> correlation works and how you were able to use to to sync with the WWVB
> bitstream.  From what I read in your paper, I'm guessing that the "local"
> code you use for correlation is generated by prediction once the receiver
> has locked on the broadcast code and these two bit streams are then
> "compared" in some way via multiplication...  But, I don't really
> understand how this is done at a practical level as it would seem that his
> would require multiple passes over the code with some type of sliding time
> offset that advances with each pass? Or, are there simpler techniques?  Can
> you suggest a reference where I can learn more?
> 


One thing that helps is that you know the structure and content of the 
bitstream after the fact - that is, the SNR needed to decode the bits is 
lower than that to recover precision timing.  So you take the "known" 
bitstream and do a cross correlation against the received signal.

pseudocode for the cross correlation is something like this:

for lag=0:N
	sum=0
	for i=0:M-1
		sum = sum + input[i]*reference[i+lag]
	end for
	crosscorrel[lag] = sum/M
end for

this is a O(N*M) number of operations, so most folks use a technique 
using FFTs: FFT each of them, multiply term by term, then inverse FFT 
back.  That's O(3*M*log2(M) +M operations)


You'll get something that has a peak in the middle, which corresponds to 
the point of "maximum alignment" between the two data streams.

There's all sorts of things one can do to get "sub sample" resolution - 
essentially by interpolating.  Zero padding the data set before FFTing 
is one way.

The other thing that might save computational burden is that you don't 
need to try ALL possible time lags - you have an estimate, and so you 
can slide around just that








More information about the Time-nuts_lists.febo.com mailing list