Add BOC-aware lock detection and E1C-aided tracking

This commit is contained in:
2026-07-31 01:13:35 +03:00
parent 814a788b36
commit 9db955d02e
133 changed files with 6536 additions and 42 deletions
+12 -2
View File
@@ -6,7 +6,10 @@ soft-decision Viterbi decoder or navigation database in RTL.
## Tracking-IP output contract
One record is emitted for every 4 ms E1B primary-code epoch:
The tracking IP uses E1C VE/E/P/L/VL for shared carrier/code loops, C/N0, and
BOC-aware lock monitoring. A separate E1B correlator branch consumes the same
sample-by-sample NCO phases. One navigation record is emitted from that branch
for every 4 ms E1B primary-code epoch:
| Field | Proposed representation | Meaning |
| --- | --- | --- |
@@ -16,7 +19,9 @@ One record is emitted for every 4 ms E1B primary-code epoch:
| carrier phase/frequency | NCO state/measurement words | Reprocessing and phase diagnostics |
| code phase | unsigned fixed-point chips | Code-time association |
| C/N0 | fixed-point dB-Hz or invalid | Monitoring only |
| carrier/code lock | bits | Decoder validity gate |
| carrier/code lock | bits | E1C pilot-derived decoder validity gate |
| lock metric valid | bit | BOC smoothing/calibration window is valid |
| BOC main/side metrics | fixed-point monitor words | false-lock diagnosis |
| cycle slip/discontinuity | bits | Immediate symbol/page synchronizer reset |
| valid | bit | Transaction validity |
@@ -25,6 +30,11 @@ must absorb software service latency; backpressure cannot be allowed to stop the
sample-rate tracking datapath. At 250 records/s/channel, even 36 active E1B
channels produce only 9000 records/s, so a memory-mapped DMA ring is sufficient.
E1C secondary-code synchronization can remain software-assisted initially: a
bounded Prompt buffer is searched for secondary phase and residual carrier
frequency, then the phase is written to tracking-channel state. Continuous
secondary wipeoff and the E1C/E1B correlator branches remain sample-rate RTL.
## Software decoder
Software retains floating `numpy.float64` prompt/soft values in the reference