LunaNet Augmented Forward Signal: koder, meddelandeformat och lunanet-afs-check
Kshana implementerar spridningskoderna och meddelandelagret i LunaNet Augmented Forward Signal (AFS) så som en utgåva av specifikationen definierar dem, och kontrollerar sig själv mot den utgåvans tryckta tabeller.
Låst version. LunaNet Interoperability Specification (LNIS) version 5, Applicable Document 1 Volume A: LunaNet Signal-In-Space Recommended Standard, Augmented Forward Signal (LSIS-AFS) version 1,0, 29 januari 2025 (NASA). Hämtad 2026-10-18; PDF SHA-256 986e0795…e61b6 (proveniens). En senare utgåva är en annan låst version och kan ändra koderna: dokumentet märker sina kodtabeller {LSIS-TBC} och säger att de är "inkluderade enbart för att underlätta test- och integrationsarbete". Varje rapport namnger denna utgåva.
Rådgivande: analysresultat från ett forsknings- och ingenjörsverktyg, inte typgodkänd navigationsutrustning och inte en livsäkerhetstjänst.
Vad som är implementerat#
| Lager | Vad | Var |
|---|---|---|
| AFS-I (data) | Gold-kod 2047 kortcyklad till 2046 chip, G2 fördröjd med ett antal chip per PRN, 1,023 Mchip/s, BPSK(1), 500 symbol/s, PRN 1 till 210 | iq::signals::lunanet::afs_i, signalnamn lunanet-afs-i |
| AFS-Q (pilot) | Weil-kod 10230 (konstruktionen från GPS L1C) i nivåer med en sekundärkod på 4 chip (S0 till S3) och en tertiär Weil-kod på 1500 chip (12 s), 5,115 Mchip/s, BPSK(5), ingen data. afs_q och signalnamnet lunanet-afs-q är mottagarens replika, primär x sekundär (8 ms): den tertiära överlagringen för ramsynkronisering på 12 s är utelämnad ur den, eftersom infångning och spårning inte korrelerar mot en replika på 12 s. afs_q_tiered är hela koden på 12 s |
afs_q, afs_q_with, afs_q_tiered |
| Bärvåg | 2492,028 MHz (LSIS-020) | AFS_HZ |
| Ram | SP 68 + SB1 52 + 5880 interfolierade symboler = 6000 symboler = 12 s vid 500 symbol/s | iq::lunanet_afs |
| SB1 | 9 bitar (FID 2, TOI 7), BCH(51 8), generator 763 oktalt, med dokumentets korrelationsavkodare med 256 hypoteser | sb1_encode, sb1_decode |
| CRC | CRC-24Q, generator (1+X)P(X) (bilaga H) | crc24q_bits, crc24q_bytes |
| Interfolierare | 60 rader x 98 kolumner, skrivs radvis och läses kolumnvis | interleave, deinterleave |
De två komponenterna accepteras av kshana iq scene, acquire, track och sweep som vilken annan signal som helst, så en inspelning kan genomsökas efter AFS-I eller AFS-Q (kshana iq acquire --signal lunanet-afs-i) och en syntetisk scen kan skapas för test av mjukvarumottagare. En syntetisk scen är, som för alla andra signaler, en fil för en mjukvarumottagare; ingenting här styr radiohårdvara.
Vad som inte är implementerat#
- LDPC-kodningen med hastighet 1/2 av delramarna 2 till 4. Dess kontrollmatriser finns i bilaga 1, en separat fil som inte finns i PDF-filen och inte är inkluderad. Delramarna 2 till 4 bärs och kontrolleras som ogenomskinliga symbolblock av den angivna längden, och CRC-24Q-orden i dem verifieras inte. En ström som klarar
lunanet-afs-check symbolsär inte visad innehålla giltiga kodord. - Meddelandeinnehåll (MSG-G1, MSG-G2, MSG-G4, ...): dokumentet lämnar flera definitioner att skriva (TBW).
- Kodtilldelning per LunaNet-nod (tabell F-1 är TBD). PRN 1 till 12 har tillfälliga testtilldelningar (tabell 11).
afs_q(prn)använder PRN n:s primärkod med sekundärkod S((n-1) mod 4); bortom PRN 12 är det den här implementationens mönster, inte dokumentets.afs_q_withochafs_q_tieredtar vilken kombination som helst, med den tertiära koden för vilken PRN som helst. - Länkbudget, fel i signal i rymden, effekt- och koherenskrav (LSIS-100 och följande).
kshana lunanet-afs-check#
kshana lunanet-afs-check spec [--json] [--strict]
kshana lunanet-afs-check symbols <file> [--max-sp-errors <n>] [--json]
kshana lunanet-afs-check generate --frames <n> [--toi0 <t>] --out <file>
speckör implementationen mot dokumentets tryckta tabeller och räknade exempel (trösklarna B1 till B10 i förhandsregistreringen) och skriver ut var och en med sitt antal och sin status.--strictavslutas med 1 om inte varje tröskel är nådd.symbolsläser en symbolström med hårda beslut (text med0och1; blanksteg ignoreras) och kontrollerar synkroniseringsmönstret, SB1-avkodning, FID (bara 0 är definierat), TOI-kontinuitet (ökar med ett modulo 100) och ramavstånd (6000 symboler). Den avslutas med 1 vid varje problem.generateskriver en testsymbolström: dokumentets synkroniseringsmönster, SB1- och ramlängder, med delramar 2 till 4 som är platshållare (den alternerande fyllnaden i LSIS-300, inte LDPC-kodad, inget meddelande). Det är symboler för att testa en kontrollerare eller en avkodare, inte en vågform; Kshana skriver ingen signal.
Python: lunanet_afs_check_spec, lunanet_afs_check_symbols, lunanet_afs_generate. WebAssembly: samma namn. MCP: lunanet_afs_check (mode spec, symbols eller generate). Plugin: /kshana-lunanet-afs-check. Studio och JetBrains: N/A (SURFACES.md).
Resultat#
Trösklar angivna i xval/lunanet-afs/PREREGISTRATION.md innan generatorn fanns; test i tests/lunanet_afs_codes.rs.
| Tröskel | Påstående | Resultat |
|---|---|---|
| B1 | AFS-I första och sista 24 chipen, 210 PRN | MET, 420 av 420 |
| B1b | det tryckta initialtillståndet för G2 är tillståndet efter den tryckta fördröjningen | NOT MET, 0 av 210: påståendet hade fel riktning. Post hoc (B1c, inte förhandsregistrerad): det tryckta tillståndet är tillståndet efter 2047 minus fördröjningen, 210 av 210 |
| B2 | Legendre(10223) är lika med tabell D-1 | MET |
| B3 | AFS-Q primär första och sista 24 chipen, 210 PRN | MET, 420 av 420 |
| B4 | Legendre(1499) är lika med tabell E-1 samt tertiär första och sista 24 chipen, 210 PRN | NOT MET, 420 av 421: Legendre-sekvensen stämmer och 419 av 420 kodkolumner stämmer. De sista 24 chipen som är tryckta för PRN 147 (A14850) är samma värde som är tryckt för PRN 151, vars kod generatorn återger; två olika Weil-index (607 och 612) ger inte samma sista 24 chip, så posten för PRN 147 är med största sannolikhet ett tryckfel i dokumentet. Det kan inte avgöras utan den separata kodfilen i bilaga 3. Fastlåst av ett test |
| B5 | sekundärkoderna S0 till S3 är lika med tabell 10 | MET (dokumentets egna konstanter) |
| B6 | SB1-räknat exempel i figur 8 | MET: 0x045 kodas till 0x229F61DBB84A0 och avkodas till FID 0, TOI 69 (ett exempel) |
| B7 | Kontrollvärde för CRC-24Q för 123456789 |
MET: 0xCDE703 (katalogvärdet, utanför specifikationen) |
| B8 | ramaritmetik | MET |
| B9 | interfoliera och sedan avinterfoliera | MET (en egenskap, MODELLED) |
| B10 | synkroniseringsmönster | MET (68 symboler; en transkriptionskontroll) |
B1 till B4 är VALIDATED mot de tryckta tabellerna i den citerade utgåvan, som dokumentet märker {LSIS-TBC}. En tur-och-retur-körning från scen till infångning till spårning av båda komponenterna klarar samma trösklar som de andra signalerna (tests/iq_signal_matrix.rs).