On 13-Apr-2005, Jason Martin <jason.d.martin@informatik-uni-oldenburg.de>
wrote in message <425d239c$0$21554$9b622d9e@news.freenet.de>:
Jim Heckman wrote:
[...]
Perhaps a better way to think of it is that a sat's pseudo-range
is the difference between the time of its transmission and the
time of its reception (multiplied by the speed of light if you
want to work in distance units instead of time units).
A receiver first slides its local PRN code generator around
until it locates the sat's signal; this tells it the
pseudo-range modulo the C/A code length of 1 ms ~ 300 km. Say,
as per your example, the receiver had to slide its generator by
3 code bits ~ 0.9 km; it then knows the pseudo-range is 0.9 km
or 300.9 km or 600.9 km or ... Next, the receiver performs "bit
sync" by looking for the data bit transitions in the signal;
this tells it the pseudo-range modulo the data bit length of 20
ms ~ 6000 km. For example, suppose the receiver finds the bit
transitions 7 C/A code lengths (out of a possible 0-19) ~ 2100
km away from where it started searching; now it knows the
pseudo-range is 2100.9 km or 8100.9 km or 14,100.9 km or ...
Finally, the receiver decodes the TOW to get the real
pseudo-range.
Of course, the pseudo-ranges don't really do much good until the
receiver has decoded the sats' ephemerides, which tell it where
they are. Then it can say, for example, "OK, sat 1 is located at
X1,Y1,Z1 and is 2345.6 km further away than sat 2, which is
located at X2,Y2,Z2, and 7654.3 km closer than sat 3, which is
located at X3,Y3,Z3, ...", so now it can figure out its own
position.
Hi Jim, thanks for your reply!
can you tell me a little bit more about how the TOW is used to get the
real pseudorange? For example, how the receiver decides wheather the
distance is 2100.9 or 8100.9 or 14,100.9 or.....
OK. After thinking more about it, I like the analogy that the
different stages of acquiring the pseudo-range are like
determining the digits on a digital clock, in reverse order. He
starts by sliding his local C/A PRN code around and finds the
sat 3 code chips away -- actually, let's say 3.5, since good
receivers can usually resolve to about a tenth of a chip. That's
3.5/~1000 of a msec, so the least significant figure of the
pseudo-range is 3.5 mcsec = 0.0035 msec, and the pseudo-range
itself is 0.0035 msec, or 1.00035 msec, or 2.0035 msec, or ...
Next, he searches for data bit transitions super-imposed on, and
aligned with, the C/A code. (I.e., data bit edges always occur
at the beginning of a 1-msec C/A code period, and data bits last
20 msec.) He finds the data bit edges at 7 msec, and now the
pseudo-range is known to be 7.0035 msec, or 27.0035 msec, or
47.0035 msec, or ... At this point, the data stream is just a
series of 0's and 1's, and he needs to figure out where he is in
it. He looks for the HandOver Word (HOW), a pattern which occurs
at the beginning of every subframe, i.e. every 6 sec, and finds
it at 2.46 seconds, so now he knows the pseudo-range is
2.4670035 sec, or 8.4670035 sec, or 14.4670035 sec, or ... If he
has a really good local clock, i.e. if he knows his clock is good to
within 3 sec, he now knows the exact pseudo-range. If he doesn't
trust his own clock that well, he has to decode the TOW, which
occurs in the data stream right after the HOW, and is in units
of 6 sec, the subframe length. (Actually, in practice, most
receivers don't trust the HOW until they find one with a TOW
right after it, then another HOW and TOW 6 seconds later, all
correctly parity checked -- since other data in the stream can
sometimes mimic the HOW pattern.) In our hypothetical case, he
finds the TOW to be, say Monday, 12:34:54 pm (must be a multiple
of 6 sec). He compares that with his local clock, which says
Monday, 12:39:03 pm -- off by 00:04:09. But he knows his
pseudo-range must be 2.4670035 sec, or ..., so he picks the
closest one to 00:04:09, i.e. 00:04:08.4670035. At this point,
most receivers reset their local clock to be the sat's transmit
time + ~80 msec, the average time of flight to a sat -- so they
can show the user a more accurate time right away -- and correct
the pseudo-range accordingly. Let's say our receiver does that,
so he corrects his local clock by 00:04:08.40 sec and his
pseudo-range to 67.0035 msec. Now, lather, rinse and repeat for
the other visible sats. Say he finds sat 2 to have a
pseudo-range of 78.9012 msec, sat 3 to have 89.0123 msec, etc.
He says, "Aha, from the ephemerides I know sat 1 is at position
X1,Y1,Z1, sat 2 at X2,Y2,Z2 and sat 3 at X3,Y3,Z3, and from the
pseudo-ranges I know that sat 1 is 78.9012 - 67.0035 = 11.8977
msec ~= 3569.10 km closer to me than sat 2 is, and 89.0123 -
67.0035 = 22.0088 msec ~= 6602.64 km closer than sat 3, so
I must be at position X,Y,Z! And since I now know my own
position, I know the exact time of flight from each sat, so I
can correct my first guesstimate of my local time from being sat
1 transmit time + 80 msec to sat 1 transmit time +, say,
70.1234 msec, good to ~0.0001 msec = 100 nsec.
--
Jim Heckman