Upload
others
View
3
Download
0
Embed Size (px)
Citation preview
2025-9
Satellite Navigation Science and Technology for Africa
Ward Phillip. W.
23 March - 9 April, 2009
NavwardU.S.A.
Introduction to GPS Receiver Design Principals(Part 6)
Session VI - CodeExtracting measurements from code and carrier loops
Extracting measurements from code loopPseudorange definitionSatellite transmit time relationship to code phasePseudorange measurementRelationship between PRN code generator and code accumulatorMeasurement time skewCode (time) accumulatorMaintaining the code accumulatorObtaining a measurement from the code accumulatorObtaining transmit time from C/A codeSynchronizing code accumulator to replica code generatorAdding a code setter to code generatorC/A-code setupObtaining transmit time from the C/A-codeGPS C/A-code timing relationshipsGPS navigation messageExample of bit sync error in C/A-code
Pseudorange definition
Pseudorange to SVi where i is PRN number:
PRi(n) = c [ TR(n) - TTi(n) ](meters) where: c = GPS propagation constant
= 2.99792458 X 108 (m/s)TR(n) = receive time at epoch n of the GPS receiver's clock (seconds)TTi(n) = transmit time based on SVi clock (seconds) of measurement at epoch n
φ1 φ2 φ3 φ4 φk φk + 1
T1 T2 T3 T4 Tk Tk+1
End of week
PRNi code at transmit time
SV i clock at transmit time
φ1 φ(n) φ4 φk φk + 1
T1 T(n) T4 Tk Tk +1
Transmit time (n) = TTi (n)
Replica PRN i code at receive time
Code accumulator at
receive time
Receiver FTFFTF(n)
Pseudorange measurement (n) @ TR(n)GPS Receiver
SV i
Satellite transmit time relationship to code phase
Pseudorange measurement
Replica code state corresponds to receiver's best estimate of SV transmit time
Receiver knows replica code state because initial states are set during search process and it keeps track of code changes Integer and fraction of chip replica code phase defined as code stateReceiver time keeper containing GPS time corresponding to replica code state defined as code accumulator
Relationship between PRN code generator and code accumulator
N u m e ric a l c o n tro lle d o s c illa to r
C o de g e n e ra to r
C o d e s e tte r
E , P , L rep lic a c o d e
R e s e t s ig n a ls
S y n c h ro n iza tio n s ig n a ls
T ra n s m it t im e
1 ch ip p e r N C O o v e rflo w
C lo c k fc
E rro r s ig n a ls
C o d e lo o p d is c rim in a to r
C o d e lo o p filte r
C o de a c c u m u la to r
(c o d e p h a s e o ffs e t)
R e c e iv e r h a rd w a re
In -p h a s e (I) a n d q u a d ra -p h a s e (Q ) s ig n a ls
C o d e p h a s e in c re m e n t p e r c lo c k
R e c e iv e r b a s e ba n d s o ftw a re
Measurement time skew
Code (time) accumulator
Z-counter (19 bits) Accumulates in GPS time increments of 1.5 s, then resets one count short of 1-week = 403,200. Max = 403,199
X1-counter (24 bits)Accumulates in GPS time increments of integer P chips, then resets one count short of 1.5 s = 15,345,000. Max = 15,344,999
P-counter (same as NCO bits)Accumulates in GPS time increments of fractions of one P-chip
Maintaining the code accumulator
Ptemp= P + fc ΔφCO TP = fractional part of Ptemp (chips)Xtemp = (X1 + whole part of Ptemp) / 15,345,000X1 = remainder of Xtemp(chips)Z = remainder of [(Z + whole part of Xtemp) / 403,200]
(1.5 seconds)where: Ptemp = temporary P registerfc = code NCO clock frequency (Hz) ΔφCO = code NCO phase increment per clock cycle
= code NCO bias + loop filter Doppler correction, etc.T = time between code NCO updates (seconds)
Maintaining the code accumulator with 20 ms PIT
|-----T-----|
Obtaining a measurement from the code accumulator
Ptemp = P + fc ΔφCOTs
Pi (n) = fractional part of Ptemp (chips)Xtemp = (X1 + whole part of Ptemp) / 15,345,000X1i (n) = remainder of Xtemp (chips)Zi (n) = remainder of [(Z + whole part of Xtemp) / 403,200] (1.5 seconds)TTi (n) = [Pi (n) + X1i (n)] / (10.23 X 106) + Zi(n) * 1.5 (seconds)Note: code accumulator NOT changed
Obtaining a measurement from the code accumulator
|-Ts-|
Synchronizing code accumulator to replica code generator
Most complicated part of process: Synchronizing code accumulator to C/A-code generator
Count sequences in code generator shift registers are pseudo randomCount sequences taking place in code accumulator are linear
Reset timing events in PN shift registers are predictable
Adding a code setter to code generator
X 2B c o d e s e tte r
P c o d e a d v a n c e /
re ta rd
P c o d e c lo c k
X 1A c o d e s e tte r
X 1B c o d e s e tte r
X 2A c o d e s e tte r
X 1B c lo ck
c o n tro l
X 2A c lock
co n tro l
X 2B c lo ck
c o n tro l
C o d e c lo c k
fco
÷ 1 0C /A c o d e a d v an ce /
re ta rd
X 2 B re g is ter
X 2 A re g is ter
X 1 B re g is ter
X 1 A re g is ter
3 7 to 1 M U X
X 2 d e la y reg is te r
1 3 7. . .
P
C /A co d e s e tte r
G 1 reg is te r
G 2 reg is te r
C /A co d e
1 0
1 0 to 1 M U X
10 to 1 M U XC /A c od e c loc k
C/A-code setup
Algorithm for code accumulator output to C/A-code setter:
G = remainder of [(whole part of {X1/10})/1023] where:G = future scheduled C/A-code time value sent to the code setter
X1 = future scheduled GPS time of week in P chips (0 ≤ X1 ≤ 15,344,999)
Obtaining transmit time from the C/A-code
C/A-code obtains transmit time from code accumulator in same manner as P(Y)-code
Difference is initialization of accumulatorReceiver reads Handover Word (HOW) after bit synchronizationSets its code accumulator to correct Z-count at exactly right C/A-code epoch
GPS C/A-code timing relationships
X 1 c o u n t m + 5
X 1 c o u n t m + 6
W o r d 7 W o r d 8W o r d 6W o r d 4 W o r d 5
F r a m e S u b f r a m e 1 S u b f r a m e 2 S u b f r a m e 3 S u b f r a m e 4 S u b f r a m e 5
3 0 s e c o n d s = 1 5 0 0 b i t s
Z - c o u n t n Z - c o u n t n + 3 6 s e c o n d s = 4 Z - c o u n t s
6 s e c o n d s = 1 0 w o r d s = 3 0 0 b i t s T L M H O W W o r d 3 W o r d 9 W o r d 1 0
6 0 0 m i l l i s e c o n d s = 3 0 b i t s b i t 1 b i t 2 b i t 3 0b i t i. . . . . .
2 0 m i l l i s e c o n d s = 1 b i t C / A c o d e p e r i o d 1 . . . . . .
C / A c o d e p e r i o d 2
C / A c o d e p e r i o d j
C / A c o d e p e r i o d 2 0
1 m i l l i s e c o n d = 1 0 2 3 C / A c o d e c h i p s
C / A c o d e c h i p 1 . . . . . .
C / A c o d e c h i p 2
C / A c o d e c h i p k
C / A c o d e c h i p 1 0 2 3
9 7 7 . 5 n a n o s e c o n d s = 1 0 X 1 c o u n t s
X 1 c o u n t m
X 1 c o u n t m + 1
X 1 c o u n t m + 3
X 1 c o u n t m + 4
X 1 c o u n t m + 2
X 1 c o u n t m + 7
X 1 c o u n t m + 8
X 1 c o u n t m + 9
P c o d e c h i p 1
P c o d e c h i p 1 0
4 Z - c o u n t s
S u b f r a m e
W o r d
D a t a b i t
C / A c o d e p e r i o d
1 0 X 1 c o u n t s 1 0 P c h i p s
GPS navigation message format
Each subframe is 300 bits (6 s @ 50 bps). Entire message repeats every 12.5 min(5 subframes × 300 bits/subframe × 25 pages = 37500 bits/message)
Example of bit sync error in C/A-code
Session VI - Carrier
Session VI - CarrierExtracting measurements from code and carrier loops
Extracting measurements from carrier loop
Maintaining the carrier accumulatorObtaining a measurement from the carrier accumulatorDelta pseudorange measurementData demodulationBit error performance
Maintaining the carrier accumulator
Carrier accumulator updated as follows:Φtemp = ΦCA + fc ΔφCATΦCA = fractional part of Φtemp (cycles) NCA = NCA + whole part of Φtemp (cycles) where:
Φtemp= temporary ΦCA registerfC = carrier NCO clock frequency (Hz)ΔφCA = carrier NCO carrier Doppler phase increment per clock epoch = carrier loop filter velocity correction + carrier loop velocity aiding (if any)T = time between carrier NCO updates (seconds)NCA = integer number of carrier Doppler phase cycles since some arbitrary starting point
Obtaining a measurement from the carrier accumulator
The natural measurement obtained from the carrier accumulator associated with SVi is an ambiguous integer number of cycles, NCAi, and an unambiguous fraction of a cycle (phase), ΦCAi, defined at some epoch timeCalled an integrated carrier Doppler phase measurementTo obtain integrated carrier Doppler phase measurement, NCAi (n), ΦCAi (n), for SVi corresponding to carrier accumulator, propagate forward to nearest FTF(n) by skew time, Ts :Φtemp = ΦCA + fc ΔφCATsΦCAi (n) = fractional part of Φtemp (cycles)NCAi (n) = NCA + whole part of Φtemp (cycles)
Delta pseudorange measurement
Define delta pseudorange measurement, DPRi(n), two integrated carrier Doppler measurements, ICDi (n-K) and ICDi (n), taken at FTF (n-K) and FTF (n)
FTF (n- K) occurs some integer number of FTFs earlier than FTF (n), ideally at PR measurementsICDi (n -K) = NCAi (n-K), ΦCAi (n-K)ICDi (n) = NCAi (n), ΦCAi (n)DPRi (n) = [ICD (n) – ICD (n-K)]λ (meters)Λ = 0.1903 m/cycle at L1 (and 0.2442 m/cycle at L2)
Data demodulation
Data bits are estimated from 20 ms correlator outputs as:
)sign(Ib Pkk =ˆ
This is ordinary BPSK data demodulation. The well-known expression for BPSK bit error rate is:
⎟⎟⎠
⎞⎜⎜⎝
⎛=
0
bb N
Eerfc21P
The ratio of bit energy Eb to noise power density N0may be related to P/N0 using:
bb P/RE =
data rate (50 Hz for GPS)
Bit error performance
25 25.5 26 26.5 27 27.5 28 28.5 29 29.5 3010
-10
10-9
10-8
10-7
10-6
10-5
10-4
10-3
C/N0 (dB-Hz)
Pro
babi
lity
of B
it E
rror