LunaNet Augmented Forward Signal: kody, format komunikatu i lunanet-afs-check
Kshana implementuje kody rozpraszające i warstwę komunikatów Augmented Forward Signal (AFS) LunaNet tak, jak definiuje je jedno wydanie specyfikacji, i sprawdza się względem drukowanych tabel tego wydania.
Przypięcie. LunaNet Interoperability Specification (LNIS) Wersja 5, Dokument obowiązujący 1 Tom A: LunaNet Signal-In-Space Recommended Standard, Augmented Forward Signal (LSIS-AFS) Wersja 1,0, 29 stycznia 2025 (NASA). Pobrano 2026-10-18; PDF SHA-256 986e0795…e61b6 (pochodzenie). Późniejsze wydanie to inne przypięcie i może zmienić kody: dokument oznacza swoje tabele kodów {LSIS-TBC} i mówi, że są one „dołączone wyłącznie dla ułatwienia testów i integracji”. Każdy raport podaje to wydanie.
Wyłącznie doradczo: wynik analizy z narzędzia badawczo-inżynieryjnego; nie jest to sprzęt nawigacyjny z zatwierdzeniem typu ani usługa bezpieczeństwa życia.
Co jest zaimplementowane#
| Warstwa | Co | Gdzie |
|---|---|---|
| AFS-I (dane) | Kod Golda 2047 skrócony cyklicznie do 2046 chipów, G2 opóźniony o liczbę chipów zależną od PRN, 1,023 Mchip/s, BPSK(1), 500 symboli/s, PRN 1 do 210 | iq::signals::lunanet::afs_i, nazwa sygnału lunanet-afs-i |
| AFS-Q (pilot) | Kod Weila 10230 (konstrukcja GPS L1C) warstwowany z 4-chipowym kodem wtórnym (S0 do S3) i 1500-chipowym trzeciorzędowym kodem Weila (12 s), 5,115 Mchip/s, BPSK(5), bez danych. afs_q i nazwa sygnału lunanet-afs-q to replika odbiornika, podstawowy x wtórny (8 ms): trzeciorzędowa nakładka synchronizacji ramki o długości 12 s jest z niej pominięta, ponieważ akwizycja i śledzenie nie korelują z repliką 12 s. afs_q_tiered to pełny kod 12 s |
afs_q, afs_q_with, afs_q_tiered |
| Nośna | 2492,028 MHz (LSIS-020) | AFS_HZ |
| Ramka | SP 68 + SB1 52 + 5880 przeplecionych symboli = 6000 symboli = 12 s przy 500 symboli/s | iq::lunanet_afs |
| SB1 | 9 bitów (FID 2, TOI 7), BCH(51 8), generator 763 ósemkowo, z 256-hipotezowym korelacyjnym dekoderem z dokumentu | sb1_encode, sb1_decode |
| CRC | CRC-24Q, generator (1+X)P(X) (dodatek H) | crc24q_bits, crc24q_bytes |
| Przeplatacz | 60 wierszy x 98 kolumn, zapis wierszami i odczyt kolumnami | interleave, deinterleave |
Oba składniki są przyjmowane przez kshana iq scene, acquire, track i sweep jak każdy inny sygnał, więc nagranie można przeszukać pod kątem AFS-I lub AFS-Q (kshana iq acquire --signal lunanet-afs-i), a scenę syntetyczną można wytworzyć do testów programowych odbiorników. Scena syntetyczna, jak w przypadku każdego innego sygnału, jest plikiem dla programowego odbiornika; nic tu nie steruje sprzętem radiowym.
Co nie jest zaimplementowane#
- Kodowanie LDPC o sprawności 1/2 podramek 2 do 4. Jego macierze kontrolne znajdują się w załączniku 1, osobnym pliku, którego nie ma w PDF i który nie jest dołączony. Podramki 2 do 4 są przenoszone i sprawdzane jako nieprzezroczyste bloki symboli o określonej długości, a słowa CRC-24Q w nich zawarte nie są weryfikowane. Strumień, który przechodzi
lunanet-afs-check symbols, nie jest wykazany jako zawierający poprawne słowa kodowe. - Treść komunikatów (MSG-G1, MSG-G2, MSG-G4, ...): dokument pozostawia kilka definicji do napisania (TBW).
- Przydział kodów na węzeł LunaNet (tabela F-1 jest TBD). PRN 1 do 12 mają tymczasowe przydziały testowe (tabela 11).
afs_q(prn)używa kodu podstawowego PRN n z kodem wtórnym S((n-1) mod 4); powyżej PRN 12 jest to wzorzec tej implementacji, a nie dokumentu.afs_q_withiafs_q_tieredprzyjmują dowolną kombinację, z kodem trzeciorzędowym dowolnego PRN. - Bilans łącza, błąd sygnału w przestrzeni kosmicznej, wymagania dotyczące mocy i koherencji (LSIS-100 i następne).
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>
specuruchamia implementację względem drukowanych tabel i przykładów rozwiązanych z dokumentu (progi B1 do B10 z wstępnej rejestracji) i wypisuje każdy z liczbą i statusem.--strictkończy z kodem 1, o ile nie wszystkie progi są spełnione.symbolsodczytuje strumień symboli z twardymi decyzjami (tekst z0i1; białe znaki ignorowane) i sprawdza wzorzec synchronizacji, dekodowanie SB1, FID (zdefiniowane jest tylko 0), ciągłość TOI (zwiększanie o jeden modulo 100) i odstęp ramek (6000 symboli). Kończy z kodem 1 przy każdym problemie.generatezapisuje strumień testowy: wzorzec synchronizacji z dokumentu, długości SB1 i ramek, z zastępczymi podramkami 2 do 4 (naprzemienne wypełnienie z LSIS-300, bez kodowania LDPC, bez komunikatu). Są to symbole do testowania sprawdzarki lub dekodera, a nie przebieg; Kshana nie zapisuje żadnego sygnału.
Python: lunanet_afs_check_spec, lunanet_afs_check_symbols, lunanet_afs_generate. WebAssembly: te same nazwy. MCP: lunanet_afs_check (mode spec, symbols lub generate). Wtyczka: /kshana-lunanet-afs-check. Studio i JetBrains: N/A (SURFACES.md).
Wyniki#
Progi podane w xval/lunanet-afs/PREREGISTRATION.md zanim powstał generator; testy w tests/lunanet_afs_codes.rs.
| Próg | Twierdzenie | Wynik |
|---|---|---|
| B1 | AFS-I pierwsze i ostatnie 24 chipy, 210 PRN | MET, 420 z 420 |
| B1b | drukowany stan początkowy G2 jest stanem po drukowanym opóźnieniu | NOT MET, 0 z 210: twierdzenie miało kierunek odwrócony. Post hoc (B1c, niezarejestrowane z góry): drukowany stan jest stanem po 2047 minus opóźnienie, 210 z 210 |
| B2 | Legendre(10223) równa się tabeli D-1 | MET |
| B3 | AFS-Q kod podstawowy, pierwsze i ostatnie 24 chipy, 210 PRN | MET, 420 z 420 |
| B4 | Legendre(1499) równa się tabeli E-1, a kod trzeciorzędowy, pierwsze i ostatnie 24 chipy, 210 PRN | NOT MET, 420 z 421: ciąg Legendre'a się zgadza i 419 z 420 kolumn kodu się zgadza. Ostatnie 24 chipy wydrukowane dla PRN 147 (A14850) są tą samą wartością, którą wydrukowano dla PRN 151, którego kod generator odtwarza; dwa różne indeksy Weila (607 i 612) nie dają tych samych ostatnich 24 chipów, więc wpis dla PRN 147 jest najprawdopodobniej błędem druku w dokumencie. Nie można tego rozstrzygnąć bez osobnego pliku kodów z załącznika 3. Przypięte testem |
| B5 | kody wtórne S0 do S3 równe tabeli 10 | MET (własne stałe dokumentu) |
| B6 | przykład rozwiązany SB1 z rysunku 8 | MET: 0x045 koduje się do 0x229F61DBB84A0 i dekoduje do FID 0, TOI 69 (jeden przykład) |
| B7 | wartość kontrolna CRC-24Q dla 123456789 |
MET: 0xCDE703 (wartość katalogowa, spoza specyfikacji) |
| B8 | arytmetyka ramek | MET |
| B9 | przeplatanie, a następnie odwrotne przeplatanie | MET (własność, MODELLED) |
| B10 | wzorzec synchronizacji | MET (68 symboli; sprawdzenie transkrypcji) |
B1 do B4 są VALIDATED względem drukowanych tabel wskazanego wydania, które dokument oznacza {LSIS-TBC}. Pełna pętla scena–akwizycja–śledzenie obu składników spełnia te same progi co inne sygnały (tests/iq_signal_matrix.rs).