From 2a6ccfc23db493c26653a742a9896f07dc1a0174 Mon Sep 17 00:00:00 2001 From: onur Date: Thu, 30 Jul 2026 23:26:03 +0300 Subject: [PATCH] Initial Galileo receiver and SignalSim integration --- .gitignore | 16 + README.md | 126 ++++ configs/acquisition_example.yaml | 31 + configs/e1_default.yaml | 32 + configs/signalsim_detected_format.yaml | 44 ++ configs/signalsim_validation.yaml | 41 ++ configs/tracking_example.yaml | 22 + data/galileo_e1_primary_codes/README.md | 6 + data/galileo_e1_secondary_codes/README.md | 4 + docs/algorithms.md | 119 ++++ docs/configuration.md | 28 + docs/development_phases.md | 50 ++ docs/fixed_point_plan.md | 45 ++ docs/rtl_mapping.md | 104 +++ docs/signalsim_integration.md | 241 +++++++ examples/generate_e1_signal.py | 16 + examples/run_acquisition.py | 16 + examples/run_complete_receiver.py | 5 + examples/run_tracking.py | 19 + pyproject.toml | 25 + reports/signalsim_acquisition_report.json | 103 +++ reports/signalsim_acquisition_report.md | 8 + reports/signalsim_bit_generation_report.md | 34 + reports/signalsim_e1b_symbol_comparison.json | 27 + .../acquisition_map_e1b.png | Bin 0 -> 57085 bytes .../acquisition_map_e1c.png | Bin 0 -> 57173 bytes .../acquisition_peak_neighborhood_e1b.png | Bin 0 -> 51698 bytes .../acquisition_peak_neighborhood_e1c.png | Bin 0 -> 52195 bytes .../acquisition_profiles_e1b.png | Bin 0 -> 40298 bytes .../acquisition_profiles_e1c.png | Bin 0 -> 40684 bytes .../prompt_constellation_e1b.png | Bin 0 -> 62070 bytes .../prompt_constellation_e1c.png | Bin 0 -> 45747 bytes .../signalsim_acquisition_input_iq8.json | 40 ++ .../signalsim_e1b_symbol_comparison.json | 27 + .../signalsim_validation_report.json | 267 ++++++++ .../signalsim_validation_report.md | 17 + reports/signalsim_validation/tracking_e1b.png | Bin 0 -> 125680 bytes reports/signalsim_validation/tracking_e1c.png | Bin 0 -> 130288 bytes .../acquisition_map_e1b.png | Bin 0 -> 57085 bytes .../acquisition_map_e1c.png | Bin 0 -> 57173 bytes .../acquisition_peak_neighborhood_e1b.png | Bin 0 -> 51698 bytes .../acquisition_peak_neighborhood_e1c.png | Bin 0 -> 52195 bytes .../acquisition_profiles_e1b.png | Bin 0 -> 40298 bytes .../acquisition_profiles_e1c.png | Bin 0 -> 40684 bytes .../prompt_constellation_e1b.png | Bin 0 -> 62070 bytes .../prompt_constellation_e1c.png | Bin 0 -> 45747 bytes .../signalsim_acquisition_input_iq8.json | 40 ++ .../signalsim_e1b_symbol_comparison.json | 27 + .../signalsim_validation_report.json | 545 ++++++++++++++++ .../signalsim_validation_report.md | 18 + .../tracking_e1b.png | Bin 0 -> 125680 bytes .../tracking_e1c.png | Bin 0 -> 130288 bytes src/galileo_rx/__init__.py | 8 + src/galileo_rx/acquisition/__init__.py | 7 + .../acquisition/acquisition_manager.py | 67 ++ src/galileo_rx/acquisition/detector.py | 21 + src/galileo_rx/acquisition/fft_pcps.py | 138 ++++ src/galileo_rx/acquisition/metrics.py | 41 ++ src/galileo_rx/cli.py | 189 ++++++ src/galileo_rx/config.py | 177 ++++++ src/galileo_rx/diagnostics/__init__.py | 2 + src/galileo_rx/diagnostics/plots.py | 96 +++ src/galileo_rx/diagnostics/reports.py | 32 + src/galileo_rx/fixed_point/__init__.py | 7 + .../fixed_point/bittrue_pipeline.py | 65 ++ .../fixed_point/fixed_acquisition.py | 69 ++ .../fixed_point/fixed_correlator.py | 62 ++ src/galileo_rx/fixed_point/fixed_fft.py | 100 +++ .../fixed_point/fixed_loop_filter.py | 59 ++ src/galileo_rx/fixed_point/fixed_mixer.py | 48 ++ src/galileo_rx/fixed_point/fixed_nco.py | 44 ++ src/galileo_rx/fixed_point/formats.py | 62 ++ src/galileo_rx/fixed_point/quantizer.py | 71 +++ src/galileo_rx/frontend/__init__.py | 7 + src/galileo_rx/frontend/agc.py | 24 + src/galileo_rx/frontend/dc_blocker.py | 25 + src/galileo_rx/frontend/decimator.py | 29 + src/galileo_rx/frontend/frontend_chain.py | 42 ++ src/galileo_rx/frontend/mixer.py | 66 ++ src/galileo_rx/io/__init__.py | 14 + src/galileo_rx/io/sample_reader.py | 35 ++ src/galileo_rx/io/sample_writer.py | 13 + src/galileo_rx/io/signalsim_reader.py | 154 +++++ src/galileo_rx/rtl_model/__init__.py | 6 + src/galileo_rx/rtl_model/architecture.md | 71 +++ src/galileo_rx/rtl_model/cycle_model.py | 74 +++ src/galileo_rx/rtl_model/interfaces.py | 34 + src/galileo_rx/rtl_model/vector_export.py | 76 +++ src/galileo_rx/signal_profiles.py | 58 ++ src/galileo_rx/signals/__init__.py | 7 + src/galileo_rx/signals/boc.py | 38 ++ src/galileo_rx/signals/code_provider.py | 82 +++ src/galileo_rx/signals/galileo_e1.py | 31 + src/galileo_rx/signals/signal_generator.py | 182 ++++++ src/galileo_rx/signals/signalsim_codes.py | 121 ++++ src/galileo_rx/tracking/__init__.py | 7 + src/galileo_rx/tracking/cn0_estimator.py | 31 + src/galileo_rx/tracking/correlator.py | 75 +++ src/galileo_rx/tracking/discriminators.py | 51 ++ src/galileo_rx/tracking/lock_detector.py | 39 ++ src/galileo_rx/tracking/loop_filters.py | 70 +++ src/galileo_rx/tracking/nco.py | 33 + src/galileo_rx/tracking/symbol_sync.py | 133 ++++ src/galileo_rx/tracking/tracking_channel.py | 174 ++++++ src/galileo_rx/tracking/tracking_manager.py | 30 + src/galileo_rx/types.py | 102 +++ src/galileo_rx/verification/__init__.py | 1 + .../verification/signalsim_validation.py | 591 ++++++++++++++++++ tests/conftest.py | 18 + tests/integration/test_acquisition.py | 86 +++ .../test_detection_and_lock_loss.py | 33 + tests/integration/test_fixed_acquisition.py | 33 + tests/integration/test_long_integration.py | 57 ++ .../integration/test_signalsim_acquisition.py | 25 + .../test_signalsim_code_conventions.py | 47 ++ .../integration/test_signalsim_e1b_symbols.py | 15 + .../test_signalsim_e1c_secondary_code.py | 13 + .../test_signalsim_full_vectors.py | 19 + tests/integration/test_signalsim_reader.py | 53 ++ tests/integration/test_signalsim_tracking.py | 15 + tests/integration/test_tracking.py | 103 +++ tests/regression/test_complete_receiver.py | 42 ++ tests/unit/test_acquisition_metrics.py | 27 + tests/unit/test_acquisition_parallelism.py | 18 + tests/unit/test_config.py | 20 + tests/unit/test_correlator.py | 42 ++ tests/unit/test_discriminators.py | 32 + tests/unit/test_fixed_fft.py | 31 + tests/unit/test_fixed_point.py | 59 ++ tests/unit/test_frontend.py | 32 + tests/unit/test_loop_filters.py | 23 + tests/unit/test_rtl_model.py | 16 + tests/unit/test_signals.py | 58 ++ tests/unit/test_symbol_sync.py | 31 + tests/unit/test_vector_export.py | 26 + tools/build_signalsim.sh | 50 ++ tools/generate_signalsim_vectors.py | 97 +++ .../signalsim/high_cn0_single_prn/config.json | 68 ++ .../high_cn0_single_prn_iq8.bin.tag | 8 + .../high_cn0_single_prn/metadata.yaml | 29 + verification/vectors/signalsim/manifest.yaml | 58 ++ .../multiple_prns/generated_config.json | 116 ++++ .../signalsim/multiple_prns/generation.log | 62 ++ .../signalsim/multiple_prns/metadata.yaml | 37 ++ .../multiple_prns/multiple_prns_iq8.bin.tag | 8 + .../negative_doppler/generated_config.json | 120 ++++ .../signalsim/negative_doppler/generation.log | 145 +++++ .../signalsim/negative_doppler/metadata.yaml | 29 + .../negative_doppler_iq8.bin.tag | 8 + .../generated_config.json | 120 ++++ .../nominal_cn0_single_prn/generation.log | 80 +++ .../nominal_cn0_single_prn/metadata.yaml | 29 + .../nominal_cn0_single_prn_iq8.bin.tag | 8 + 153 files changed, 8080 insertions(+) create mode 100644 .gitignore create mode 100644 README.md create mode 100644 configs/acquisition_example.yaml create mode 100644 configs/e1_default.yaml create mode 100644 configs/signalsim_detected_format.yaml create mode 100644 configs/signalsim_validation.yaml create mode 100644 configs/tracking_example.yaml create mode 100644 data/galileo_e1_primary_codes/README.md create mode 100644 data/galileo_e1_secondary_codes/README.md create mode 100644 docs/algorithms.md create mode 100644 docs/configuration.md create mode 100644 docs/development_phases.md create mode 100644 docs/fixed_point_plan.md create mode 100644 docs/rtl_mapping.md create mode 100644 docs/signalsim_integration.md create mode 100644 examples/generate_e1_signal.py create mode 100644 examples/run_acquisition.py create mode 100644 examples/run_complete_receiver.py create mode 100644 examples/run_tracking.py create mode 100644 pyproject.toml create mode 100644 reports/signalsim_acquisition_report.json create mode 100644 reports/signalsim_acquisition_report.md create mode 100644 reports/signalsim_bit_generation_report.md create mode 100644 reports/signalsim_e1b_symbol_comparison.json create mode 100644 reports/signalsim_validation/acquisition_map_e1b.png create mode 100644 reports/signalsim_validation/acquisition_map_e1c.png create mode 100644 reports/signalsim_validation/acquisition_peak_neighborhood_e1b.png create mode 100644 reports/signalsim_validation/acquisition_peak_neighborhood_e1c.png create mode 100644 reports/signalsim_validation/acquisition_profiles_e1b.png create mode 100644 reports/signalsim_validation/acquisition_profiles_e1c.png create mode 100644 reports/signalsim_validation/prompt_constellation_e1b.png create mode 100644 reports/signalsim_validation/prompt_constellation_e1c.png create mode 100644 reports/signalsim_validation/rtl_vectors/signalsim_acquisition_input_iq8.json create mode 100644 reports/signalsim_validation/signalsim_e1b_symbol_comparison.json create mode 100644 reports/signalsim_validation/signalsim_validation_report.json create mode 100644 reports/signalsim_validation/signalsim_validation_report.md create mode 100644 reports/signalsim_validation/tracking_e1b.png create mode 100644 reports/signalsim_validation/tracking_e1c.png create mode 100644 reports/signalsim_validation_full/acquisition_map_e1b.png create mode 100644 reports/signalsim_validation_full/acquisition_map_e1c.png create mode 100644 reports/signalsim_validation_full/acquisition_peak_neighborhood_e1b.png create mode 100644 reports/signalsim_validation_full/acquisition_peak_neighborhood_e1c.png create mode 100644 reports/signalsim_validation_full/acquisition_profiles_e1b.png create mode 100644 reports/signalsim_validation_full/acquisition_profiles_e1c.png create mode 100644 reports/signalsim_validation_full/prompt_constellation_e1b.png create mode 100644 reports/signalsim_validation_full/prompt_constellation_e1c.png create mode 100644 reports/signalsim_validation_full/rtl_vectors/signalsim_acquisition_input_iq8.json create mode 100644 reports/signalsim_validation_full/signalsim_e1b_symbol_comparison.json create mode 100644 reports/signalsim_validation_full/signalsim_validation_report.json create mode 100644 reports/signalsim_validation_full/signalsim_validation_report.md create mode 100644 reports/signalsim_validation_full/tracking_e1b.png create mode 100644 reports/signalsim_validation_full/tracking_e1c.png create mode 100644 src/galileo_rx/__init__.py create mode 100644 src/galileo_rx/acquisition/__init__.py create mode 100644 src/galileo_rx/acquisition/acquisition_manager.py create mode 100644 src/galileo_rx/acquisition/detector.py create mode 100644 src/galileo_rx/acquisition/fft_pcps.py create mode 100644 src/galileo_rx/acquisition/metrics.py create mode 100644 src/galileo_rx/cli.py create mode 100644 src/galileo_rx/config.py create mode 100644 src/galileo_rx/diagnostics/__init__.py create mode 100644 src/galileo_rx/diagnostics/plots.py create mode 100644 src/galileo_rx/diagnostics/reports.py create mode 100644 src/galileo_rx/fixed_point/__init__.py create mode 100644 src/galileo_rx/fixed_point/bittrue_pipeline.py create mode 100644 src/galileo_rx/fixed_point/fixed_acquisition.py create mode 100644 src/galileo_rx/fixed_point/fixed_correlator.py create mode 100644 src/galileo_rx/fixed_point/fixed_fft.py create mode 100644 src/galileo_rx/fixed_point/fixed_loop_filter.py create mode 100644 src/galileo_rx/fixed_point/fixed_mixer.py create mode 100644 src/galileo_rx/fixed_point/fixed_nco.py create mode 100644 src/galileo_rx/fixed_point/formats.py create mode 100644 src/galileo_rx/fixed_point/quantizer.py create mode 100644 src/galileo_rx/frontend/__init__.py create mode 100644 src/galileo_rx/frontend/agc.py create mode 100644 src/galileo_rx/frontend/dc_blocker.py create mode 100644 src/galileo_rx/frontend/decimator.py create mode 100644 src/galileo_rx/frontend/frontend_chain.py create mode 100644 src/galileo_rx/frontend/mixer.py create mode 100644 src/galileo_rx/io/__init__.py create mode 100644 src/galileo_rx/io/sample_reader.py create mode 100644 src/galileo_rx/io/sample_writer.py create mode 100644 src/galileo_rx/io/signalsim_reader.py create mode 100644 src/galileo_rx/rtl_model/__init__.py create mode 100644 src/galileo_rx/rtl_model/architecture.md create mode 100644 src/galileo_rx/rtl_model/cycle_model.py create mode 100644 src/galileo_rx/rtl_model/interfaces.py create mode 100644 src/galileo_rx/rtl_model/vector_export.py create mode 100644 src/galileo_rx/signal_profiles.py create mode 100644 src/galileo_rx/signals/__init__.py create mode 100644 src/galileo_rx/signals/boc.py create mode 100644 src/galileo_rx/signals/code_provider.py create mode 100644 src/galileo_rx/signals/galileo_e1.py create mode 100644 src/galileo_rx/signals/signal_generator.py create mode 100644 src/galileo_rx/signals/signalsim_codes.py create mode 100644 src/galileo_rx/tracking/__init__.py create mode 100644 src/galileo_rx/tracking/cn0_estimator.py create mode 100644 src/galileo_rx/tracking/correlator.py create mode 100644 src/galileo_rx/tracking/discriminators.py create mode 100644 src/galileo_rx/tracking/lock_detector.py create mode 100644 src/galileo_rx/tracking/loop_filters.py create mode 100644 src/galileo_rx/tracking/nco.py create mode 100644 src/galileo_rx/tracking/symbol_sync.py create mode 100644 src/galileo_rx/tracking/tracking_channel.py create mode 100644 src/galileo_rx/tracking/tracking_manager.py create mode 100644 src/galileo_rx/types.py create mode 100644 src/galileo_rx/verification/__init__.py create mode 100644 src/galileo_rx/verification/signalsim_validation.py create mode 100644 tests/conftest.py create mode 100644 tests/integration/test_acquisition.py create mode 100644 tests/integration/test_detection_and_lock_loss.py create mode 100644 tests/integration/test_fixed_acquisition.py create mode 100644 tests/integration/test_long_integration.py create mode 100644 tests/integration/test_signalsim_acquisition.py create mode 100644 tests/integration/test_signalsim_code_conventions.py create mode 100644 tests/integration/test_signalsim_e1b_symbols.py create mode 100644 tests/integration/test_signalsim_e1c_secondary_code.py create mode 100644 tests/integration/test_signalsim_full_vectors.py create mode 100644 tests/integration/test_signalsim_reader.py create mode 100644 tests/integration/test_signalsim_tracking.py create mode 100644 tests/integration/test_tracking.py create mode 100644 tests/regression/test_complete_receiver.py create mode 100644 tests/unit/test_acquisition_metrics.py create mode 100644 tests/unit/test_acquisition_parallelism.py create mode 100644 tests/unit/test_config.py create mode 100644 tests/unit/test_correlator.py create mode 100644 tests/unit/test_discriminators.py create mode 100644 tests/unit/test_fixed_fft.py create mode 100644 tests/unit/test_fixed_point.py create mode 100644 tests/unit/test_frontend.py create mode 100644 tests/unit/test_loop_filters.py create mode 100644 tests/unit/test_rtl_model.py create mode 100644 tests/unit/test_signals.py create mode 100644 tests/unit/test_symbol_sync.py create mode 100644 tests/unit/test_vector_export.py create mode 100755 tools/build_signalsim.sh create mode 100755 tools/generate_signalsim_vectors.py create mode 100644 verification/vectors/signalsim/high_cn0_single_prn/config.json create mode 100644 verification/vectors/signalsim/high_cn0_single_prn/high_cn0_single_prn_iq8.bin.tag create mode 100644 verification/vectors/signalsim/high_cn0_single_prn/metadata.yaml create mode 100644 verification/vectors/signalsim/manifest.yaml create mode 100644 verification/vectors/signalsim/multiple_prns/generated_config.json create mode 100644 verification/vectors/signalsim/multiple_prns/generation.log create mode 100644 verification/vectors/signalsim/multiple_prns/metadata.yaml create mode 100644 verification/vectors/signalsim/multiple_prns/multiple_prns_iq8.bin.tag create mode 100644 verification/vectors/signalsim/negative_doppler/generated_config.json create mode 100644 verification/vectors/signalsim/negative_doppler/generation.log create mode 100644 verification/vectors/signalsim/negative_doppler/metadata.yaml create mode 100644 verification/vectors/signalsim/negative_doppler/negative_doppler_iq8.bin.tag create mode 100644 verification/vectors/signalsim/nominal_cn0_single_prn/generated_config.json create mode 100644 verification/vectors/signalsim/nominal_cn0_single_prn/generation.log create mode 100644 verification/vectors/signalsim/nominal_cn0_single_prn/metadata.yaml create mode 100644 verification/vectors/signalsim/nominal_cn0_single_prn/nominal_cn0_single_prn_iq8.bin.tag diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3bbd880 --- /dev/null +++ b/.gitignore @@ -0,0 +1,16 @@ +__pycache__/ +*.py[cod] +*.egg-info/ +.pytest_cache/ +.coverage +htmlcov/ +build/ +*.bin +*.csv +*.npz +*.hex +e1_synthetic.c128 + +# External simulator checkout discovered locally; rebuild/integration scripts +# consume it by path, but it is maintained as a separate Git repository. +/signalsim/ diff --git a/README.md b/README.md new file mode 100644 index 0000000..a06f635 --- /dev/null +++ b/README.md @@ -0,0 +1,126 @@ +# Galileo receiver baseband model + +This repository is a modular Python reference model for a Galileo receiver +baseband and a starting point for bit-true/RTL verification. It currently +implements E1B data and E1C pilot processing with a BOC(1,1) local replica, +streaming real-IF or complex-IQ front ends, FFT PCPS acquisition, independent +tracking channels, fixed-point boundary models, and hardware sizing models. +The floating reference uses `numpy.float64`/`numpy.complex128` throughout; +single-precision formats are accepted only when explicitly reading legacy files. + +The repository intentionally contains **no fabricated Galileo PRN sequences**. +`SyntheticCodeProvider` creates deterministic non-ICD codes for closed-loop +verification. These codes cannot receive a live Galileo signal. Validated +official tables can be installed under `data/` and loaded through +`FileCodeProvider` without changing acquisition or tracking APIs. + +An external `globsky/SignalSim` checkout is now validated as a second code and +sample source. `SignalSimCodeProvider` parses that checkout at run time without +copying its tables. The installed commit generates combined E1B/E1C BOC(1,1) +complex IQ; both acquisition and tracking pass on its IQ8 output. See the +[measured SignalSim integration report](docs/signalsim_integration.md). + +## Status and limitations + +- E1 profile: 1.023 Mcps, 4092 chips, 4 ms, 1575.42 MHz. +- BOC(1,1) is implemented; CBOC and unambiguous BOC are API extension points. +- E1B bit-transition hypotheses and E1C secondary wipeoff/search are available + for acquisition. E1C tracking supports known-phase wipeoff. +- The code-table provider, not the DSP engine, determines whether codes are + synthetic or official. +- The floating-point model is executable. The fixed PCPS model is bit-true at + I/O, FFT output, product, power, and accumulator boundaries; an FFT + vendor/butterfly schedule must be selected before claiming bit identity with + a particular RTL FFT core. +- Channel impairments include Doppler rate, sampling-clock offset, carrier + offset, AWGN, clipping, and quantization. Multipath, jerk, oscillator phase + noise, and interference are future channel-model plug-ins. +- Combined E1B/E1C tracking is represented by separate manager channels; a + weighted combining policy is intentionally not assumed. + +## Install and test + +Python 3.11 or newer is required. + +```bash +python -m pip install -e '.[test]' +python -m pytest +``` + +All automated tests use deterministic seeds and run headlessly. Plots import +Matplotlib only when explicitly requested. + +## Configuration and CLI + +YAML keys map to strict dataclasses in `galileo_rx.config`; unknown keys and +unsafe long integrations raise descriptive errors. Physical quantities carry +unit suffixes. See [configuration details](docs/configuration.md). + +```bash +python -m galileo_rx.cli generate --config configs/acquisition_example.yaml --output samples.bin +python -m galileo_rx.cli acquire --config configs/acquisition_example.yaml --input samples.bin --output acquisition.json +python -m galileo_rx.cli track --config configs/tracking_example.yaml --input samples.bin --acquisition-result acquisition.json --output tracking.csv +python -m galileo_rx.cli run --config configs/acquisition_example.yaml --input samples.bin +python -m galileo_rx.cli compare-fixed --config configs/acquisition_example.yaml --input samples.bin +python -m galileo_rx.cli validate-signalsim --signalsim-path signalsim/SignalSim --config configs/signalsim_validation.yaml --output-dir reports/signalsim_validation +``` + +The CLI uses synthetic codes by design. Replace the provider with +`FileCodeProvider` after installing independently validated tables for live +signal work. + +`validate-signalsim` is the exception: it explicitly uses the detected external +SignalSim table and IQ conventions and writes quantitative JSON/Markdown/plot +artifacts. Its quick regression is: + +```bash +MPLBACKEND=Agg pytest -m signalsim -v +``` + +Runnable source examples are in `examples/`: + +```bash +python examples/generate_e1_signal.py +python examples/run_acquisition.py +python examples/run_tracking.py +python examples/run_complete_receiver.py +``` + +## Architecture + +The generic acquisition and tracking engines depend on `SignalProfile` and +`CodeProvider`, not E1 constants. Adding E5a/E5b therefore means defining a +profile, modulation replica, and validated code provider; engine interfaces do +not change. + +```text +sample source -> streaming front end -> sample buffer -> PCPS acquisition + | | + +---- tracking manager + +-- E1B channel + +-- E1C channel + +float blocks <-> fixed block boundaries <-> cycle transactions <-> RTL +``` + +The floating algorithms and equations are in [algorithms.md](docs/algorithms.md), +fixed-point assumptions and starting widths in +[fixed_point_plan.md](docs/fixed_point_plan.md), and the two acquisition plus two +tracking hardware options in [rtl_mapping.md](docs/rtl_mapping.md). The +module-level contract is duplicated close to the code in +`src/galileo_rx/rtl_model/architecture.md`. + +Exact phase-gate test and example commands are recorded in +[development_phases.md](docs/development_phases.md). + +## Phase completion record + +1. Profiles, typed configuration, code providers, BOC, generator, and I/O. +2. Streaming front end, FFT PCPS, detector metrics, long integration, plots. +3. Stateful EPL/VEVL tracking, FLL/PLL/DLL, locks, C/N0. +4. Multi-channel manager and separate E1B/E1C handling. +5. Fixed formats, NCO, mixer/correlator, PCPS boundary model, comparison/sweep. +6. Cycle transaction types, scheduler/resource equations, RTL documentation. + +Assumptions and unresolved implementation choices are called out in the linked +documents rather than hidden in constants. diff --git a/configs/acquisition_example.yaml b/configs/acquisition_example.yaml new file mode 100644 index 0000000..ef94b06 --- /dev/null +++ b/configs/acquisition_example.yaml @@ -0,0 +1,31 @@ +signal_profile: GALILEO_E1 +component: E1C +prns: [1, 2, 3] +rf: + sample_format: complex128 + input_is_real_if: false + sampling_frequency_hz: 4092000.0 + intermediate_frequency_hz: 0.0 + sample_bit_width: 8 + sample_endianness: little +acquisition: + doppler_min_hz: -5000.0 + doppler_max_hz: 5000.0 + doppler_step_hz: 250.0 + coherent_integration_ms: 4.0 + noncoherent_accumulations: 2 + detection_threshold: 2.5 + peak_exclusion_chips: 1.0 + zero_padding_mode: none +tracking: + integration_ms: 4.0 + early_late_spacing_chips: 0.25 + very_early_late_spacing_chips: 0.75 + dll_noise_bandwidth_hz: 1.0 + pll_noise_bandwidth_hz: 15.0 + fll_noise_bandwidth_hz: 20.0 + pll_order: 3 + dll_order: 2 + use_fll_assist: true + pull_in_duration_ms: 20.0 + secondary_code_mode: wipeoff diff --git a/configs/e1_default.yaml b/configs/e1_default.yaml new file mode 100644 index 0000000..15c4fd5 --- /dev/null +++ b/configs/e1_default.yaml @@ -0,0 +1,32 @@ +signal_profile: GALILEO_E1 +component: E1C +prns: [1] +rf: + sample_format: complex128 + input_is_real_if: false + sampling_frequency_hz: 16368000.0 + intermediate_frequency_hz: 4092000.0 + sample_bit_width: 8 + sample_endianness: little +acquisition: + doppler_min_hz: -10000.0 + doppler_max_hz: 10000.0 + doppler_step_hz: 250.0 + coherent_integration_ms: 4.0 + noncoherent_accumulations: 5 + detection_threshold: 2.5 + peak_exclusion_chips: 1.0 + fft_length: null + zero_padding_mode: next_power_of_two +tracking: + integration_ms: 4.0 + early_late_spacing_chips: 0.25 + very_early_late_spacing_chips: 0.75 + dll_noise_bandwidth_hz: 1.0 + pll_noise_bandwidth_hz: 15.0 + fll_noise_bandwidth_hz: 20.0 + pll_order: 3 + dll_order: 2 + use_fll_assist: true + pull_in_duration_ms: 500.0 + secondary_code_mode: wipeoff diff --git a/configs/signalsim_detected_format.yaml b/configs/signalsim_detected_format.yaml new file mode 100644 index 0000000..d417c9c --- /dev/null +++ b/configs/signalsim_detected_format.yaml @@ -0,0 +1,44 @@ +simulator: + name: SignalSim + repository: https://github.com/globsky/SignalSim + commit: 80b262113e77c4482ca9f5cbfef9bcada402ed28 + +signal: + constellation: Galileo + band: E1 + components: [E1B, E1C] + component_selection: combined_only + modulation: BOC(1,1)_approximation_of_E1_OS_CBOC + data_pilot_amplitude: 0.7071067811865476 + primary_code_length_chips: 4092 + primary_code_rate_hz: 1023000 + primary_code_period_ms: 4 + navigation_data_present: true + navigation_data_layer: complete_INAV_symbols_with_CRC_convolutional_encoding_and_interleaving + secondary_code_present: true + secondary_code_length_symbols: 25 + +output: + representation: complex_iq + real_if_supported: false + sampling_frequency_hz: 8184000 + center_frequency_hz: 1573374000 + intermediate_frequency_hz: 2046000 + sample_type: int8 + channels: 1 + scalar_components_per_sample: 2 + byte_order: not_applicable_one_byte_scalars + iq_order: IQ + scaling: truncation_toward_zero_of_25_times_AGC_gain_times_complex_amplitude + saturation: [-128, 127] + supported_native_formats: [IQ16, IQ8, IQ4, IQ2] + iq2_status: broken_at_detected_commit_quantizer_does_not_store_output_byte + +conventions: + prn_offset: 0 + code_phase_offset_chips: 0.0 + table_bit_order: MSB_first_1023_bits_per_1024_bit_sector + table_bit_mapping: 0_to_plus_1_1_to_minus_1 + boc_first_half_sign: 1 + doppler_sign: positive_output_carrier_frequency_increase + carrier_wipeoff_sign: -1 diff --git a/configs/signalsim_validation.yaml b/configs/signalsim_validation.yaml new file mode 100644 index 0000000..a25fcaa --- /dev/null +++ b/configs/signalsim_validation.yaml @@ -0,0 +1,41 @@ +mode: quick +vector: + name: high_cn0_single_prn + samples: verification/vectors/signalsim/high_cn0_single_prn/high_cn0_single_prn_iq8.bin + generator_config: verification/vectors/signalsim/high_cn0_single_prn/config.json + sample_format: IQ8 + sampling_frequency_hz: 8184000.0 + intermediate_frequency_hz: 2046000.0 + duration_s: 2.2 + prn: 1 + expected_doppler_hz: 1828.0 + expected_doppler_source: SignalSim_validate_only_summary_rounded_to_integer_hz + expected_code_phase_samples: null + +acquisition: + doppler_min_hz: 1000.0 + doppler_max_hz: 2500.0 + doppler_step_hz: 250.0 + coherent_integration_ms: 4.0 + noncoherent_accumulations: 5 + detection_threshold: 2.5 + zero_padding_mode: none + +tracking: + e1b_integration_ms: 2.0 + e1b_pull_in_ms: 300.0 + e1c_integration_ms: 4.0 + e1c_pull_in_ms: 200.0 + minimum_locked_duration_s: 1.0 + pll_noise_bandwidth_hz: 10.0 + fll_noise_bandwidth_hz: 20.0 + dll_noise_bandwidth_hz: 1.0 + +pass_criteria: + maximum_raw_doppler_error_hz: 250.0 + maximum_tracking_doppler_error_hz: 10.0 + maximum_tracking_doppler_jitter_hz: 5.0 + maximum_dll_rms_chips: 0.15 + minimum_secondary_correlation: 0.9 + maximum_secondary_sign_errors: 0 + minimum_inav_sync_words: 2 diff --git a/configs/tracking_example.yaml b/configs/tracking_example.yaml new file mode 100644 index 0000000..6b1cfce --- /dev/null +++ b/configs/tracking_example.yaml @@ -0,0 +1,22 @@ +signal_profile: GALILEO_E1 +component: E1C +prns: [1] +rf: + sample_format: complex128 + input_is_real_if: false + sampling_frequency_hz: 4092000.0 + intermediate_frequency_hz: 0.0 + sample_bit_width: 8 + sample_endianness: little +tracking: + integration_ms: 4.0 + early_late_spacing_chips: 0.25 + very_early_late_spacing_chips: 0.75 + dll_noise_bandwidth_hz: 1.0 + pll_noise_bandwidth_hz: 15.0 + fll_noise_bandwidth_hz: 20.0 + pll_order: 3 + dll_order: 2 + use_fll_assist: true + pull_in_duration_ms: 100.0 + secondary_code_mode: wipeoff diff --git a/data/galileo_e1_primary_codes/README.md b/data/galileo_e1_primary_codes/README.md new file mode 100644 index 0000000..045056c --- /dev/null +++ b/data/galileo_e1_primary_codes/README.md @@ -0,0 +1,6 @@ +# Galileo E1 primary-code table integration point + +No official sequences are bundled. Install independently verified ICD-derived +tables using the naming and encoding documented by `FileCodeProvider`. The +built-in `SyntheticCodeProvider` is intentionally non-Galileo and test-only. + diff --git a/data/galileo_e1_secondary_codes/README.md b/data/galileo_e1_secondary_codes/README.md new file mode 100644 index 0000000..b3a7766 --- /dev/null +++ b/data/galileo_e1_secondary_codes/README.md @@ -0,0 +1,4 @@ +# Galileo E1 secondary-code table integration point + +No official sequence is fabricated or bundled. Validated tables may be added +here and loaded with `FileCodeProvider`. diff --git a/docs/algorithms.md b/docs/algorithms.md new file mode 100644 index 0000000..170bcbe --- /dev/null +++ b/docs/algorithms.md @@ -0,0 +1,119 @@ +# Algorithms and conventions + +## Signal and downconversion + +The analytic sampled signal uses + +\[ +x[n]=A\,c(\tau_n)b(\tau_n)s_{BOC}(\tau_n) +e^{j(\phi_0+2\pi(f_{IF}+f_D)n/f_s+\pi\dot f_D(n/f_s)^2)}+w[n]. +\] + +The generator defines a positive Doppler as positive complex phase rotation. +Digital downconversion and a candidate Doppler wipeoff therefore use + +\[ +y[n]=x[n]e^{-j2\pi(f_{IF}+f_{bin})n/f_s}. +\] + +The phase-accumulator NCO has modulus \(2^P\), frequency-control word +\(FCW=\operatorname{round}(f_o2^P/f_s)\), and update +\(phase_{n+1}=(phase_n+FCW)\bmod 2^P\). + +## Code and FFT acquisition + +Fractional code phase advances by \(f_c/f_s\) chips per sample and indexes the +chip with `floor(phase) mod code_length`. The BOC(1,1) sine-phased square wave +is +1 for the first half of a chip and -1 for the second half. This convention +is shared by generation, acquisition, and tracking. + +The circular correlation is + +\[ +R_f[k]=\operatorname{IFFT}\{\operatorname{FFT}(y_f[n]) +\operatorname{FFT}(c[n])^*\}[k]. +\] + +For coherent interval \(T_c\), the complex correlator output is retained before +power formation. Noncoherent accumulation is explicitly + +\[ +P_f[k]=\sum_{m=0}^{M-1}|R_{f,m}[k]|^2, +\quad T_{obs}=M T_c. +\] + +Differential combining uses adjacent complex results before magnitude. E1B +hypothesis mode enumerates primary-epoch signs (limited to eight periods to +bound exponential work). E1C search enumerates secondary phase; known-phase +wipeoff uses phase zero at the first observation epoch. Delay results are +reported over one 4 ms primary period even for longer coherent integrations. + +Zero-padding can provide a convenient FFT size or a denser interpolation of a +particular numerical representation, but it does not increase signal +bandwidth, physical information, or fundamental delay resolution. + +## Detection + +After circularly excluding a guard interval around the main peak, the model +computes + +\[ +M_2=P_{max}/P_{second},\qquad M_\mu=P_{max}/\bar P_N, +\] + +plus `(peak-noise_mean)/(sidelobe-noise_mean)` and a CFAR-style +`(peak-noise_median)/noise_std`. The acquisition C/N0 diagnostic is + +\[ +\widehat{C/N_0}=10\log_{10}\left((P_{max}-P_N)/(P_NT_c)\right). +\] + +It is an estimator, not a calibrated RF measurement. Half-chip competitive BOC +neighbors set a side-peak flag. `flag` is the implemented mitigation; an +unambiguous BOC/CBOC strategy plugs into the detector without changing results. +Parabolic interpolation preserves raw Doppler and sample bins. + +## Tracking + +Each component channel owns carrier/code NCO phase, loop states, correlation +history, lock counters, C/N0 history, and state-machine state. Phases advance at +every accepted sample and never reset on Python block boundaries. + +Carrier discriminators are + +\[ +e_{PLL,2}=\tan^{-1}(Q/I),\qquad e_{PLL,4}=\operatorname{atan2}(Q,I) +\] + +in radians. The cross/phase-difference FLL is + +\[ +e_{FLL}=\angle(P_kP_{k-1}^*)/(2\pi T)\quad[Hz]. +\] + +The normalized envelope DLL reports a locally calibrated chip error + +\[ +e_{DLL}=d\frac{|E|-|L|}{|E|+|L|}\quad[chips], +\] + +with power and dot-product alternatives. A BOC false-lock flag compares VEVL +and prompt magnitudes. + +For a second-order filter, noise bandwidth and damping generate + +\[ +\omega_n=\frac{8\zeta B_n}{4\zeta^2+1},\quad +k_p=2\zeta\omega_n,\quad k_i=\omega_n^2. +\] + +The third-order starting model places three repeated stable poles derived from +the same \(\omega_n\): correction +\(3\omega_ne+3\omega_n^2\int e+\omega_n^3\iint e\). These are physical +starting coefficients, not final optimized receiver-loop values. + +Carrier NCO frequency is corrected in hertz; code NCO frequency is nominal code +rate plus DLL correction and optional carrier aiding +\(f_{code,aid}=f_{carrier}f_c/f_{RF}\). Prompt C/N0 uses coherent versus total +prompt moments over a sliding window and divides the ratio by integration time. + diff --git a/docs/configuration.md b/docs/configuration.md new file mode 100644 index 0000000..1d6edd9 --- /dev/null +++ b/docs/configuration.md @@ -0,0 +1,28 @@ +# Configuration + +`ReceiverConfig` owns RF, acquisition, tracking, front-end, and fixed-point +dataclasses. YAML loading is strict: a misspelled field is an error. + +Important validation rules include positive sampling/loop rates, a real IF +strictly below Nyquist, integer sample counts per integration interval, +ordered correlator tap spacing, explicit FFT length when requested, E1B +bit-transition protection beyond 4 ms, and E1C secondary-code handling beyond +4 ms. E1B tracking is conservatively limited to 4 ms until navigation-symbol +synchronization is implemented. + +`intermediate_frequency_hz` may be nonzero for either real or analytic input. +The front end always outputs complex baseband and divides the effective sample +rate by the integer decimation factor. Acquisition/tracking must use that output +rate. + +Acquisition parallelism fields expose future hardware/software scheduling but +do not change numerical results. `zero_padding_mode: none` provides the exact +N-sample circular correlation. A longer FFT changes the sampled numerical +correlation/edge convention; it is not additional physical delay information. + +Default YAML files: + +- `e1_default.yaml`: requested 16.368 MHz nominal defaults. +- `acquisition_example.yaml`: faster 4.092 MHz executable search. +- `tracking_example.yaml`: 4.092 MHz tracking defaults. + diff --git a/docs/development_phases.md b/docs/development_phases.md new file mode 100644 index 0000000..4ef32ee --- /dev/null +++ b/docs/development_phases.md @@ -0,0 +1,50 @@ +# Phase gates and reproducible commands + +The project was implemented in six gates. These are the exact command shapes +used to validate each gate; the final regression reruns their union. + +## Phase 1 + +```bash +python -m pytest tests/unit/test_config.py tests/unit/test_signals.py +python examples/generate_e1_signal.py +``` + +## Phase 2 + +```bash +python -m pytest tests/unit/test_frontend.py tests/unit/test_acquisition_metrics.py tests/unit/test_acquisition_parallelism.py tests/integration/test_acquisition.py tests/integration/test_long_integration.py +python examples/run_acquisition.py +``` + +## Phases 3 and 4 + +```bash +python -m pytest tests/unit/test_discriminators.py tests/unit/test_loop_filters.py tests/unit/test_correlator.py tests/integration/test_tracking.py +python examples/run_tracking.py +python examples/run_complete_receiver.py +``` + +## Phase 5 + +```bash +python -m pytest tests/unit/test_fixed_point.py tests/unit/test_fixed_fft.py tests/integration/test_fixed_acquisition.py tests/regression/test_complete_receiver.py +python -m galileo_rx.cli compare-fixed --config configs/acquisition_example.yaml --input samples.bin +``` + +## Phase 6 and final regression + +```bash +python -m pytest tests/unit/test_rtl_model.py tests/unit/test_vector_export.py +python -m pytest +``` + +The CLI smoke sequence is: + +```bash +python -m galileo_rx.cli generate --config configs/acquisition_example.yaml --duration-ms 60 --prn 1 --output samples.bin +python -m galileo_rx.cli acquire --config configs/acquisition_example.yaml --input samples.bin --output acquisition.json +python -m galileo_rx.cli track --config configs/tracking_example.yaml --input samples.bin --acquisition-result acquisition.json --output tracking.csv +python -m galileo_rx.cli run --config configs/acquisition_example.yaml --input samples.bin +python -m galileo_rx.cli compare-fixed --config configs/acquisition_example.yaml --input samples.bin +``` diff --git a/docs/fixed_point_plan.md b/docs/fixed_point_plan.md new file mode 100644 index 0000000..f7bd64d --- /dev/null +++ b/docs/fixed_point_plan.md @@ -0,0 +1,45 @@ +# Fixed-point plan + +The fixed framework represents signed two's-complement integers with declared +total/fractional widths. Every quantizer selects saturation or wrap and nearest, +truncate, or convergent ties-to-even rounding. Quantizers count overflow and +accumulate RMS/peak quantization error. + +Proposed starting points (not final widths): + +| Stage | Width | Fraction | Policy | +|---|---:|---:|---| +| input sample | 8 | 7 | saturate | +| sine/cosine | 16 | 15 | saturate | +| mixer output | 18 | 15 | saturate | +| FFT input | 18 | 15 | saturate | +| FFT twiddle | 16 | 15 | convergent | +| FFT stage | 20 | 15 | configured scaling | +| correlation product | 36 | 30 | full precision then requantize | +| IFFT output | 28 | 15 | saturate | +| coherent accumulator | 40 | 15 | saturate | +| noncoherent accumulator | unsigned 56 | 20 | saturate | +| carrier phase | unsigned 32 | 0 | natural wrap | +| code phase | unsigned 48 | 32 | natural wrap | +| loop state | 32 | 20 | saturate | +| FCW | signed 32 | 0 | wrap in phase accumulator | +| discriminator | 24 | 18 | saturate | + +`FixedNco` and `FixedCorrelator` are integer bit-true models. Fixed PCPS models +declared quantization at input, normalized FFT output, pointwise product, IFFT +output/power, and accumulation. Exact butterfly-level identity depends on the +chosen streaming FFT IP scaling schedule and is explicitly unresolved until an +RTL FFT architecture is selected. + +`FixedRadix2Fft` supplies a fully stage-quantized power-of-two oracle with +quantized twiddles, convergent butterfly rounding, saturation counters, and one +bit of scaling per stage. It is used for standalone RTL FFT vectors. The +runtime PCPS boundary model remains able to use arbitrary transform lengths; +matching a vendor FFT at those lengths requires configuring that core's exact +schedule. + +The sweep utility varies input/FFT widths and reports mean absolute/relative, +RMS, peak error, acquisition decision, Doppler bin, code phase, and overflows. +Tracking qualification additionally compares convergence, steady-state jitter, +and loss-of-lock decisions; these metrics must become release gates once loop +state formats are frozen. diff --git a/docs/rtl_mapping.md b/docs/rtl_mapping.md new file mode 100644 index 0000000..5cc6158 --- /dev/null +++ b/docs/rtl_mapping.md @@ -0,0 +1,104 @@ +# RTL mapping and architecture tradeoffs + +All streaming datapaths use `data`, `valid`, `ready`, optional `first/last`, +`channel_id`, and sideband metadata. State advances only on `valid && ready`. +Backpressure must propagate or terminate in a sized sample FIFO. Reset clears +valid/state/overflow counters and sets NCO phases to software-programmed start +values; it must not occur between arbitrary host blocks. + +## Acquisition formulas + +Let \(N_s=\operatorname{round}(f_sT_c)\), FFT size \(N\ge N_s\), PRNs \(P\), +Doppler bins \(D\), noncoherent intervals \(M\), Doppler lanes \(L\), FFT +latency/interval \(C_{FFT}\), and clock \(f_{clk}\). + +- observation buffer: \(MN_s\) complex samples; +- transforms per PRN: \(2DM\) when code FFTs are precomputed; +- code FFT store: \(PN\) complex words (or \(N\) for on-demand PRN loading); +- pointwise complex multiplications: \(PDMN\); +- approximate single-engine search cycles: + \(P\lceil D/L\rceil M(2C_{FFT}+N)\); +- acquisition time is those cycles divided by \(f_{clk}\), plus fill and control + overhead. + +### A — buffered FFT PCPS + +One coherent block is buffered. A mixer iterates Doppler bins, a forward FFT is +multiplied by conjugated code FFT memory, the same or a second engine performs +IFFT, magnitude squared accumulates in Doppler/code RAM, and peak search scans +the result. It minimizes mixers/FFT engines/DSPs and maximizes search latency. +Ping-pong buffers hide capture behind search. One FFT engine needs arbitration +and doubles transform serialization; two remove that conflict at extra DSP/BRAM. + +### B — parallel Doppler lanes + +`NUM_DOPPLER_LANES=L` replicates carrier mixers and either feeds batched FFTs or +replicates FFT engines. With one reused FFT, lanes improve mixing but not the FFT +bottleneck. With L FFT/IFFT paths, ideal Doppler latency approaches 1/L while +DSP, twiddle ROM, transpose memory, and noncoherent RAM ports grow roughly with +L. Intermediate choices use L mixers, a smaller number of FFT engines, and +FIFOs. Resource budgets and required reacquisition time select L; neither +architecture is universally preferred. + +## Tracking + +Fully parallel mode instantiates carrier/code NCOs and VE/E/P/L/VL complex +MACs per channel. It provides one-sample-per-clock latency independence and +uses the most DSPs and accumulators. + +Time-multiplexed mode stores phase words, FCWs, five complex accumulators, loop +states, counters, and secondary phase per channel in `channel_state_ram`. +`NUM_CORRELATOR_LANES` engines visit all active channels for every input sample. +The no-loss condition is + +\[ +\left\lceil\frac{NUM\_TRACKING\_CHANNELS}{NUM\_CORRELATOR\_LANES}\right\rceil +C_{channel}\le f_{clk}/f_s. +\] + +If it fails, more lanes, a faster clock, a lower post-decimation sample rate, or +fewer active channels are required. A sample FIFO cannot repair a sustained +rate violation. + +Parameters are `NUM_TRACKING_CHANNELS`, `NUM_CORRELATOR_LANES`, `SAMPLE_WIDTH`, +`NCO_PHASE_WIDTH`, `CODE_PHASE_WIDTH`, `ACCUMULATOR_WIDTH`, and +`MAX_INTEGRATION_SAMPLES`. The Python `TrackingScheduler` evaluates this exact +condition. + +The detailed per-module signal, width, latency, storage, reset, saturation, and +verification contract is in `src/galileo_rx/rtl_model/architecture.md`. + +## SignalSim gate before Acquisition IP / Tracking IP implementation + +The validated external stimulus is complex IQ8 at 8.184 MHz with +2.046 MHz +IF. `validate-signalsim` exports the 20 ms acquisition observation as separate +two's-complement I/Q hex files, a per-sample timestamp CSV, and symbolic +register values under `reports/signalsim_validation/rtl_vectors/`. + +The fixed acquisition boundary model agrees with the float64/complex128 +reference on Doppler bin, code-phase sample, and acquisition decision with zero +overflow. Its normalized correlation-map RMS error is 0.00219 and peak error is +0.01996 for the proposed comparison formats. This is an input/FFT/product/power +boundary result; it does not yet include a selected vendor FFT butterfly shift +schedule. + +Measured requirements feeding the RTL plan are: + +- complex IQ input and `IQ` ordering must be a first-class sample-input mode; +- code ROM import must discard one padding bit per 1024-bit SignalSim E1 table + sector—no unexplained chip offset is permitted; +- acquisition-to-tracking handoff carries IF center separately from Doppler so + code aiding never uses the IF frequency; +- E1B pull-in supports 2 ms dumps and data-insensitive FLL, followed by paired + 4 ms raw-symbol outputs; +- E1C channel state includes secondary phase (measured phase 10 for this + vector) and supports wipeoff before PLL/discriminator processing; +- tracking measurement/APB visibility includes prompt I/Q, carrier/code NCOs, + state, lock metrics, secondary phase, and symbol-valid/data; +- APB addresses are still unassigned. The exported metadata uses symbolic + names and therefore blocks a bus-level RTL run until the register map exists. + +Native real-IF SignalSim stimulus is unavailable, so the real-input DDC path +remains covered only by internal Python vectors. Full CBOC, IQ2, full I/NAV +decoding, nominal/weak C/N0, signed-Doppler, and multi-PRN external regressions +remain gates before claiming broad Galileo/RTL compatibility. diff --git a/docs/signalsim_integration.md b/docs/signalsim_integration.md new file mode 100644 index 0000000..613ebd2 --- /dev/null +++ b/docs/signalsim_integration.md @@ -0,0 +1,241 @@ +# SignalSim integration and measured compatibility + +## Repository identity and immutable baseline + +The detected project is the GNSS simulator by Jun Mo (`globsky/SignalSim`), not +another repository with a similar name. + +| Item | Detected value | +|---|---| +| Local path | `/home/onur/Desktop/galileo/signalsim/SignalSim` | +| Remote | `https://github.com/globsky/SignalSim` | +| Commit | `80b262113e77c4482ca9f5cbfef9bcada402ed28` | +| Branch/status before integration | `main...origin/main`, clean | +| License evidence | No LICENSE/COPYING file; source headers say “All rights reserved”; README identifies some commercially licensed features | + +SignalSim itself was not modified. The receiver parses its code tables from the +external checkout at run time, so the SignalSim commit remains part of the test +vector provenance and its copyrighted tables are not copied into this project. + +The identity commands were: + +```bash +git -C signalsim/SignalSim remote -v +git -C signalsim/SignalSim rev-parse HEAD +git -C signalsim/SignalSim status --short --branch +``` + +## Reproducible build + +```bash +tools/build_signalsim.sh /home/onur/Desktop/galileo/signalsim/SignalSim +ctest --test-dir build/signalsim --output-on-failure +``` + +The build used CMake 3.31.9, GCC 11.4.0, Ninja 1.11.1, C++20, Release mode, +OpenMP, and `USE_NATIVE_OPT=OFF`. It produced `build/signalsim/IFdataGen`. +CTest reported `No tests were found!!!`; the repository does not define +IFdataGen CTest tests at this commit. The documented `-v`/`--version` options do +not print a version and instead fall through to configuration handling. + +## Source-to-sample trace + +The executed Galileo E1 path is: + +```text +JSON output.systemSelect "Galileo"/"E1" + -> IFdataGen frequency selection + -> PrnGenerate(GalileoSystem, SIGNAL_INDEX_E1, SVID) + E1B = E1MemoryCode[(SVID-1)*128] + E1C = E1MemoryCode[(SVID+49)*128] + -> SatelliteSignal + E1B = -I/NAV symbol / sqrt(2) + E1C = 25-symbol pilot sign / sqrt(2) + -> SatIfSignal BOC half-chip sign and carrier rotation + -> complex Gaussian noise + AGC + -> IQ8/IQ16/IQ4/IQ2 quantizer + -> binary file, I before Q +``` + +`GetMemorySequence()` reads four storage sectors per E1 code. Within each +32-word/1024-bit sector it consumes 1023 bits MSB first and discards the last +padding bit. The receiver adapter mirrors that exact behavior. Treating the +table as 4092 contiguous bits was experimentally shown to reduce peak/second +from about 7 to about 1; the sector-aware implementation restores acquisition. + +SignalSim models E1 as equal-amplitude E1B and E1C on the same real baseband +axis. It flips every second 2.046-Mchip/s half-chip, which is BOC(1,1). It does +not synthesize the BOC(6,1) term or full Galileo E1 OS CBOC in this path. E1B +and E1C cannot be selected separately by the JSON/CLI; `E1` always generates +the combined signal. + +Source-inspected Galileo selection (only E1 was generated in this validation): + +| Band selector | Components implemented in open source path | Data layer / pilot overlay | Validation status | +|---|---|---|---| +| E1 | E1B data + E1C pilot, inseparable | I/NAV / common CS25 | Generated and received | +| E5a | data I + pilot Q codes | F/NAV / PRN-specific CS100 | Source inspected only | +| E5b | data I + pilot Q codes | I/NAV / PRN-specific CS100 | Source inspected only | +| E6 | pilot output (data amplitude set to zero) | no open data path / CS100 | Source inspected only | +| E5 AltBOC | Listed as commercially licensed | N/A | Not available/tested | + +### Navigation and secondary data + +E1B is not a fixed or random placeholder bit stream. `INavBit::GetFrameData()` +constructs Galileo I/NAV words from the selected RINEX ephemeris/almanac/UTC +data, adds CRC-24Q, convolutionally encodes, interleaves, inserts the 10-symbol +sync pattern, and emits 500 encoded symbols per 2-second page. Word types above +20 are forced to dummy word 63; reserved/SAR/spare fields include zero-filled +placeholders. Reed-Solomon ephemeris parity words 17–20 are implemented. + +E1C uses a common 25-symbol value held in `PilotBit.cpp` as `0x9b501c`, addressed +LSB first. This work verifies the sequence SignalSim actually emits; it does +not independently certify that constant against a particular Galileo ICD +revision. + +See [the bit-layer report](../reports/signalsim_bit_generation_report.md) for a +stage-by-stage distinction between navigation fields, channel symbols, +spreading chips, and samples. + +## Output formats and controls + +`sampleFreq` and `centerFreq` are configurable JSON values in MHz and are +converted internally to integer kHz. A signal's complex IF is +`RF carrier - centerFreq`; out-of-band signals are disabled. Native output is +complex IQ only—there is no real-only IF binary mode. + +| Format | Exact packing | Quantization at AGC gain `G` | Status | +|---|---|---|---| +| IQ16 | little-endian signed I16, signed Q16 | truncate `3277*G*x`, saturate −32768…32767 | usable | +| IQ8 | signed I8, signed Q8 | truncate `25*G*x`, saturate −128…127 | validated | +| IQ4 | one byte; I high nibble, Q low; sign-magnitude | truncate `3*G*abs(x)`, magnitude saturates at 7 | adapter tested | +| IQ2 | two complex samples/byte, low then high nibble; sign/magnitude | threshold levels | broken in this commit: computed byte is never assigned to output | + +The adapter in `galileo_rx.io.signalsim_reader` validates file length, signed +conversion, byte order, IQ order, offsets, counts, memory mapping, and streaming. +All decoded samples are promoted to `numpy.complex128`; quantized integer widths +remain explicit input boundaries. + +## Generated vector and executable results + +The deterministic vector configuration is +`verification/vectors/signalsim/high_cn0_single_prn/config.json`. It requests +one visible Galileo PRN 1, combined E1B/E1C, 55 dB-Hz configured C/N0, 8.184 +MHz complex IQ8, center 1573.374 MHz (IF +2.046 MHz), static receiver, bundled +RINEX navigation data, and 2.2 seconds duration. + +```bash +build/signalsim/IFdataGen \ + -c verification/vectors/signalsim/high_cn0_single_prn/config.json \ + -o verification/vectors/signalsim/high_cn0_single_prn/high_cn0_single_prn_iq8.bin \ + -t -st + +MPLBACKEND=Agg python -m galileo_rx.cli validate-signalsim \ + --signalsim-path signalsim/SignalSim \ + --config configs/signalsim_validation.yaml \ + --output-dir reports/signalsim_validation \ + --mode quick +``` + +The sample file is 36,009,600 bytes (18,004,800 complex samples) with SHA-256 +`3e72a5ad2d35ee68273b77587a66847b0fb328650b39c9e39272f0dc54e39e3c`. +SignalSim's validation summary reports PRN 1 Doppler `+1828 Hz`; this is rounded +to integer hertz. SignalSim does not emit exact sample-side code-delay truth. + +Measured quick-mode results: + +| Quantity | E1B | E1C | +|---|---:|---:| +| PCPS detected PRN | 1 | 1 | +| Raw Doppler bin | +1750 Hz | +1750 Hz | +| Interpolated Doppler | +1766.36 Hz | +1776.64 Hz | +| Code phase | 18309.410 samples | 18309.256 samples | +| Peak/second metric | 7.511 | 6.903 | +| Final tracking Doppler | +1828.251 Hz | +1828.284 Hz | +| Tracking Doppler jitter | 1.326 Hz RMS | 1.082 Hz RMS | +| DLL error | 0.0963 chips RMS | 0.0849 chips RMS | +| Final state | PLL_TRACK | PLL_TRACK | +| Reacquisition epochs | 0 | 0 | + +E1B uses 2 ms pull-in integrations. A 4 ms BPSK-squared FLL has an unambiguous +range of only ±62.5 Hz, almost exactly the residual between the interpolated +estimate and the +1828 Hz truth. Two milliseconds expands that range to ±125 +Hz, after which the channel converges and 2 ms prompt pairs form one 4 ms +symbol. Two exact I/NAV sync patterns were recovered 250 symbols (one second) +apart after a 300 ms tracking transient. This proves raw symbol recovery and +page-boundary synchronization, not FEC/page/CRC decoding. + +E1C synchronization jointly searched secondary phase and residual carrier +frequency. It found phase 10 and +52.0 Hz residual, correlation 0.9830, and +0/100 sign errors. Wiping the secondary code yielded 13.72 dB of 25-period +coherent gain versus a 4 ms period, and 14.58 dB improvement relative to the +unwiped 25-period sum. + +Full mode adds three generated vectors. The 50 dB-Hz configured nominal vector +passes E1C acquisition (metric 12.49), secondary synchronization (correlation +0.9947, 0/100 errors), and pilot tracking at +1828.672 Hz with 0.817 Hz jitter. +The negative-Doppler PRN 27 vector passes +acquisition at −2750 Hz versus −2637 Hz truth and, after pull-in, tracks at +−2637.776 Hz with 0.531 Hz jitter and 0.0615-chip DLL RMS. Five-PRN acquisition +detects PRNs 1, 4, 19, 21, and 27; every raw Doppler result is within one 250 Hz +bin. The negative channel raised five reacquisition flags during initial pull-in +but none after epoch 500, and finished in `PLL_TRACK`; that transient is retained +in the report rather than hidden. + +Detailed machine results and plots are in +`reports/signalsim_validation/`, with acquisition-only results in +`reports/signalsim_acquisition_report.{json,md}`. + +## Direct answers and limitations + +1. Galileo generation: **yes**. +2. Galileo bands: E1, E5a, E5b, E6; E5 AltBOC is not in the open path. +3. E1B: **yes, only as part of combined E1**. +4. E1C: **yes, only as part of combined E1**. +5. Modulation: BOC(1,1) approximation, not CBOC. +6. Navigation data: complete encoded/interleaved I/NAV symbols are generated, + with the field limitations described above. +7. E1C secondary symbols: **yes**, 25 symbols. +8. Configurable IF: **yes**, through center frequency, kHz granularity. +9. Configurable sample rate: **yes**, kHz granularity. +10. Output: complex IQ only; no native real IF. +11. Binary formats: exact table above; IQ8 is the validated integration format. +12. PCPS acquisition: **pass** for E1B and E1C. +13. Carrier/code tracking: **pass** for E1B and E1C over the available vector. +14. E1B symbols: **raw symbols and sync recovered**; navigation decoder absent. +15. E1C secondary: **phase synchronized and long-coherent gain measured**. +16. Failures: no component-only E1, no CBOC, no real IF, broken IQ2 writer, + no exported exact delay/symbol truth, no receiver I/NAV FEC/page decoder, + and the remaining signal-format/component limitations listed above. + +## Compatibility and RTL readiness + +“Ready” below means the external stimulus, convention adapter, Python golden +result, and automated check exist. It does not claim the RTL IP itself is built. + +| Capability | SignalSim support | Python receiver result | RTL readiness | +|---|---:|---:|---:| +| Galileo E1B generation | Partial (combined E1 only) | Pass | Ready | +| Galileo E1C generation | Partial (combined E1 only) | Pass | Ready | +| Real IF | No | Not tested | Blocked | +| Complex IQ | Yes | Pass | Ready | +| Configurable sample rate | Yes | Pass at 8.184 MHz | Ready | +| Configurable IF | Yes | Pass at +2.046 MHz | Ready | +| PCPS acquisition | N/A | Pass | Ready | +| Carrier tracking | N/A | Pass | Ready | +| Code tracking | N/A | Pass | Ready | +| E1B symbol recovery | Generated | Pass (raw + sync) | Ready | +| Full I/NAV decoding | Generated | Not implemented | Blocked | +| E1C secondary-code synchronization | Generated | Pass | Ready | + +## Regression commands + +```bash +pytest -m signalsim -v +pytest tests/integration/test_signalsim_acquisition.py -v +pytest tests/integration/test_signalsim_tracking.py -v +``` + +`--mode full` additionally regenerates/validates nominal-C/N0 acquisition, +negative-Doppler acquisition and tracking, and five-PRN acquisition. E1B-only +and E1C-only cases remain blocked because SignalSim cannot generate them. diff --git a/examples/generate_e1_signal.py b/examples/generate_e1_signal.py new file mode 100644 index 0000000..c7414d2 --- /dev/null +++ b/examples/generate_e1_signal.py @@ -0,0 +1,16 @@ +"""Generate a deterministic, synthetic (not ICD-code) E1C recording.""" + +from galileo_rx.io.sample_writer import write_samples +from galileo_rx.signal_profiles import galileo_e1_profile +from galileo_rx.signals.code_provider import SyntheticCodeProvider +from galileo_rx.signals.signal_generator import ChannelModelConfig, SatelliteSignalConfig, SyntheticSignalGenerator + +fs = 4.092e6 +generator = SyntheticSignalGenerator( + galileo_e1_profile(), SyntheticCodeProvider(), fs, + satellites=[SatelliteSignalConfig(1, "E1C", code_delay_chips=120.0, doppler_hz=1250.0, cn0_db_hz=48.0)], + channel=ChannelModelConfig(seed=2026), +) +samples, truth = generator.generate(int(0.1 * fs)) +write_samples("e1_synthetic.c128", samples) +print(truth) diff --git a/examples/run_acquisition.py b/examples/run_acquisition.py new file mode 100644 index 0000000..72df3b3 --- /dev/null +++ b/examples/run_acquisition.py @@ -0,0 +1,16 @@ +"""Generate and acquire one synthetic E1C satellite.""" + +from galileo_rx.acquisition.acquisition_manager import AcquisitionManager +from galileo_rx.config import AcquisitionConfig +from galileo_rx.signal_profiles import galileo_e1_profile +from galileo_rx.signals.code_provider import SyntheticCodeProvider +from galileo_rx.signals.signal_generator import ChannelModelConfig, SatelliteSignalConfig, SyntheticSignalGenerator + +fs = 4.092e6 +profile, provider = galileo_e1_profile(), SyntheticCodeProvider() +generator = SyntheticSignalGenerator(profile, provider, fs, satellites=[SatelliteSignalConfig(1, code_delay_chips=120, doppler_hz=1250, cn0_db_hz=48)], channel=ChannelModelConfig(seed=11)) +samples, _ = generator.generate(int(0.008 * fs)) +config = AcquisitionConfig(doppler_min_hz=-2500, doppler_max_hz=2500, noncoherent_accumulations=2, zero_padding_mode="none") +result, _ = AcquisitionManager(profile, provider, fs, config).acquire_one(samples, "E1C", 1) +print(result) + diff --git a/examples/run_complete_receiver.py b/examples/run_complete_receiver.py new file mode 100644 index 0000000..af90695 --- /dev/null +++ b/examples/run_complete_receiver.py @@ -0,0 +1,5 @@ +"""Complete synthetic generate/acquire/track flow.""" + +from run_tracking import measurements, result + +print(f"detected={result.detected}, Doppler={result.doppler_hz:.1f} Hz, epochs={len(measurements)}") diff --git a/examples/run_tracking.py b/examples/run_tracking.py new file mode 100644 index 0000000..d6207e4 --- /dev/null +++ b/examples/run_tracking.py @@ -0,0 +1,19 @@ +"""Acquire then track a synthetic pilot.""" + +from galileo_rx.acquisition.acquisition_manager import AcquisitionManager +from galileo_rx.config import AcquisitionConfig, TrackingConfig +from galileo_rx.signal_profiles import galileo_e1_profile +from galileo_rx.signals.code_provider import SyntheticCodeProvider +from galileo_rx.signals.signal_generator import ChannelModelConfig, SatelliteSignalConfig, SyntheticSignalGenerator +from galileo_rx.tracking.tracking_channel import TrackingChannel + +fs = 4.092e6 +profile, provider = galileo_e1_profile(), SyntheticCodeProvider() +generator = SyntheticSignalGenerator(profile, provider, fs, satellites=[SatelliteSignalConfig(1, code_delay_chips=40, doppler_hz=750, cn0_db_hz=50)], channel=ChannelModelConfig(seed=5)) +samples, _ = generator.generate(int(0.12 * fs)) +acq_config = AcquisitionConfig(doppler_min_hz=-2000, doppler_max_hz=2000, noncoherent_accumulations=2, zero_padding_mode="none") +result, _ = AcquisitionManager(profile, provider, fs, acq_config).acquire_one(samples, "E1C", 1) +channel = TrackingChannel(profile, provider, fs, TrackingConfig(secondary_code_mode="wipeoff", pull_in_duration_ms=20), result) +measurements = channel.process(samples) +print(measurements[-1]) + diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..66d1d63 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,25 @@ +[build-system] +requires = ["setuptools>=68", "wheel"] +build-backend = "setuptools.build_meta" + +[project] +name = "galileo-receiver" +version = "0.1.0" +description = "Profile-driven Galileo receiver baseband reference and bit-true models" +readme = "README.md" +requires-python = ">=3.11" +dependencies = ["numpy>=1.24", "scipy>=1.10", "PyYAML>=6.0", "matplotlib>=3.7"] + +[project.optional-dependencies] +test = ["pytest>=7.4", "pytest-cov>=4.1"] + +[project.scripts] +galileo-rx = "galileo_rx.cli:main" + +[tool.setuptools.packages.find] +where = ["src"] + +[tool.pytest.ini_options] +testpaths = ["tests"] +addopts = "-q" +markers = ["signalsim: requires the external local SignalSim checkout and/or generated vectors"] diff --git a/reports/signalsim_acquisition_report.json b/reports/signalsim_acquisition_report.json new file mode 100644 index 0000000..818da72 --- /dev/null +++ b/reports/signalsim_acquisition_report.json @@ -0,0 +1,103 @@ +{ + "simulator": { + "name": "SignalSim", + "path": "/home/onur/Desktop/galileo/signalsim/SignalSim", + "remote": "https://github.com/globsky/SignalSim", + "commit": "80b262113e77c4482ca9f5cbfef9bcada402ed28", + "git_status": "## main...origin/main" + }, + "vector": { + "name": "high_cn0_single_prn", + "samples": "verification/vectors/signalsim/high_cn0_single_prn/high_cn0_single_prn_iq8.bin", + "generator_config": "verification/vectors/signalsim/high_cn0_single_prn/config.json", + "sample_format": "IQ8", + "sampling_frequency_hz": 8184000.0, + "intermediate_frequency_hz": 2046000.0, + "duration_s": 2.2, + "prn": 1, + "expected_doppler_hz": 1828.0, + "expected_doppler_source": "SignalSim_validate_only_summary_rounded_to_integer_hz", + "expected_code_phase_samples": null, + "path": "/home/onur/Desktop/galileo/verification/vectors/signalsim/high_cn0_single_prn/high_cn0_single_prn_iq8.bin", + "size_bytes": 36009600, + "complex_sample_count": 18004800, + "sha256": "3e72a5ad2d35ee68273b77587a66847b0fb328650b39c9e39272f0dc54e39e3c", + "internal_dtype": "complex128" + }, + "acquisition": { + "E1B": { + "detected": true, + "prn": 1, + "component": "E1B", + "code_phase_samples": 18309.41036755577, + "code_phase_chips": 2288.6762959444713, + "doppler_hz": 1766.3593126265423, + "carrier_frequency_hz": 2047766.3593126265, + "peak_power": 5441370632.908489, + "second_peak_power": 724471887.0812238, + "detection_metric": 7.510809915386589, + "estimated_cn0_db_hz": 38.1685032317465, + "coherent_integration_ms": 4.0, + "noncoherent_accumulations": 5, + "raw_code_phase_samples": 18309, + "raw_doppler_hz": 1750.0, + "metrics": { + "peak_to_second": 7.510809915386589, + "peak_to_mean": 27.236766759293843, + "peak_to_sidelobe": 9.98985090978008, + "cfar": 59.10585279263198, + "noise_mean": 199780344.01061067, + "noise_median": 186242777.1487124, + "noise_std": 88910448.07689284, + "second_peak": 724471887.0812238 + }, + "side_peak_suspected": false, + "expected_prn": 1, + "expected_doppler_hz": 1828.0, + "raw_doppler_error_hz": -78.0, + "interpolated_doppler_error_hz": -61.640687373457695, + "expected_code_phase_samples": null, + "code_phase_error_samples": null, + "processing_time_s": 0.06212109600164695, + "overflow_count": 0 + }, + "E1C": { + "detected": true, + "prn": 1, + "component": "E1C", + "code_phase_samples": 18309.255563640225, + "code_phase_chips": 2288.656945455028, + "doppler_hz": 1776.6435168702901, + "carrier_frequency_hz": 2047776.6435168702, + "peak_power": 5496116005.536917, + "second_peak_power": 796144387.0872731, + "detection_metric": 6.90341613239865, + "estimated_cn0_db_hz": 38.21910556645223, + "coherent_integration_ms": 4.0, + "noncoherent_accumulations": 5, + "raw_code_phase_samples": 18309, + "raw_doppler_hz": 1750.0, + "metrics": { + "peak_to_second": 6.90341613239865, + "peak_to_mean": 27.54425543885342, + "peak_to_sidelobe": 8.877838662393293, + "cfar": 59.373205541870576, + "noise_mean": 199537650.1549647, + "noise_median": 185090556.71506774, + "noise_std": 89451553.10970132, + "second_peak": 796144387.0872731 + }, + "side_peak_suspected": false, + "expected_prn": 1, + "expected_doppler_hz": 1828.0, + "raw_doppler_error_hz": -78.0, + "interpolated_doppler_error_hz": -51.356483129709886, + "expected_code_phase_samples": null, + "code_phase_error_samples": null, + "processing_time_s": 0.052345254000101704, + "overflow_count": 0 + } + }, + "pass": true, + "truth_limitations": "SignalSim CLI logs rounded Doppler but does not export exact code delay" +} diff --git a/reports/signalsim_acquisition_report.md b/reports/signalsim_acquisition_report.md new file mode 100644 index 0000000..3dbe11d --- /dev/null +++ b/reports/signalsim_acquisition_report.md @@ -0,0 +1,8 @@ +# SignalSim acquisition report + +| Component | Detected | Raw Doppler (Hz) | Truth (Hz) | Code phase (samples) | Peak/second | +|---|---:|---:|---:|---:|---:| +| E1B | True | 1750.0 | 1828.0 | 18309.410 | 7.511 | +| E1C | True | 1750.0 | 1828.0 | 18309.256 | 6.903 | + +SignalSim does not export exact code-delay truth. Agreement between independently acquired E1B and E1C code phases is used as a cross-component consistency check; no code-phase error is fabricated. diff --git a/reports/signalsim_bit_generation_report.md b/reports/signalsim_bit_generation_report.md new file mode 100644 index 0000000..d8a0e91 --- /dev/null +++ b/reports/signalsim_bit_generation_report.md @@ -0,0 +1,34 @@ +# SignalSim Galileo E1 bit-generation trace + +Inspected project: `globsky/SignalSim`, commit +`80b262113e77c4482ca9f5cbfef9bcada402ed28`. + +| Layer | E1B status | E1C status | Evidence/qualification | +|---|---|---|---| +| Navigation fields | Generated from RINEX ephemeris, almanac, UTC/iono | N/A pilot | `INavBit::GetWordData`, setters called by IFdataGen | +| Navigation page | 500-symbol, 2-second I/NAV page | N/A | `INavBit::GetFrameData` | +| CRC | CRC-24Q over 196 bits | N/A | `Crc24qEncode` | +| Channel encoding | Galileo convolutional encoder with tail bits | N/A | `GalConvolutionEncode` | +| Interleaving | 8 by 30 traversal for both page halves | N/A | final loops in `GetFrameData` | +| Sync | 10 symbols `0101100000` before each 240-symbol half | N/A | `SyncPattern` | +| Symbols | One encoded E1B symbol per 4 ms | 25-symbol overlay sequence | `SignalAttributes[9]`; `SecondaryCodeE1` | +| Spreading | 4092-chip E1B memory code | 4092-chip E1C memory code | `E1MemoryCode`, `GetMemorySequence` | +| Modulation | BOC(1,1), amplitude `-DataBit/sqrt(2)` | BOC(1,1), amplitude `PilotBit/sqrt(2)` | `SatelliteSignal.cpp`, `SatIfSignal.cpp` | +| IF samples | Combined complex IQ at RF-center offset | Combined complex IQ | IFdataGen quantizer/output path | + +The I/NAV stream is not random dummy data. It includes CRC, convolutional +encoding, interleaving, sync, page timing, TOW/WN fields where applicable, and +ephemeris/almanac content. Limitations are also explicit: unsupported word types +above 20 become dummy word 63, and reserved/SAR/spare content includes fixed +zero placeholders. + +Receiver-side evidence recovered 469 raw E1B symbols after the tracking +transient and found two exact `0101100000` sync words 250 symbols apart with +zero errors over the 20 known sync symbols. Receiver-side deinterleaving, FEC +decoding, page parsing, and CRC validation are not implemented, so this result +must not be described as decoded navigation bits or decoded I/NAV pages. + +E1C evidence found secondary phase 10, normalized correlation 0.9830, and zero +sign errors over 100 primary-code periods. The implemented 25-symbol constant +was verified against generated samples but was not independently certified +against an external ICD table in this work. diff --git a/reports/signalsim_e1b_symbol_comparison.json b/reports/signalsim_e1b_symbol_comparison.json new file mode 100644 index 0000000..2c34245 --- /dev/null +++ b/reports/signalsim_e1b_symbol_comparison.json @@ -0,0 +1,27 @@ +{ + "status": "raw_symbols_recovered_page_decoding_not_implemented", + "comparison_scope": "known_10_symbol_INAV_sync_words_only", + "recovered_symbols": 469, + "compared_symbols": 20, + "initial_ignored_tracking_epochs": 150, + "initial_ignored_time_s": 0.3, + "bounded_alignment": "code boundary from PCPS; sync search within remaining 1.876 s", + "sync_matches": [ + { + "symbol_index": 190, + "sign_inverted": false, + "errors": 0 + }, + { + "symbol_index": 440, + "sign_inverted": false, + "errors": 0 + } + ], + "symbol_errors": 0, + "symbol_error_rate": 0.0, + "median_soft_symbol_magnitude": 43846.682818616624, + "frame_or_page_sync": true, + "fec_decoding": "not_implemented", + "crc_validation": "not_implemented" +} diff --git a/reports/signalsim_validation/acquisition_map_e1b.png b/reports/signalsim_validation/acquisition_map_e1b.png new file mode 100644 index 0000000000000000000000000000000000000000..d80b1f9fdfecd7dc2bbccb97b9d05999f8cfeae7 GIT binary patch literal 57085 zcmce;byQVR`!2c>q(NG`OS+_6I;Fc?>245^Zb?D9q@)A{1SBOSrID19PHE0ue!uUI zGw!)#od5103}v(T+H21F#`8Y!^RB3uDzX@;#HcVB3`1T{N*xA+$A-Zk`5_~MSF(dh z55PZy?$WyM8cx>kUS_UVFl94$XL~1idpmPVPb*h9J10kOHcn194i-vVcXwwuL3VbB z|K}ZSPOdiWsr|)H;3_E2a(Zqs7=9%51J^Sno(F?1*~v>uXnJSweelY_>z(dfo-;BX zkVpladgB$@wOjx=apl z_HlY!>)l=LFh{;$$qOwnt-m*ZId6Yu{wdceRrxSD#o5h)jwOjq6^11lseBSb5d5EC z3Z9Zm{m;v!-y{&AKOhCCVfgU>zl^1T4CV$bU!09%e_# zU~k{P-JU2$d(Y<-4;H`nspG!u_UiO_Gs~&K@9zQsc3$YCv}u#Bk}O__`IWN5_`2Kn zni`Jv`nh_W^)FjF@Gzd&)99^-?LzH$7Y3?3jB+fJ)pZ!f`BUKT6h%O02X zf3@hxyuH6U%;2;@47|UxIr}q(mg|3l5-+fsQ8}8Ln!1`GcHbFG#9iaQqn;gjz2p7& zm)CfyYHp?7!}abb@71?YIZQiY{jLU7lFMOO)bN~QoOY?F@t50}1T^dM+p;tN`E^0)t8{Rzt8+HF zy`24|q0sWqXH5D9wz6qxe?2w!hD$eeMG3q;mTfy75rVe6(7S5w9&Gg3S3j>xgC!?sXh1NmNuOSaRMMAOwq zF`3*p=3q-^ft`(geyyWfrT_eOJFxV((lG?9;IJjl%&0K=S71XTC)(d9lzs1^FA;Ft zG@UF_ww)}&z!ci6NjW0nbL;_Mb^LcZsL*OCjejkY#&G|Wm*UpQhw(3NHqTs4{EvH^ z58H2!hS)nym)d-)5wWdFy;t5e?>8o?I=_|Xi%WRsWj;z7q_yR zEw4|Bi=YT3)F@H<27Hbi^GV0u#X|F1G;<9&(;gdO)Xl)()QpYe4V=E>ryKj)^--=> zw;pso5xWhJ!ev+kU(*NnB)qP!uII1cUMCCeT9oDOgmEU)DNzP@;}nCR%}p1($|p1siS%fu0{zCj}I{N=SA z_alpsq1|brkyZ5e=tZ$Mf7{DK84OseFTntK2QrKU9sc!nW$p7w7}Gh4&94@ZG%J&r zFN0eTTF|yWc#$7`{cC)7xJ>c+)zk?KA5~Zx>L+iyFk0v!VVWbJL1*K#U2AvSg$ZMy zOvEaUS_$HapLb>2vX?MM2j7chT*MxDSOFwuL ztMIQPXjW)rfWXiRZZVTnZXyX73+Cz8C=!g+r3YJb-MG8e^NUikj`2wapxMfh0C{a}#@ z3YOCqY*mcx?ER@a#!=DHsM-D}1Kz+A)xgSOooTEF&i7Ya7F}T|0_&M#L89b=mu7}R zcjqVq1nkDKBOin;K=_5;@6wB}QzYy*_^fp0{p;#)-;gM>Pp*I&yIk*-TJ*&dH9y?n z9D`HYP%;U3OxA05rpgJtwlfU8+K3um^4(?4_Sww5yj)M<^f|FybRA-C2B(0tkiI#b z8Cq@Bx(58B7kCz#R~z{9nMxb#;l}hRN|9ed_g6^Jc2#_8k0ulHG+pU@vpxU0qUKCN zQSo>s^vNUG#iHA2cIX>^5Dj`kP=#q$8%}-HV0eA0%My-FBeRmCq4Mp;6Opir>K4@V z-I>4i!oY|WI-6c#OX97A?c~#Mw9j;zvbwuIk82OOA^y~UU9P6BZGBxi_q^mCy)qY! z5JWBRdk}nMZL~ibJNztD>xP*c`tB4HEmQa(eM5w;H%zKWHTpJ-*;v{%^&22oAOM9!@LJs__zl*{!{{a;P+nrXdkeKU~u|$qC)3CHQr)SL&+Egu>4ti`NT-2=Rhk_8H{#7|B9IR}S^#_MfV z-S_A5>FDUZf%6?r8#v_yD{teV!dM!SLU!o^h$x}0O<|_id9^Ehb)DVv2Anf%H?SuP z^DxD=pobd@0#^Mn083Z;DS~yWyyUIPB(va1K*1Wx3pZ{7#B_iS!{e+ zS(%(61M#xLyEsfTK^Uw=<-_|r1Tq_tH!eXc>_tU^stFj=sCvWe8MgHs;2&`=4x-s8_!fg6?#e*nU_F}SuuD*DDHBf`1x~E(_GAdfk2b7%tLUAI!s3BVIxr%$ z+sk8c=lloF>zHlVe=43G&PSaBhkz3w#PETQm8sF(EBj)xrEM?H%~iWi$TQ>vETh}%$$9{AcI@F{>!E0+{^!B3V+1{))*&dZ zVXT6rx#>2RClSB)E}tZMFrG}v8I&pTuvb&%R)UwOSpev*0uw`op;L%1j(3&>++6U3 z+z8@|mQy6F9-#m@?zC%_IR|K5SJV1Q8An`3k2 zLk!5o>%a-c0lKL%{r0HsWRUs$=%}o*an3%gGM76p&zB`!IG9b2kM-ct+~DA#x-sS@ zFk1LB|1DWp!?`8Sq?`jN*lpzot%21jZ6Bo>IM#Y-_dNky9S+<8TkP%(w=aPrA@J^c zF7N`FP+yi)duGOldo*$YE{-%|m7-g86xQuzH)(K49^&(4RVP zPZZ6q*7HI!yB5E=9e2V%Ss7r+Rceq`OlRwbN<#6$u=EjUEKqli)mbS5OT!dDpgU6rmUg-FZNs4nkr*elE)|gs7>{B?Ioe)2volwH~|L=!6`U zG>agHorHH-g}^@_fcxg($%;q7H`XDzOk|Ut#D9|< z1CkX9R1f6@T>!+}l@`~!N zW|#G&pBk!WAdf4^?$3nNoIq?j)%Z(0GPZ1ZmxMX#l&MjizVWB(F1a5 z)EjuDN3$NtLYb2)LKvWUuWMU#2dTHOINdnKL-)kdPXAQ~@0ExwcU4JNO3GJAecr0r%fJ=D&@u1A_0w94K$WX)D<*9JZaR+=61EOrsPN@H5S@ zBAPHP9A08x`$&-MtbY;PHHH{9IsQu7R~7Qyle0GyxtO)+MJwlos=lIA0E;X@f!7WB zUnr&^GJxjYU@!mGiXiF2f)^ZHmA5mIC6TGdHy{g9Wd9llZix&SgmK?rP|6O?8efB) zwH}76B6n+~tsVZl`U|3B8jA!(_JF#0$8{H>i5pw8sNQp5pVW6d{}Lovu6AZd#!gU2 zahmr;%C)6t0!B>8*#B61IE(KIjKgk%7BW_w+yGDWRKLz(xTsSFaF-;YZVyXN#vyg? zgxdzCBcPu`H-^&Jq5Qbk8^hfw31BrEShftPo|DqkBc5rLnC?szmw^!34k8IDfY$dm z`eyu*lwp@$Af!VZzE+wW*ago1?d`2UKrN#D0ONgb#!SVMl&gV?ABZer?a1YKp$3+j zdU*p(pi}y(QOa>(1SkgpU?6_DI}94Hvl{Bzviaaa00Lg_iD(7@Zn3s(0==$ zb;b(*F^!frmIF9HKbcUVJ!M1J$AjXR%Uy*%^c|oixK2(RbjHeO?CtHq;vmrWnthb`jKPVRu3wG4x$AzO7jJH8u}T zkbGC~vUDPwQ)6@e+vigs<;f?yGj|5d4b|IKHN0DLEI6~QlIa{Y^ppoVGVOiqugUFJ z7Y$Dn^RvP_38FHEb90*T@(~i*;y?J)pQLJ*SdV7SBPNUT47}hy*PUzDy4p~8tFHTT zk^Oi;`;oT+zi!>y{l1K;|`OmL^27du_vNU6GifNLR@j%Kwe!d~pPnu_+gfk^A= z=tQ)+P}g-=o6qUdWJ0}*>B1}Z$t$~WydRHu5s<(x&lvleE$G8X%m@;RqXTqwOHEMW zZoRP~ZoE|8G5L^y+mXi7$Q^&{pI6|Y9xCSg4Ie)> zmo6e|-``PouKK8U7X0X18K0bLtV>j?hw~5k42~`n^_30Fx{|N2u5rR7rcewga(<&E!J0EwfcWfQrR<}`~6KR$gaP5tZuDSFJ!ClE; zu`?@96`Sq7VnHuFX&wB|eCk9fbe>%#q@ic=v98wx7v9{*hhvc0^X+3ME3UPTdhUD6 zuYDfx3^#Wg4a_X(#eFj@$#gU=|L~I2XS&~QZfMP$)+r76%5`+I3B>AsReTV+52{n9 zoyj`8?GYP|nK_R(;>|Vo!Vwg=YW{tVKO=vV$90wYyDp9{)vNB4{HRIY2+l@|{jQ9a z;lOCd)CbGEeh0cV0{W}DGn?cMg$u=D_% zCDrP>46jvg(yzs+xD-2x{@}&CUDdiDn_GtpLitaMu3_~jaWhdT(Mo!2%e?_Ibsy=P zPECTHjV zrr;JSNjH-;k>6Jp{?(iixsaV{)RX%bE`=oH>&A;>PbJdXMq+FKnuwn~@%%oSKQBE( z{u?hu5YaXBsJ+A!?0Q_0Vi1IN0nG_Hw+jN42*Cg37#aC~S4$-tIn#ywr;D(LTrKsV z|Lt?aG@DyCNA-w>an(@%=K}z{uPFSd%YXuR;$#!@I~DW8e_sK82g4}Jf6-&!f>7M& zI);_5NP=nge?IWP{W)L!VqeMf>3`oH#t%_P(AP@&p%XHu-{&A#yZ8Kmd~SYyhNMEC z?*IH8E#CJ)RfM_6|L1Lv=L~XVpG;Dw{%=c!YLI_l7r)|3|1Y%Spjvj=$M603HlT?3 zKRaTZ0GDTYB8e~~;Q0;k6#qULNdvL<&?O|_>@gb;ur=sMU4jbiAI5}gQ?m%N@WOaO z)ESc?5x{BK?p{IErkTRjueSeR(Z^v5wXDp6i{MJat$X^z2IL#B#hT(@d%r%&|!D~^Aknv{*tEs`VTY2 zy%3Fp%r@h_7R7J`Ac@69k$lN7($(( z2rjp}<+dK~1X$PQWPpJI5y1r!lN1?t`TL!!VFbg!L!f1`t;aC~)YxO|;fyyRi|3b> zF|OYL@?ae_MrsV-MB<8N|H^+65qo$sXF~y?DZ>V=Y4Ygbho#u+MuBtLibXd6UGh5y zmBT7v$0R_}q~31O;{FUOy@Ua)YYUnV)85fBF>o;D_dJ|;?Er-9ws}KTKvHh*A%7db zH9Q3@gU^ZlL`|e(_}{g|5Z+9OMgrCn(`(TMsk-e%!O(NgifGvcFryHjXZ!LyIoky^ zaNvTiBE;IY$}20;0o4)Tjr(t_e72p1CIRj^>V6`Y5tt58Feu>1El}_C_bJVXGdP=% z`$$}_HqzIl7;?T}-UGJw+u6<}w1m0nPXLRP_8vDICev1%K4PeIyhQB4DMGy z8GmnWtpkEo{>r~M8Xp!6K9^_x<2@mtBPpiH*-L}=oWR0Ofkl8mi1HeD=_(53 zE|F5PgiPoIHq;2c%K(MMR$TzD6CbC^#P)e4$fuoJI!12+SR;n$4L}cD5P1Tw0kkW7 zL03(=BcY?)3|tKs%x2UAEAy{72XuZ~-QyjINI~zG3vb4IsikP|aq0z~ErG3@SaUVs|OWlb{g*>jcFTw0U%nI`a@f z@4=Q`ff{QbGe!|0EWnouulVm)H9dl{HLrw7-KuoU5*wE*Ayc*HsnSZJ9&=-J1?dKO z<%56#Xs-~yC2x2@cwK@v!x10@t-`*55P=hlP*EiXC}pIVU&uZJO5xdZ9JvTF)Bwxz zUPFl`;lsor;q6JLQ#2(+ygz)nf6`Cpm0fxiR)%83k3yxF7egt<59qaTpu~f`9HKr! zRFEB`7Ldu3kh{Y`;DGUSo#5cv+483rz$2fX87l?p0tZ%kFvPMIN_ zE}kZwp<8aHIZ#;4gtfX<8Ac_x4)lp{RO41KUstgW%WoCLu!R5|k&P*K>nse&K8Pcg zj@&_;N2gW+BtW(e`ouD+Lmw!;-T;P`7$9`syL+(mKCpk0;E?kh8t_>48^q1b@~!+; zx^dS~JwxO(IP+weW$1`@aFNH~0~0a>b-c8T3n$d#9L^CTk);UWfdUUiFWDa3=l`HA z07OGnm7Foup?m-QbsD!}b^4?a#wX!447^g0UNfBpJzq8^k5`q>3lcx6oM`cl5aH8) zm%r1u8G%>((IgO_&dagA$$cih)4i`0nGg2AQHONG4sep->r=Tn+W}ZNbRD3}0L8#R zBI z7UiwUA4vHX_o+MLenCt&RdD&pnK;6f8>Zp zMi~$yYtXg}{=lGo?O;AOFNYk34jhqxr|6wCsJS1rM%(a5j-^({6<&PB^pPspz^3Hs z*bCDai?(Jf)g{*vjf*w8mF^qIn0k+sYKao9i_SsH*u|mLcr~YtHos%IwUFs9wLi%q zg?>>N{HPq0G&>DVB%OF$9W#F8C!K{TZlwOL+|N)8&8gD&R7%rDk#+b9TE5n~ zyP6yB$*Gr!I@EF;V^r9ZkGi|yuJ+RxhtE)x#*fCnG=4EJoD}cIG#gUoqH4twKVQh~ zLU>;Fn4n4~k|_X{I^HlthEdSCK-8>~mJ1_eE1Siom99sAQPL?LwOqK%+u>t$BN_c2 zj?t<@*z{ObqNOX3JC~5eCJOaYU%FPC^s`lQXz5$u5Xfd3w2l3X|_as>Gk%+AS+boZ_Gh;HqkxhwkcdHDTAqxzIylCrxUy-ZYV`IO0pabXN76 zZE{eKQf}}2s>ec2o-OjsqvW{g_(JM;kz&V%ejxZIg$~J#xjVx14OMg1=Aa={>s?`{FDa~?~ zj-`Z#IQMkiOqvNnnv_Kk&-Ow~#puS2r<}x!)adtc4@a=;ixWTUGpz(?0I$`PTz8RP zXKVAbxoMFYXD!fF7X1Ahy0zj-o(z9668gqhbww9H#AC}ECp<8MAKC!w(os3FT3sp* zmv1@)edZV8H|-62ROgjMxK21WovF>#Y7skjS!JRz`wH#$Ru(vBT~4$j3>A?coFqbl z8tH8?)cNM2=&fG1db%x5JRyhj+S7hd<0&Ruc+Q=}s1=e5uWzZ5FO#}!eqc5UcrTLG z8L+&I4`ZMm%6jfgrvDda*YV0-(ka^Ls;o@eUT*Cz3*&gc2!9} z9)`Y}Z0qX9cf8$>X+?|NPRY%KEra1qt`*ZIYYgQ{MAxRrT49H6|`0O%2I3(Ha8lPDBq=%|%{A{#J*K2Asv^6Vv$yd+ETj-@| z$TBWe+F(5J(!?2_^Xf2aO#De8sQP|I3b9ipys(v6QxM#VDvMcL+mNx`J(LwpcBxn7 zcy(@!5}WcMCA)j&qmgy=5fedgDy#v8i;L2Bh>i*s1d9#qhP`Uvj)4(n4bSTA`VGU! zj5Jo8?xoJ{_T$MsBD)K$vZ6}enPdrAsg~0VM#I%~r}Z{YRwRQgCIXbzLiih=8aYfG zy;uy5&Vh@3Wji(4`Vm{*S_;}P^X z?B)f26LD~DpcQ_|irbOuv)LuWk5za~low058azn*sxviGu3)@MYM_iKQx+kyg2M>U zd&F<0zIPy8PchrDF#9?An+lh~Yo^B~)2Tnv=A`xE>^2FQN2QM9rl6gf%I{W|eA(-< zu=6tS4nKkMgFfTbfW32KV@|DezPUsNqsAg-Le%{f7K(cYax zW6cjq0aNH1Wq^%{6lmw;8C3a&ZBFsNmQa(hrk>@lJH9%gHsUN)6O|-*rpc*QVRHHR zqI!Nz9#t?iwxET+s(+bqfsGw^wdWaDhed9=Da~rr!{kl?A=7tpdmQm!C%&BNcuCKB z=Iupwr@U^Z$kWh{DXOKmgPr)c7{k`yiI4Y`zr^a}EEciC`Hbfxzxq8s&WJQ^*9ePoA4@zl@GiFat^zUN0-wNcw@m3wLmMbNP zODaU^{bHn@=)Q6;Rwg8?)8yuyxYx-%t0-~!p3NF-@%7r!L~Gl~a#wc&MHZnTSOoUb z>W3@Cqg4ed&Dsq)`;kDoOxh%#Q)+)t1$*~)R8!ert_5)&7dII;D|GDUyDKAt=+q!A zgC}m*V)Bf1_C0LTsSYcbMNb^|y4g5W6muz_e3&roPDQ3Bf`7w@{^d_ARuH9N!ko1Q zzME-dUG>D2;``!fRc*?HJ(Eg;Lcs^ewXsIUJG7NjLNBL#5Rf;g5bR@C`cZkKPz|GA zW}eZ>k?l6CbDMF6MeRq=%Wy2XT(_`FW~@P{UMSk^?RjTIX?s0t9B(30llPS7c*(LS^J;CQq<%chk>1_F(av8 zt#EQ;xY!b(^?};tgY$m9Wmelz#i60aag9|r@9!AB`&Ej9=z$n=P033=f*&WjA=E$8 zMwosQR|M?IFPBeQIdowOZ)q?>Q@>S<=@SzA~5S) zlO$yVQt(SR`L&`no?Bx$?YV1xIop0Ir+P5zs89U)DfQ8O(QE*3wYHkpkd`nfrL`QB z`P961DM-3kBG|sWvMh#C$aHpy2R-A+9tsns)6cu@6QUKGU1HfzR;C}Ug`W;7E!iy& zetv9?M5BadB^dZyjFBuxPDelJ*9$n*XMUfC@H|s03^z~{FITN-Hb%2oMc%r644QgR zSHJ@j50QarmwX}RtY6vhSgyL#PWzZg)MasGS(?&OA-f4obA#fg_-b_cWr*4r#g)J0 z#Thi{8$Sx;ep|@A1?*T7Rr{G;sm3PPJsz#LImJ6_Vr<1*8Y<(C@wUuC--?t}$$H_! zSV4Q@P=~B2tGh|7qUcqx)i27bI(LHNnZ8n808+SjR!Z=;nopdSr2Kv$^G)<7_Ovc- z<7Y7O_j(^vG}_$zd&K=2XUt|37MozM8hxbTvwa2qEPP(XPAp%>F43fnUa$O8%db7A zlQP1L8iR421*1j1EP*%&}*=`MsN5?WlntY~esEk!jTNmhI4A? z4dYJV=85UZoQ9b8J0(jw)#+fjQ%}~Gtcc{Wn9?i{PyN|_xckIPMLKPPJIcIR8Of$^ zW|W)VnURd2pU(lbd?43kl}lDN$6JNRbJ1xmt?HAb5}TMESx!F~yPS&EMMB)_EGfqX z4k!A%5_WNc61?L(DQr7U;}UbhM5AJ^=-)RyJhj}4QbdU|9&EN{BZ@FU!q}O-lOnh&{=y)JUK|GapE% zE6Jq*3c5=m{(#8ce9&mF?gHGU`C_vRBxDCVoPT{!nDcgiL;>I{o`{@bK_XSZ!>==1 z-d3iqc$JvcA0L9b$ihB7@kiuyhLcnpB$><>d+*&NcQuNWk4CfecgGqTpRKF8>~~pn zSDH@&6JTzEdh^HGX-LQ;Ad!6xgEZYUtB~x$exVTq$gy0_#j&=cnX6$hzeo={c;j$x zcjE`Y71yLMBJ=))?3Y>p=vqr0K~eG#IRk=PK1$( z$(1Y+NXlTrK&oRYTo0JcLclKQHaq9<9&sUmd@?KF?DmvtTP=#iR_WEs*hBeRHLfe+ zeOB`F4&83{R5(Hy??PrJB>d$Jy7w0bDpas1;k!qGNJ4_~I4;hfeE~$c8BiB9GBdxB zka)9xq^*nL4=FtSHAgdZU$V>F&_(;C1yAxJ;Nobd;}Te=eK-;AdV4%E{kbrtiQy`I zni(6AP&^QyicZXf3?zgfOOG}-HekVR!fvTONRN)40W&1I#_xV4@qEp**V1nT`(mQ# z1^!{kc`BBfZ7U8W-ZTdy#%7=oItJ{LFQ!SWrvt1Lbk>z}*`Ga=06l*k8`kXbCUekJ zEy;a~k8k#Ero$>At?ZEjon$t4@do-eQiyG)e=uMi3{P&GzX^U2A4-ihaQyN(6zNGH z#Pk8PG?cr9q!qzC0^w_G=9R`@i9u&IefQ{ky>7zW^F6`N`(8yPF^ z1bpS5{3!(~K<`&Kuc1QQ*Su4b1xZm*(I`4a2v9E?77ErT95xBm*l0lyv*2;dfR1gByy7(FKG$FwOQizT0E@uwWoK81wLU8T0=~yUNu7NB0ICE+jXhVrPGX zORv-k+#vV(6sQlIF`vMI_(BGV*&&fAq&o)67Rd-qGDwS=?b1gCIQ$4eL1O(_p=G9; zwiPJtRUmUTFB1p0I6ubLFgK#9t&Ny>BJ$+ei>FA#&~Q&s7zQ;Cpb-V2%@2d*$`7}v zPhL$|MuBk*3m}Fi8WqA&wd^kTkQ`oJq6B2O`M5Qf%VwqxB+%FE1|tAJJudlyCbS!< zf@*=TASErWK(F4qO#gGa6)9vUP}Aa=5b-73jS|9^1rAtYnL!g97&u{O^%n$0rxXy$ z7r$i)E5p?JEQuln17i;e4v3(EwI;OZj3XJT4Z!hz{*Q03sNtr$|6OhE5$LLAZFA6( z4426v{m3Y&S^@2R;_Ot7H-mqrz6V-7kAiSpdd;PlFNXPJhfu7;8glFcGN7|S8XL-5 zmtb#yQpdyeB2J1cWii}{G{Q`P`v@$+{@=1S(QilC=JR5RJ3L8dA|_Um9h;CQ>i z9gC@Jp3_yvR`3|0HYt8$pR+_(1?&Rhe2SM+DTG*p5#{+++T@jKw{-#^Yj;7nEi%Br zNyA-Z?&;J2#3}KDk%&3vAB%L#^s9Cj3f;I%LU>0*0iw%-F=ZWVr=;p;%$f zOv=F@sUw^%Er%Ug8)+16(L#_J5dSvXuK9=Xe$AU?ctd>?ty72gO5cYT9Y2LA0Qus~ zo*()6iCSP!&83k50-DXvr$_3NiT4^it~x1rA9|I7=%jd|dq!y+M!<1cm6WL!nc(SFn8G@mLfB{`gk7~ zIfS}0QeZJxp7gu{tt%ksBXe7~Vqg8nhp#9~#=R&PoytzHx~-wZz>l{dqjv7==M{P% zuPpx=^~IS)@_xpAO@ikjlLP_)r#M`+!_yn{p}XIo2`!Gj_9FVlDR7227uX?p6IF?W zLKP_f^qs_pANB8%1UJ$~G+^{~*4=Zemf7mGTjY)5JEqlrM8w zpwjMjvb>7-eqr!cUz60~^o4sUGj4SRP`BUl~rkOVgdAqumb(O_=Au3wZ z$G&u^TIFeEMWpg$bf>(|MI_kK=;Q5PMhUHq(R+N_LwO*LSy@??X;%@0RvUQ(eT zmd(S6P^0K4Ga28>+vtwiwhSZ$jtJsY437OE3K9RwM5$)5aOmDdluW{4MVd#UHH~*S z5mn-#`yCnugOr$%u4Km0O?hk$>Is`kl(T=YvwU@tI#SOhF?b-`LcJ$79g}7B>v`@z zl@CUPs>2PH#Swxsq9D5 z_{lXjEzi*2hQWwU!dFhTzNq)SiQW!TG!x6~cObI)G~;`$W|iTwo-OfQZfww^?2Y4F ziUcSKA2fuX=#%OIU$w~=Bwn@&GB4>+kd;Tu4(AE*j-36(`;*<>|FpvV(`z+yqjO5v z39+?4&^qzQtf5DYO6@Hi?)u;%cd|H?evO1B&DEIm+$782arK zObp=Mzx^04I6I9s9{N74EuGRDPlMPh<*?ksG&}w!b)Q)80Wan)`h2Sfg`-Jy<`k=5 zMEj!u7Cjl#iBM*PT$Hw1kmdIv)v(CDATV>`4fJ{(0oU$el4;5>3=R@yw_}a{kgdMS z74v$FyI-fxX&JB4|ROl$|_-IQIH;%5wUQ;|%8BL=@M z!Kf0z9b9*gAlK^U{sIanDEC2~ZlIV;rOI&v3ZutxpIe?i)wA@0PiD2DIUdWYyUZRn z9MI!Mm$7cPcbO%i|2izfYUksv{Zt86Hp;%j{j%SFNF{lxNb`#!b6I?cb4FWtrd7R> zl7c&`6)NSJsGBtYWCQEap9eDH*seKVtapL*UAy~AUcWq^HaacGs};(iBs1~@f*-D9 z!HJGI+dT!3iLdc<`XV^VSq)ZRKE=j#)VddvO~pI$fIK(VC@~|U_s8A$U0r8;8%Nl5 zeIA;iKOO-A)OjMxO;1gQ8mb_tGJ)t2PyGB90_6ucKdfw!42R1!o z++2A#`h$`FJ&)2T>a#?jDNKGp6~$V(q-V*PJV?=I$F0AMimrx9cLWs}=9UHcb?DKV zzd0CJId1u9hZC0htA-6zu86}iUgCoAXuqm zh2POAErtw7ib7U1=WS16{Ue0+2;G4Sbb-nG@j1B%-3ZZEuHP@y3ap8d19v3Pm<(6W zzg4XXBa_FBd&;Xce~3bmS}`UvZz9^R8SSf%WlF*Lsbj+>h}Yp@d4NCQ;Vq55;1()3 zzV4FwaY!kyz@FWp#S=>#X^&~LNiFJcgR9JH=RL;ZS{RYhlI{m32?;m=DJp*Omhh8G zg<*2bTCQfR8zXFS>+LqHa-rLfdI0rh%R})}Fq@hnaE?p#x8b(L_ ziox=W7VR$CiR1w(ogkP{-S5qSPhnK8Qnd`Q}RXYQ>v9_8# zn@6*Hw@P7qKrAARn~&C_U&Uk-?lzELU@|HrDMo-%QFV)~$(11WoBo9?fdcohu7cn< zsJP$kq+0MBPy(~b-kDLCe_R@UmB@VPIP|kgm|ssmh2b#@A4Eo|4(&fGQH7r?F_Q@< zA4_W&8P0p_$u%KeVtyQCSyeKi-H7TT4d<^F`g_pAldf!r)<`v&`GCbW2MLReA&NHq zmQVXdH}})J6$PoE94n^+k;t07t$)s59IE{MKoy^~?k68sK(hi`7KE`vlv&O1tsV!D zRw811lOnfPDi?O@=AW?x;5u_A$@wWg&xzZXG8&tg=|?zgMpR6GKp&H~E~S1zGPA z+iZ%z-<&q%YEmUL^`kRud}-H~H&uhb6?EQIzo zxW!srYeeAeFHX150~H%NXns$Di&l< z;-{foz(k#@%Al^Zw)s4A5uGDQ2t(hop_U^BTNt}AHDZtKMd&M#S6Q|q5H^@68D0 zSz6TKjXqph0q(X!$Kcagj5_7ol8ql4p7li*o|6f-QmWoUqN0U!sHt+6?7YpN73;Sa zdy2DfCbwEDqsyk=!T`ITQd6!|=O2RF8f{rHfB%rziy|1Hn1Vk{-=dR(jD22!qdmo= zS;U<5e3*es9(a^Gva{}h8owQfW@`yAx-Oaixt0ee?ywya4zX7MHFCE?@GDz)Ick<( zr}C2;%aJG9e+En9H0~x=Nh- zI`Q=a-$z;_zMrYj&B_#WA~SClLaA0IDpDhh71P%~&lq=S3%Efu7Lc9>noNVB52Ugy z83mOpq|Jins{n5|4xT0eL84!+UQcM-)RE`b2(Pq5kR^`LKki34jSTzB#7HA{U`q49 z4A&a#iR0H>Qy;Jt>G&(tK@#kl-?oY-&Q4(mc*=dH>+Ki3KyD*?ccyW+H^;qx3d&(f zsrC&N`@vw$o_(Vg=!yzK{j6JKDzR1%WPIdKU(X33U6G;BMrwPw4sL5)4vB16bYn~~ zG0BJM&Zl~ld%B-4T%HOJR$|D@tm=<45vG|GwkCQMS#aKL{VMvElz-Y8ErsIH$n5}z zDWTaqATNYy4AXd7aNtSmXAi!AN zm5C%hslA`q&Y@YcRlYsfr(UCz#nDQ~_(#{6gIYqMJhPpIry&!S=Ko6P!I+w$Sw_s~ zuYPud3FsO?X2HWCO&U0owfqS3E@-|FXeO_5mhcs{jo z8Jj&AXz=+&O;1M(>;2QZ%{AtTi+zM~d`POORbhSY1MonL`_3a6m}*m4I|X7D956A| z4JMYdw^#bVfEjw2reo3xbKCpNodKGkucR0&6tLxJh&6{;7rwKs%~Tgsug7Hzu3ktZ z4LqPlCS!GQFfHq{o-*K6chiHzt%Ou?K*Fci5g34nk54CR0;XJHc`qU`iAJI6a){yp zQq^q(?~h|2V;H`#Q?QJ#99hsQbT*UgED~Y>Wx}KEyq0-ey7Zgh8kc%ij$X6IcB}ybQrd zbEx3uqd`NgfpQ*hvg1BcLg8guCMnbcB zFpBa9Gf|x0N2Z1W=TqKbwx7HG6L`b}%oH#{C8OynDR~O1Oi}d&b=?M>ucuiiN5NwU zYD`C*^l~xCqN3>Vt7Xxt%(9zf;8yFNsy!~UHS1?bizGJV8kfsccmo&^V<{gN_nZAD zNJ}cd+#Uc;!SC$YeZheghNci52`EiytSl?s?pMomSVoQ_B&h;p)wN(^;EKRlvF&Hi zWg*vHZe6=piYX3v*@t&pjWy4uELUULp6;Vhk`26?G(#)o3Gq&NYuzrz?IK^(U_XZg z1J7g7H<_4xg$2zV0-5Cs;OzRL88Ps%0p0Mp<=Hb(l@wG~vTU?^E%_jYo6&Y%V&@c5 z{o*WNbQYuMBCheAis>RLhLDN&q0Bz` zsgXN2Yz54^oY08?mhAtX<6;aDujjDP2v_D`cm|%~0tW+6 z{m6G(-6*J*kVWcUwi4%3t8ELrfY%((d(6AkN*`u_{JMxuQhoJvVNo)WMU#N7VTI;F zp+`|blRuCwIuKpLuN_d^(EO)2P+BH}2_NwI7gI2oIeO`{9>=GiLnPwMgNlX*Nu~2a zt!Fz`jxXrG9SoW#|3)1X$VL1yKB2esllbyHukjbD_@q7?`jvn6WwDf(rn{Du-aiyE zNdELc_5uPM8u>NL4Y-ilpa0Aqn8t3xMl0fgsomd%uBE9-yELAt;^N{mxC~8+ z0lGd!A{22IjB9lR;x!a#5TOwfIL(KNaD?OBTOqWx*}}ZcWU> zBq^L1Jxa#}&835)u;{G*$0zfrsft z0!Ew(S5z0T8ZJqum?)5%f&}A3RpZMft-7+zYPKt_9^pEi4Iu#si94+4fO(aOymrPC ze*j&M=$)UuG>YaE@W87`LG9k#G_+mL_mW8aC93&lDpp@ zu2>?211=du@ByJb8+FvsMPrD{;gL= z=!tIF;E*HkjnmyT{M>do%Wm&!kkLoKKb7I$0HhcQNULEUM#Ogi{lfy&yNWB_7vN~% z#md9~fHQI>qJ0AhB?MZ~y zT@$R<$&AgoC041gPYP^umZ6Wjf*h2GaofXtbs z`dUcl$Ca+SkQu9?raV27*Gn>-Ayo(==X)|Y_#v+t0U^oLgw#N?;79p<6qy9yF8u8c z9hrr<*>$uJMUP!hPOs>-qYJib6wrA!l<afjY>GqSJ5zg1$5b3`Eq};Qqo8p`RHXm%SNqt#Oo#zJgABp7Lpp zD-H$C@5aA`hx)ObAg~g=pxU|-v)RQOdiS|{r4zg@D`gZ-K5HrCQ*UsW^nHv8xBJ6G z&s3qaSy9{xnTkVtLL1@FklFNhBET-Ytz)dJDaT>Mp0nU`{BmG^j;kSdlccMWc+k) zRRc*-Sf!sSPBeF$oaMmpl1>+WReq$Lhk(%w96oQTjB8}0b+owI-bpcg;y<8D+U|UM z5ddcx9tH(C0{7PAU?RELx|E~>H&oPv0T?O}Nm2-F_}?=0i;{iu_*IXVYMXI+)h(IS z+`XmP$aXu&Q)+Y>JGH5Tkrgi_-dRSV*dsj3{|Yd~rhs7e{^;#L5k4c*L{I@C3|Bqe z@0_b%RN#YlbH^pmn&%a|##|yW90@YGxB7nA-LQBq_JQtTO`@$&XywPU)L~CD=8W1e zA)-T0T#GQF!AGDDFyTi)9e_|5AoYdYp1ddPFANz*K`fgG{IM+`3CT77z|iyl{epiv ztdkuthh(K3Vg(N{kiUk18A_~tS^b|;9 z2|8jqQ*)JH8Em_ZsB2f&?kR`;rnyh-Ln-?5rcWHNe_802u|-p3p-8e&%x{4EGW{Tw-cUVLxffYpzbg z@l@|T&V|rs<319uZ~K9~5eosaQ(%Yi%ax0RbX@c7vEU8HUkjgAeGBQQDXu!@MqU+- zaO9` z&?xi+aU~9A<>8DenDCa5ox1gNPM#+ZN*%z(=zCF7O1WITDw_5*eq?6tY#ZC~zN&t) zuk2j|TxJJ$j+ttfhIcmJ+i}w&v?$m8SJ7|5!*kw5^-PL#{8JA+zTnbNA4Hcyp?VUo zZ9EK=^TZZW7=jNYO%B5hh&+M{Ca9l;x@*Dm02CuWFe}pe4N!UH*-1KiNM@4IS`RoX zGjnE<2asvv>uF|FWhw|L+Zz~uOYXPhyq9#&yW4GCjn1gR%$MQ?OX^xzmVc3yp8DsE z^9L(C!bD8LkYz*Z2}H(#yMz>`PZ)lGN^)p{k>4Y5cO?um-o%>vQyl;JO=yG-mCFK@ zp2|>v>2@msA1#1FS)JyF(c?_+_7Ual$LhFEWHQAVxQxHOdC1R5O*AZ(VX(se;$bA0 z!uUrh1fT7E9!4Egp7#*n%5)NlPoR_lo3Cs3uC_eMYDZbnnUp7R&Pc`>hwI zuZs~G95cgz+3OU{5ZzN)I;}9;;;r@Ok znhzJL9vsWg7r(qJd+Vv=bGGi;9-hkmo7RR83B^oug}yy)p$zQ7VJv>|n^`aY8GA=^ zjJ7CTnD)W^Qc3&-PXqEhj6cw3yh2D78ks?iISE2K{1Ooy2XG&}&hK066YYspbjBW~ zu=ysB6TWcIT^EePIm~cXow_Pn(UNm^RKh|?`FWmSSqdj%L%18a(v|D%#?&X;iaSqU z-LG>sG4atrT|Ar~3I>qy2QCdN4SFZ2x@f4E!6eY{kYyDO#oSehd^MzU&TuzAcQu;0 zNbKBg78p@d@>Qqj~e_GNb!UlM-~$hPBr62)_aKX5&~>X*I6D?Q3O~0ffIJmx{#+C{5#mRMQ_dRlE5v7CbX8^P5S;prO(5F+9< z0fUJiVO5|7w}s)BGf*OvcS|X_FolQ*0mD?`j&-qV%@nETTlY?=mpeG=H(FnNdbMh> zI8WH8X+J0X@oVDok_h&kijC9JpHKBH4*M~mKQGs6`DMF!rf_s5PK~I$q&=AC=BE^O zq?I5HC$Rib!4EzPiGK_`V92qNvCEwVT3A@}Zlt@@5TIM&5`?DbPU0pc(2mK0r=r)| zL#cst(DtDxy`z{?Y)Lq&{ScM;>=((4sn;W@lL$pJXyf1g)*8C1NV_LJUZgQ0dTYDl z*py4H?;C$YkL!PFG+*wT6%(GiwF~VZKuL7TI6{Y7%oPBUfC<&Va6kY^398hBI_q18 zhSboa33YD*Dh|MgX8}N!pd}Xm$&;DS40G+9Xy3V@rD3-smRk>tmoV!ReO>l?`J}P$ zjO8z^3Ki(oxJ|t(W4zHiRP)g=lC(yGl*q|vReJ3wKV2#om;U7JyP`5`wF3tq;65J1 zOl)W&C?>qEF)$y3I{!r5uEtEyHF1Q0g2davD7NoTQ=r|uj(yLm5%&g<{L=D{7tfCS z=zMJch))`~NZdUm&QulC;8gG=e*N8zei^Erbqktwa_2eyS6rQM54fP}C&K&&JSfw= z`}cb=$>RD`MiUp{7PK4GjYw}>S?#B z^1vrw^xNWDINn6L+6$FgJYzZ^#9+}H=Xt>H^HLPCW&ZKQ;1>*!%caE*0Hm-*+ZI+- z5CdLO`L&OHESjZzzLIz+74j{XI|=e)Cy#X&Sg)fFTwu zrx)LT8@9^~%L9S1~TOP1gcUM8COdUDPSk3pV{&b?O-Fz3Wan ziA~*&DGxBd+tauci&>|H%BCqx*pU20a_i(USrW{Uo z(hp9KQ>8pf-``MkHc_LHk?qoZs@a5ZcGENGW@DXR!QH2BPQt7XSDNlpZYkEqaQrD5 z0)*$w%=IG=GvAtS4_QII34^Tv$?JmuEOX}oq##kxkBSHr*V`;{a9BXRNF#D%x-#NH z)$J{Og`ZE`dspN98t3PpXR%rxaxP$GMl$`}_M#?Dbj0d!N^%QW%kDC)5=g|=`2BKC za?4g-m0go2r(RaIENGPJwwi9Vfw0zwN{Y$-r)Gncg)n#h>35(=-&>AYvwH; zY^XE-@FZv{Ra+Q!BUS?)0o!&MMPMU~btQC*7Xu6ioSW+K<*mwT2jE32EhPZLUH$J6 z_*Z4~*CFEVo;r?8XddoQ(7ef%ruv#|^t5b}F=n+T$lN{d#)OU3h#HwU+?=z#|1dTeH1hyaPuK_MX_&;7yHJ2*V70^dKn|IN0`mjbEAA)Alhx}^J6 z)=%1Ju_V;m_wp+ki_dn@@BPkR9RC=#G0V8sNo-;M*XN^wQpi{F*h2xq>y=WcOhXG% z`46&36oBxGL7YT4H8L9`q9<_4dLT%8H-%fhJ^mNOnR^k34FMnEtn(c5hbDmu!Fhmw zM0fnSot}7W(gQ$70r2fE6{m(I-J_L|N9R7_%0lFxyZR-YsQoHBe5AtXXLoU|Ke1bD zul67#D?T|TA4=JMjU-*|ydy0+;)5z%av+On{>M2!sIF#yv@QW{=KoHJJX; za;qodTwGj+P~U=k8CCnS=UOpg8*6pCJC?uYQa@cE)tmd0af)$D^~V>ORHW1&2M0;e ziX0f~GV+=4PiS;lJUEd^fIGx+=>Z@U4+EfFZ?>O6swk+gjfPgeXbg>HG)Nyy68ceC(#;ZW5)}}- zdr+!QsW!6TC@h|-)(`XB#buOF=Cc~g_xQbwH#~;U^_GyAfA#hb zdZbokL>x`|U5RE9$a?Z1YY{&EZO~+;Cj&v4%Pk|@J}|=Y%qUn>!U3jX3$BGlXl(}I zNxKWfFsgi6|B*u-2$CZ--Cs~(?n(Qc7Vg@&Yk8rb%zEdJfjVa!;Y`M)+q}vfR=Yx6 z{qdc6i@7+5gCr^LgUql`cTJd9E@z-dG|JO=8%OcJJ&E`(cWFt*^y&}*I}D7C?GNVw zq~P|>6b<=d`F;ig z;Wg?E6kAiu(jo8N1-|0(=0CJNSU9QdZY;pU>!;4|)k&42dQ*?l7FVQwvvOrrtnB3k z(SU)zBioogM|<#rH;}g!w*A3xhnl97(FQS)7<FJ*Y>08RV>>5r?|TM^@vFrjS%WK=$A;ov z89$xYC1AM z7`+OpB6##6h0{jb9(jd?&@aXDS<=YXF8w}Zrpc0gTK@xh9o(wZ?tO*0jqdcv4pKu|QiZ=pvJ3kyX9@w>GNMlcH6y9t2@zR7 z-1=#SeC8nEUKXWh|4_J0FKg!k~Cu?Pu zVotKiJAiS`w<(s^~z5$q>eD} zA?`2|*WjvOgt&;Rwe{zKRZu9Ep$8iWT1YVX=@CN*b{2rO9q}mNR9nyjP(R#zquoFjp4>)XQ}|rcc0(XR1LhoWHmn|!DmG+ zJ}u_dcVlYk6LZV36F+6IcVX2^`_Ln%zXzkY&jLgTf+XZ=H5P%r-6mDe8n4fp|`5wj= z`@Z!LbmkR{_x-9hns^xcx|uUfk;3~jmS2~l&*431?TLb~?Gf=@J_Z>FwwYTLy`;RE zKlFvhr75HJ71#r|pD}v9F;p+=>|{lAJkx6Pu>WH701VL!XY!^H-l_3xJiR33%;yw= zpMDl--kn>$C-&cU|A~S>N-tpg5x|D91_Y*?y;v?Bd7;De_GP zVaMAIubN!M_)Wv}D*a{Rsj7n}f9V^ZTE`eT(FTOZoHaI7GNo%WIpur0pMO2Qb^@0w z!XPR?a7yv!fk{+Tg$My=MB#5RVqHRlr4Mde5{xr6As}m>mU{$l-V%`CmV9{AcBY9p zIF41k|8ovjCLoGDq$^M@`HzkXk8*A24rvll{Bcu|4Z(Dn^1XKX-{$916xX9BhqeBb zj5&W)lUgVj9e$@wOG6;l{A=y%GnR^6#=FAySR%?ntW4haM zLq8-|g|0OR^WI*z(>AF&(--aXq1fPE9z(?|>wFzqFS-_t((6Xn05;FD#=S=)ho$N1 z)iF0BQ}E{-*bI-Z4MLxu@b_2u-w4~2Qvmy|2M}Ry*GM5mg_K{@zU?@I0k!7~o~)11 zI6c4p=ldzc@pebJc#xiq&S)fX+&bJ}Tq#(buLqT!B{~!wbPP~6mE9QA9 z0U$V)(eIr$0lA|m)uqr$pZM}SQ?>*fJa$F9_xghw4gCrYc5>b=ihAr~zEjGD$|>G<9dq3rSKo<=^CfvCIV?;s|g5-X_A>z$~<@ly}{)4E2q0iR{eZu}K5&@d=F1 zmA8gaS0l{|h6nn=3<|mEJ}mFdqo@dWvGRtXkqSObtku|+^2OPPc8+5L-MjA2wmdIy zYI7@F@HE&g@smYecTCm&ou_j1W}C<=2@4J#V_-OW1~*pv)JPNjM)5K1w{{I-O9f-x z=y{l#BK{{xCK?ueXrqEBy!>bzMlYf_K`IG@LEB8;2d+K(pB$3QC$SaF#zZZN5T!{y zg^5=MnNJoCKFtxv%T9RGC`R4ED-v9Ht9<#;G3;GoU@A9wdW=s+RN&(Ky7kZLkc7R|wv$+vx%Nt_Vn zj}Q|I<~)VSi9H#Q7DT|D`6u0lK&f3vYtySw+=QswNm)&nt3DdFlcmtTEMwL2xJIho zWipyD)IiNrhr#FVjTpYDFHaBAErD-czdX>O5#|tjc?-H_@Y__jcII`Xss~)BCEWLM z-SZ&)p$Cv@0ZtjzO@apYd++jB+oi?D#r_*rU=Gj?wgxT^gz4y@o9lyvG8+Dj8wgo| z21h>@8vnvql;Ej>G@#8;I^RFo8$8fgp&&v(DAF$zPl|G>u$M1r(u8gBCe`_;P_XDr z6WBC1q@|nwee(XcAlIXF$GpzdsEq`kvZuz(k{1(!q3XJw*ss^xB9F<+-_zH^sX5Re zN9z-<9irWI5owYj;tu=02YGD(Idl+B-~36S1ZV@%@CG|pCt)ud8%F}~y%73Q6lDeU zGITgxf^sC>mHO^O%FEG{?l+Gcyp^f4z#2Ys>?NMm+{)h%$QRU987Fn=|J2Q^yztWi zZ4Q7g*lNUc2v#1zl~TjO96jl=l?ECP^flR zXc%@@@I>b)^&7m+N~KzO^PFsiotEUx8#*dwF{sL%f^|jSh~#od;xK-0v9(f6mNWXzK02gZ42>Qsma)t7nr&p-mgn#mC-+<{Cmgx|JD)kk6~Z@*)Hby9 zr4z_o=m_4v{rBhXsa7v;=t%_yjrC|Knf|7jegJJMg{slc^=I1r<&baYM$&}0`8;q_8e*m(GVIe8P8x$d4^x} zUu034U$k!R(d6rp@R3ppv`7YH1MLL-)yqTvfb)_i>r>1UwlXj`KZBJo+Kf91<|!nI z0J(4hJgoQ_G_8|@{DtjFLPRG=Lo;{)_AyTQ5FFhnzEZ4d=?S(g6p`KsLBb2_*<$de zoDmf4hq=6{&leql0bYgjz4tY(Of0gtpoJjtanqrQDdKlQ4*}r4MKnT!yH-d{T3N&R zqm-V0V$-}u67$mnf$==zTu(Tb;C8w45#+3%_36fKun+Nexx%OtnO9*1WMv-MJ8y0U z#yeEH!|g=RCc*iY#0p>OTFY4{syS}(nI4T-4 zH=HJvTH!8fV6DMzq#=2VvEmaItQ1b42~uL;#(P{_p&RfPmTnX54#76er!6g_-7m%uBKA zSW4j|W};O&HB+j|`Oh4waAep55gf7q(Z;QPS;p-xYcKg&sZYr&NXnEAsR5FsM;g|H zWHK_D>w^-t=o?OBwJ)rzdxhB{ZI7?=avC2S&ZKexCgBMKOUp#4njZY;>$kGw-T*Ee ziYpo}g6(jQ>mzDCL{f8~1e#Wpi@d`cJZOu_s4L@Ppfq&Y;?~bTahjB-Xyy}LsMWzI&`}u+WAn zNI6r4GPfX>7_KKm3`!O!??+N_p)GglE`@^>UH+)P!aN1#APlY7fHoYBQP7`Bc|qgg zwZb|r!Vt3*mNY<3F{~%d^~1HLLS>>wQ+rIW>v#INhebdppBX{)6B{L%_bG9fc18E4 zsIU5+#-OE4VC$s7fa6yq*wmn|D&Y#``OzvA7(}899x$!vIbBY$;L!dPpm^iZxe6~~ zdEV~}hbtxj%%>3cMp#$r*ezPlj2B#~5DjhQC!1q6@0T-?;ioqJZymzBZeRcapS)w3jFZ$7VmnrcT{2WcdBO$9I8Nk2Y#<&hRe|W!@};VNfI4!pDXQ zMSxm(r%@$_=9Rd6u=NAo&wyx^0-t8&10kq*zyVYUdKrxT#EwEhWWeyxizso0)BG_1 z+{cX-FiIGq?4Zhsj>*73p7K`StMYVX9qF2`4B`9xKe;{_s%}&cD!GY+p`d>gM33H~ z3<0!C3a#mRJ;C7D+XgRID_kP=a9|^ygm2y*2)f9<18u1%u>IjDENu$U8D*u48*Cz{ z_WI?}q4ri`gR?yi0?JVmAVQ(550K<#ZV$ih-N?nHtKC$9Qt^Rm=0VHYr zu8e^*m+UFp76V_g2riGMfx83nUy%}pn24X-pcPyKw+tN*p&|J@`VsetM*-w5xgvXJ z#bHa&NCkc+tzH$+yh^OebhdC@@`6A_UE|A!?-pzgnsiEx#5XKxc6pa_Ow@1gI0q|j z$Qe5f6ui|ivMcpHN#5)+7mqA4P?rree*>eEsVmighyL2ezWo%HKg1he6&?>fDl6@m zp9@*w?)qx|#kWFTW$1^qfgiI(Px z?1Sq8tyclPEnpZ>|M_hWsk4P}Oh7Ao*dVP;b7q|LMBzZqPUbNaQNh1w>$$U|d89lZ zxGC}3hASPvpPtfH>_8L6l9M+RLAsZw$fOi&hnfovzZo+c24Yah;RVag(E5#5Sl$Gd zjI8R-6wmOw+3ZDxaX}9Pd(e6qEE+%#I#{HIRto9dOAZZYesyG0!s)AP!jZ{EOL(&*>>_RgvlqqNt4%aB_ zjjwNdV72C1kM~kg$aat2q<<0nH|=wvj)`W$K|G#akREBK3kR14mjAb6NT^?#k>PMU z&vF}MjKjyWK{`KPrV4vTy+N2Y9gaSn_=FL@P8)mWvd&9U?B6pw@J-=i&<-G2OG$)5 zOEWPTXrmZGHN6W>IjOWUIWg=1afA}1n7|Skc<@3KU9ZHkux==k#@>6j*=}?3c9)~> z#~%_(xiN1E+(yL+ca@9NZH+@%t_4niUFj&M7*51x0UVeSvjtPCB{+|XFl0<(1W=Qx zLN)*jslcD#?t~u`RWF8xSWrz6U=RY?j)W(BpEC(a;D(wsCMh?i?~0rZ^lOL+(5!c1 z73OXh>L$!5sPe&ujIbX*Dm$CVnMz%zz?L6pgm2;N9_=TY^Yo@p~we|XtH)!-rbim3ws=N|p= zCO&RwJdI@7&&K2T2lF(Rnj3Z#oku&(5SbUY>*?38#>H3se;>hO?WMn>2c^DZ#B)-b z6p7qRu2A}cCj#wDX%)Lx^ay5v7Q|Q=CsGP4Hqhe69cJt*7f}<7FXrv_?8m4UF z5pa0&*nukvS+r3S0Oce=AyWir7JB;8O$7h-PwH2 zt1an1s{axBTlyAsC7@e>ga<u$-S~a<|uW%s%Z`8dd zBeCH!9pm=E_iMilc@KXUb=s?mn4G^r<-2@=VfdEwOiJ*y7+v1C$<`I23bO%OO|$yL zg><*gd6Mveqn(SaDZ=s=A@eo!lkW++(a%^1^PGWEkX^_?8Q#k4s#C&&Rwe4Sh#MH4 zti5t2ofymZidV^P;enFpd(Q7HOiyO&SRxrycQ-V2J!E41h9o|cy7?KVa2@q*(S{bQ z-uVXVOMm}o3&B&qE}2#$KX_dy?<)7{t$X(zXT*NMUm$2ak^HYu`Hy7_PH$||&>g>C zzQEnxO9v{`@_ZR5SScDd>xw3Z2wx{pmJP29OvS&$CKG>uS9I}S$_G6wDQ1D3ygS50 zBlw#B<@NS-SwM3VdQahNG{etJ`GQ!0D*vcVhwi$Xs@SzR6^av#aCp(#7LQk5IaS5t0JK4XZwUrR#QzpNJ zdx+DGhbtQtUnZnTBeNiMC1@88^rou7D0jfBALDkv^m?Sg(}h3B{D_{#IbQBVLNNA#JX#`Z&60BtOV#oZu=y$3xGeOqYZ9gOUj zU_J@57t0ouRIysA6*jN@JRW$m+~rw4$gC#fVHOaetHYb$GN&>$%D8Mt_3mB$Z{d~j z!3?D=zp~#?p9;KY>rnP`>MPEBY}wYLq+C-s>o0`{HK=!jp*Q*_RN-EuoxcIrLkvQ< z_fUPR1&sjhy@UfCEoDPSaj~v$&{;5;`QYz&DzJU}4HpfY|2%K_v&tvj@#)PS{Le4e ziT7`X>S~$VTdC05;$D@Ws25=q(eXUf_)gGKPDIhEZD^#{1k>RaT{JYq*Szbkd0VZ5 z-EOh!{@}hZpU-p^ReY@)Ds3>ZrnWnA^Xt1>v;_;TB!+q1lYhF!e_EG|hQw|O!G zq!#HC1i%-30L-5Y)Sx#b@L)mcDVCj#xMMJC*!9-`&vdIpg2U&pER9pM$*` zv;H+<;Pp@|s4$r1EZ(wTB5qV@Np!!RD5O9|%%M&Hw>SzP1K#ROaLpVy$?N|3klCcc zA?_4WxJm5Yd#P0uqjrN>s{Gh>;+s-^)Q3X)m0WedkA#)A$8X4yeWDaq`F3}xe_r_r z`Xqb}Hr#J8Z=l8H&|aXrkrOG^2vvn*FYqCFqIHiTLLY7!$Atq-Fz7@5 zZy`v~FpSm|thMxcB_RdNxKvMT9_tC)wzwgMJ}0m!r22tdtfKR>T*%CvYo3yewPSl*bCg=|jD`%g@E+`9TSS{7p^h2@+b`0LFlQkL zfL!ktfcAmcSy)iM$gJ}lj9LGc0FY`!o7Ryv0rjwGdk4zYZ9$V1rz0FV#U>ryaE#CH;>s~#EN4Y$Ze!+Naevl(hGtRtQ&+yI%|h`B6Dq2*0dw}r)nhBWoj z)To>u9{sD9%hl=TKK)xF`ONZ!d$_b(gFU6g$Sd;V zu2o%D&8$rmM7pyk$-~~cc_R)LiFB;pzG-0!+d^Aa2;OlG1wCb>zd`!I&|;o`=I{(`B8h@ z7Jj0Y`ECVdXhoakkZ=x0sygsTq;DaVU$JU}=OAayNAMT?TS5UQFr-YuRt|2svKRR} zgMyt6BC$m(BD(b->?NJD)?OC+(p{RQYO^VP9mTUv@mTqEw&K*rGX^Kl(k~XuF;lf- zr0w{n_Y!<#_L!0he$e>I_^rbp8W^?&YmR=`>Zdoe41=Kn0|vRd&?Scya@6?#t2`j; z1aF8Tj6YCn9NKOF{I_U9HT(iG83JT&XlW=fW>gez)LY zErDqf%2wn^x|3p%Y>SdV2%m#8kX|r{Xd|t?Anl0rmJnQ(Rbf3J$)11t?S`sFL5i+< zaC1rUV9s%0?L+z+2CtjKRVPE^*Ka&~r7An!tNpmv{7dcY76;;Zv;LD@CDpC3`lt&g zKQB8+f7a^lL5Y8`hA%)sst+wJg=IY&x}y^ub|}_{(w9KAgi?nA!as&;_dp_Hflop5 z!moAlf976sr=+#rMSNn}-=JoqjvWbGAmhF{r=!$Uvwj;MQ6#;iWhWw{z}1I;UII_U ze;f*wJbKJ=b-ra*+;;cVdbM_S&yBN5_vFXqjmMd$_e!QH&-|#xxDD56Ggy^eCNgd6 zWa!fM%2KC$c2}E-zNP`f7|&o0XBfzLNa0Y2<&on+21xWYv${bK@uUrDdHsl3WX8gH zLYVs=1-Rd{#-6}xKLlBYU6HP64+-R#TC?oksZUk2!U)H_-tIUmp3q7^)Y+mJ6>YtM zjzlB!?tNF#w{q~>W6-i3K(G!h^u@*NX@q5}4dGeZZ{`i_&8K4srPY2j<{Q?3Fy~NN z&as#GG?t*Hcidg8&*7HG<8b1Y){}!p-VbN7Z1wQf@iBYg;ZIcI0qM98s^}Q_D6xbpaD@S8L-UsXEW-^{Rxlefvd8W%8sO_NP)XON_S8p!<8R z^fc0->fd>ZUVk4~*y9#|9pP1Sa9`QJ{FInl5g<8NZn?jUAntR(|FS1t?z=ukjb>r6 zzsjh_`*P7J-F zmD3kZY7CTkWOCCWNd1F#~;o8u?!Ge@GJ^DNmaQkG@xCe zNEAd6fmYbcBO18tjK(0y^#|8{9r(XkZ|#o9xnBJ_b(IoTZs<@#sYN-E)zNhDfAcS# zrS6{C>Y-}!BY&csJiMQBtE48{Pr0ct_I&@jme{AgBT0SFg)3jt)<1*UXFNLFk$D1c zSdk+x?$L-?K#}h6U5G@h-?v}4?i;;ATdM-LE&u*GLJ~f<_b!-TQ1}O-h5@302Qm&~ zM_o4Xir+puTiOheK65Z$UlcYHVSZ`^WqSa8+$<`npt z(_dV1)ksxvmR>IRDf>)Q_1*S3vy?p(39?fjPDbV%XwUfD8Y@(66vG$?F0F^FK`6iH z_Djb{5&|J;Co8N^o!s`Btm^1)ZYnLsE}49QNlaYd3^F4e)WDOt5BC$Y%b+|OIw5y< zc8~~V2Uj^Pa=oav|NqB{Kw-QSS9vbDnB;0fLrTh(j6}iwbJL|$g`|Xqm46<2np5=} z3r?G=s=D)+UGY23$@bvZZOiGMNaJah)c2@CKnIy!sLe^W#SEesFsDDEi83VrmyP?M zhEWLI=gj$cAX6?if;?xl*dGUKxH$R*;8n+Zn2MEvw+Ko^B`}VHiwfNr)$i=3$we6Y z+Q7f0a%QdWRkBd^3Zzk=YWmq{Wt-9q2c&;9ruh|6ZRY#nkZQp@N7lclcGcy_u?Xnb z5SXE+;L(5LmM*fvPXd1!KnLTp5M_f={!qp$Wjh$bp}h1vZ?}_f^#LD8IIr*OrxlJ8 zV&4|tMH;5re4SJ(hb!&-k?hdbOxB&U`S4=@oSt)^HYks34udS^BwOEj5;-Tp(?I z&3OP@EC>P;N@K&|8dbi~%3P3wHDBY^7UH8`EYV@;!9?5@7}KMCAczJFD0m6e&8!>R z-4~@|iCO%PZfX27&FsJKOnTg!d9Q9ok)x>o4(r4Q>o3B)Lk?7J6i*7nlOg{-oA|z@ z^#clNqKAcPQ?~;q8`~(34SUMG*!*FQA8Pf{Ix5A_qTrENMk9-T*f+Qhs=-yXTiGdg z?&G0@56&OkV$Xjroqv!cwfcbMvLgv~;x`jq{BOOW%ke))O1Wl3ea{=%Wig36BFX$I zT3ihQ0A#rZn}z`5MIsXza2-9_ej>Uf`kHW$KLt|@z>LCS+HU*j_W>%k5EUCrRGhgr z403nsH&|A2@+$O%D(SyWNqh~$2U=Kz)QH%4in3e#`RddEDn~3{ul@tZ^et#KmOwG+ zL&+H56$2nc;iEDagKXpQRl&SNh&d_kZ9n8*2C73J*sBRJ0Wg*ay7vMnQO8FPF7JRX z1~&r@)84l<)T8$f$PTH0*qZq175cf~`*ZEC`CEm!0H}Pa#HW>i)!sfj@w6t3ufrAw zMwn0tfb%bPpaH;R*LTlBGeL*nI~Q!9ICbPy*sqImmBcQ)CHC)0&Audx(~=HrVN0B+ z1^7+H+LIzOg{??2aFr#jNr8?|h=D2W)#v`GpMtx`sP|?R>@WSTjK5rUiaqy)$*_t^ z8!_hsPv)NNQ8Eu`tSTVRuKI&D!<%&;UV^j1`=0AyIY46*tKrG|tLlR0br^7zC_lHc zhpGcX#d9Uy4FKnjzCR_Lxj}Km#2Qupwirjz9BthG;w9ZHy9?qnlid0Ccc{Wggg)u0 zaDamd1=$eC1IB(uFp;QPYDX|0cutUx^9(UsU?_=f`6%FlY;2gPu>4O@%a?*Hw$f8^ zk>aZ^$-3p|hif^qoH$$KE_Ernrt9+`CgW9P;DlS5>-a}af=+QES%qSo?h1^6{@KB9 z|NRpHLqr;)M|h~MKt3#xp5?TjocM?JfL(`s{TzSqOcqBw3z*gPqx?C7slYq7=gYvA zjlL-uZSR9d9|O%%F-R#v-`aTfE*ya7Jao}n!%r^-VSsHo3LGP+A=Kan3jb96 zChDgUj{pS1!a|OqtS+dtV8|nf5=kB3+J`fKufm>c4dDR2JN-p$pF&Bw`frJUuPF5J`){pezfV3n>!o5SND*5TX-N4@Q*; zNJM<2g}r8^jK;yd^@hW7@W?PuTeyt?l@ciC1TzsEXup|kp(}v;ehXI9vY^PPTtHpj z?#((Gw=<3(zme#w1&1GUDcM1whGg6LT=o+^y6n?C@mPi)xyJZw+92bg1ll6P`5m;DZ!F_|BtE%X}B+ikR`dj2qS;zYS5&&WWX z^^X_i&o(bd;)sT>` zEnn$aj>RI8be+tCSf{zhEmqEs?}AkmFZ8-Y28BgtBF{@H8WT>A2<^Xs4m1`LT4OD{ z0d+a{oI}=zOP#KQ?PrTyYo{e?%(#scPYjMrGvwVn#dgnp=5GP_4z=m4&{)sW91Wlg z7V-A8%O+=wm;YQNTxj*-JKZn2z-Vhw%O)N1zVdY5m_5$N*kXrRi}0~PM#{dK6;tEl zfW%||d$n9ZHe3(b#?LvVnlCEg-=3_$w(=~aF%4#u{fu&tGP8wLiO=*|8WLREa4yMc z9gm3qlZsZNDBl^?d*`q4U??$@iFx$XCtT);?xM-#fLkiPrYxMbcyYl!kt)YYE*r>+ z^S2s}c&y>ySY?3)LQJ*voU@Y~SlQQRo&-T{71Fv26xs3QD|jDhEo#LOtIDjiQ zW_NgW_^>_ajPiln%%{Rwnopz;Wl3i@G^9r-PIL(KijNeId|3-O!e=JmUgD@^2{#|Vp(W^ek)YiB zTENwl|CY6p=3nw_ncDWl``SY+b!*_>%0=GoM(TasrNBkQdw+Jm--+Sh4aN=@YQ2@C z9gVCeixUgzN#b&&#oA)&erQv|2`I-=R90zx@T8fZ|1(b*rYQYoR{Vb3{n?F=vvvD9 zY&;UzS-u-qRBIk!)w!6g*2k4acC)diKmeCrxf9G|)Trm@rd@n=+-*kf_o)_DkINyA zp?;=`*l9b#r7RmmT;fxb;0Ld+2k!|rJm2RUdg;MxJ;RGHOGz2|a*&MU^siuShb;+w z8wAPLCB@c#>)+DIWo=EuUj;i5(7rccd%rh;5n5M?k3D^SAlK(TwVD-yb!}gTF&CoC z|8!n;eJ$5CmJxmLw<~A(X|ug!*D;R_OwT%%t|)}c#hu%Hxu4f;i%0SEkNC#Vkm8X`3=`sA${|mQ<=fB%1!rQ$OL+xdgSrVU@+ltucEU! z1N#b190>qT7Y*Cw4W3a~R+sqdn7O*W+;lw*hO&n;fn1%RUr*vciBuCp4sB@MSN9VQ0sd7 z-ChNA>yZ5qr#F>5L&oxoPkI$?M`OBbGDTBMt*^uLhTB3c&#qhWUW3(UR-Usf`=U!# zzuZb~r6$tSIs?0Q2DtS`I)gl_k8O^B;m8s*&Qefx%dRuQ+_z3FRNmIC`hwS8{gP~! zYdV={x@$czLzA-nNGMQ=xi+_n{`PcSFAVMxuiyNQoqm_~#nHmfscrm+%r@5)at6N< zl;?BN8y5yC=rJ27G6y`uUN9ERAsr_JYCVZQ1^>I3_-1lks^&w=JtWpw3~jfH=x9jI zS#mXZw#C*|M>N;#q_Qy7-V|C_mY<4K|A8MMf9yr=B~!b6F=`CoS52d0&YO=F`zIgi zJ)<2TV^X`;u6KBNw$5tUEr(C zN6S24M>N~igT!X91dpfn;e3T;75tXJRL|bm26@WB1Ot3eY=Trij zslIPxYDey97?8UamX&FR#hEI{eicbc;5P{cv;&Tcgm~9f@46lhq+S}iA3xW*eM7%9 z;#-ULOSMd;$I;BM>XvcavnDhZW!D96zW(_}I!-^vo1^RMHRf=49vxvJl7fGn;m9~& zCypBrKU8P7SF~CD+zs6Iux=Jv{bs%~xOw>5k&7s9v6wX7-YTAbx3Ym;#LKE4-*}pT z^Cy!K&+izEvJ9%k3ccvjqB$x6np2bFHcr(sU8t9_NfG|}`Vg1t>U(FGvig{ej$XiJ zn%58O=*Z+7R-KLByGJiZ803yt)`*LfDeCv!iac>va_~WE>85wi<^FWG`gKAQII5&9 zb*%~BOvUR+x>`o>@4hbHqi;DuJ+%8!?#wIi>KdIduaiCX%TxBcW2H81nwitIHw%WJ zh5fOgRPC@hJ6y$`J+;<=Gyg&1$x>GG0&nJ6J)D2NNm)$yEl0#tyPglQ2)pSjXVa&~ zPXr4)hzb53BU-hql8M!HDkop5&Dp)#z5br2fuF19SzyiYN5rQsHEZTr#4juP-+y%Drn92y z(P3%81j)F8Ztbx8mqNJ;yTNO@>`@KzxqnWdx2XCuB62iV^zE~~;vf5*Z!$Eo5KyD1 zr$_RlN84uxZsaMSt zvs$WDyC(_;;sv|}E+jh}SZa{MFwm1iz0mTsP!EN&E8 zqlzKJ&E}{dY{UZ>r8w=$FjvrDYcWQN?ghzi)0PI!)=N{PN1LX93?qr#f@?3E*}ePZ za4x~tf<6l~PrGmmHiJQxUIYRQ1diy?ghYLm0^(B00dC=x@4)m0iZRr$k3%!1lPz`} z+6!^;o?L)h%w{l|lP}`<`Gv=v8s*sbo#oD+XKJhsY(^XrClV6Z&P8v9(=?Dy$tWLt zS}V_^#Qe}x-R;n|(ELNQBmIX3-5{;~lggipC$;)fv;?}pV;GcgoE?1y%_|I8o`H-U z`S)n^c9|`LqoHvt1R?s-zXf3wAA|UT5J-6sO~Xl9Kf!O^e?!a`o+USl%)d!-*!Jj> z@es+iJF`*MfUCo$kmT$)Ol<-3O+wiTzluk9qCfo)HbEa>Bg95^8i zn_n<{{9C`JLMealf3^13QCY6v*6>3~h%|yogMgGsDhLt}NOuT`N+T_eg3>&6qjX7w zBHaQ~QW659geXX-fPjeay50MCzH`PnV|?#7#<%}*>r;1J_qEoVYt1>oH9>ihcemwH zn1EwPMAz2TBTfVAMz8M6m#di5DG1Nc{8-XFCH|ZcGOtw^6L z8>5p#Yt(?VVC|Fd%@iU9ceC^kr4iEu%ulAS;Qv4cfq)EkExf zQ_~2|Z=wQfHk2Q5?^2%3RhY{0-fgCZL8ZTRzu9nLH;%nWkW#Sg;;u5Eo_PEwbLXP* zXRT>2z9WGeog55XGvg`MT`7`{u4g1EO4bTfQhv`E8{;o1%XY8E$KXA#?<8i0d>B-|wUr|NC)H@j1c zv(Y)t75qE#SJ>9Fw6$^>VzN}UWuLRN_pwQo-YrcrJqmr}@=^V*yzJfnwjbA%vNesa zWeJR)dhSL_yFDN|m-U3ekL(p1IbQ?~LLeFAd3Zq1W$$v|7J>&?v&L2raa+^-@8J5t z(O~jAs*I=pN&?rDNiMCF(Jr22|G^9QwT!RR)0n<2$I`mozd#Zkcq47q$US39AfDEP zWI5MkEJ?9vQ~oIhH4TpDJWE)G`(EzCcZ_I|2N{A@A#~SU4DPypOF(DDLH(tb0xJUX z$3w<|p$bL$0j0&Fvj!j+#6b);i>F_O3g;KUwKdt)i>u(8xyOaQJeN3B`I+VV(=!X@ zu~R!|`^wwc2{)94-w^i}x>+1~#kmibN7}#fU>Qpnti8FC=he#DaZ|P_tSM)o{_zFA5!dI_4y;#U|KInG@}O)&-X$w>K#=XRb6`TW)}175{u6@a!-0n=vBdgl&fd4991rZ8dL;1;Ehnox?6_;$UMyVw z%xLls7iRXyp0N~drkzIh)yjX5nK&ko&=16beHBV@+oGoN)m1n(RGhHJmM(@CX&6lZ6N&ESih*zo6Q zG5%~;63cY8k7A)3 z3f=4^(_~}W-K$#0Djqa$&{a4JxoIMOu2xMvPUBEiisoTIYuZ3&zW`9t9k!by-Nq@y zs32y>R(u(=cR#k*A*<5JOr92D+n$nq6^1{Pz{ZZRwaeK@ULUAKi8sT6gjn!!W#FF3 zq!(2B+0VU-7OhNLl`ecz+oZ+2+B@H#ow$KB>O3xMC`XPvHzwB!P7D-gK1Si1^R#{! z-I6|wa9bx=r6=PW+Vh@Q3K~9oVR6~Qd+c0Noo^_V1F>Y;v2UGc=7-A)&5Rcre=J&$ z949Ad^EeQWgjZZ_u#&p5w%8rvGuTs{L=pfZ_TwL5@3f9x8QXqmK0OevFTMw;;t2HXQN>7ZIB&%NJKZ z-4Nbr4m$H*G@cLJKltKYt?c91p|Ooj)i`Y2;EvuKFFYfIZ_jk;q_C*Cgns8xlC3Pr zG0#s;{_JJa{A6m??cGYj8BHI(;1{M^`c`_}7~6u%>npbspT+vQzij!&c)%h#Gh-qX(JdBQK6}Hn zEQ7Dv8oQ_1+Tk8x*V@Q@sj52=)VlS9*|g(<3C5?VFaHOoc~bQ z%R&$)tybGf4ONdhGpUZO=RwiGOiZ=BOH|I2Wd(9Xv`iyMno7(E&DMC3tSQL z_VaA`dmqqOiPxK*Vw0Zr`Wd8A#ACnm+NXwM2)>H_{zoA;v>2Qx;#nx$;opu`d=K$& zg4eL#@;wb&J_CNcvXkvKea0PnNfALfpJ-S*HCQ)Y%|I=U^((hJKrZZPF6|o2YZV|c z#J(k-Te|9&p*wsoeID5 z$scLkCzn9yL|?!ty~zlpW+j30QYAL2ZTlYXqHm$Bx>6C2KG(g`I2((;&sTObD)jh1 zd2Lq^W8{#VkCM#u?3gfTF(hoP4^+=0OYy37(vL2qMREHm2BJXm&bQ;!AInR7(tdqs zOC>3=+Zr8%+f0KSH$$?0)+utzLKxl(2mqM@k%L0yx&hXstX7PkXO{Jr-8hm9uzB@T zG3D`80po2sYYykOV_nmxr^72ttV*}ymf7&)mByo_@lQVF+-G~p)=1RakGK0C?PU%I zrigkMOg}N*hbJKoNPRUjDLsvXjJ6FAr%AfC^-t)$~^riaa z%#fLUW5Pmv#V8ZCS)RvPHUqObeqAM6OaWUw!FWnI%TW&-B0vKXC=?m@0vF&}HexbR zR~8MENiEF9VMo3A^jt7V@~Ia4f@O)^fm>``YzER>XOQr~ML~&x#~URE^et}3bVoAZ z8&@d(Pp_c8*j^e_FS;3T)@DXno~}&(!gt8e>*&58w^B;??A|*=>Sm?u_$KR5zLpFX zYl;ylb@+X;>*E_`M!~ssO1aTXvF4eZiIx!WT1H}Bp!(%=DlJ(Ur#qLstdemY$F-`+ zhNxR08RZrXF)UUIx3|lnKjyG$2USnJ?LEBISoCQsUQ1a2VRti^O#Hda4NU`R4Z@iz zda~n?1i``c6aK>?^CQWM_YY0%b4PWCr_K6~%C|dYaLGgCGe{)3mhoD?OzJb={8pEC zw>LcgnsmWT|7;B8(XbP(a)9p#f-YsU;izxC`o;z>6M zE6r?7F1xagbz7FIFXn1}pSe~dQ>dH^c#5KbANfTua?wjn)A^jV~I+ytAk~8_*jZcS#tje0nRvP}F^3CVq*cDW0-!=zEXaaWjf z*8a%tLAiVE2wsW1IF6KAvVW=BWLJR_*YFofa>$}dfwCWv_#WoHQx3~uY!yKF6pUMM zcy%i4rwi1div{l16`3WU)Jt*}l~B~5OR<=J_6|Rbit+i`0jp|m&t|>kK|aP^N{rLT z%dhe_yhL+#Ur3O7fUe|2nA--L0tiYm@2Xig!rW7Ca#prRVI)48B9JKOr#g(4RZPmGGK2=<{>k z1b4EAEWI9Hz8tag(oKBD=V1IffxFC}@L4K@Lm-H8x~9Hd_FyVNbKW2XTVQzjCHM0$ z=$6)1cHeGxZoJ&Hj`Wq7#`J!Y^%vxIoQ2-Q<7eC-ES&3n0a64sCcU8$5-)ugY^dbo zO{W>Detv=IP@t-M(L0zt-(@abT~{{znToh<=Q*!}OV*6>b5FmqyuDy3%v;H)LPJ!? zvO>Ee^w3X#mlC$%<%o%^Ef$H7IUQ?Zw#gL=-@*8$u>^DF!v0NV5Xj0R_z&084h&}#Ht*= zhJx_XH_z5J(F1o3C7EK3d!|Zy$%9+k`3XDSX4vVTD&#M|#7u=-r!Pk|s&(ZLrs>lV zHrCW&f7MATu@OIm0+BoYZa!`lJVEEzC#d9KIk_!<(cKFtBD;qf{^}DdhqiiWAS9Ol zEcAR=q4HS<9qD_FZl+cjSD5ewFPp~|*qMADkmLPc^FHJm`>xCqaZe>E5g%VO|EwfUX(K~V4@0k(=UqSjkD16Bjik?@G4qop@~ju?gwn0B zh}T}}wpX0Iz3Gzldf?|Ufl5C%i{1#Di_@j@iUnz@y7{zJhDW01{Ib;)v%!|0hY$J^ zppDA7sx;T4S$lXR|0MmDB736Gq{qvIHM;72FkL%WuFndx5!(nsz97v}7A9W-YB&q} zW}gI4U}jeU#tP^?ryn9CizMR9%y&Sk1tG%mW?cql8mKY;8kz$I5b0(k){Ca|zU|=9 zE9&U0qL7#CpHLZ?XHUS(CFkrDJvMPY>b4P`tkF|a%;2OP+T?f`nj3a{?AfLbdwpSM9KWFGvfWMI-s zr`5R1>Ks!2SiFnxw2q*;(v7qVp=tLO&S;nF?&HK(1|_$i!3bBkhfQiP*?qG_>Qb_2 z2zl?l=7}8O=@Pya>q2}xRGG@O@@o>AqQKoPH%serO7%5&;s(wii5crcKFftcucI5~ zz@iIL&V#Wo#1`lwP-U&pHJSI2K)hfCD)L_o7Z9Gu15(~wXd%Nf5&cE_Krf?DNNmnW z2qE+gWk`I3d5|_3=L!HNegZr^JcLWUv-axEBO<0JF4q~JzNm;Hs(bZO{-R73+h{|C zP3LIdu->3DeMoZb^P*kNmv^e%+*l`X#<{;#5YS#Aqb`oZDk}88sz>Bs6as)FbUW#Q zMTw2_f_c}fkd5(D8fgA6B)6@n3T;bgYN=6L{+GFt>`#X3!<73swSxka&Ru$CTHO{?Zl1dq zZL4>+^f=Mzt2RNG``6-+=nwA*%!?n7bGNb+Z%dL(0q%$PL79dIVE@>GAv8u9|H4Iq z;)AM>lzBHXA|wWiO-jTBUpwn0)lvkz+`ZnTU!3BHkbeH?E01>}H-Ka*y7Lw*zL-#E zZ6zD``v4;2qm?7yX{f0}FixRuY+vq2UEY_yo|a zoT4JGogZ`H2;DL4`9W8&N z9I_R*9n*V`6~UT8kbfRVXw?nFfWCo+61M+1yw?CPnEemadv;Qb_!KcG#$7GRjWI7f z=InrLE1_#2!z!Zs2U0`_te8I0@}lvk`qy)6wETO^`jdD1M7@|85(mm`mMC*qdn>c| z7TJO@oZ5jHxW%-f3X5`V+1E$3&o0k_;gDl)f4|V&d{S0c7RAs5uVO_fxde*s1@Fk&;sXU4Qre_ zOum5wR}zHJV5H!@4I0 zS9%$rJjC=141TpEz6hpoLrg(Uq+lL|^{$}WVA@Qu6=cpB^k3bLf;^~^gz1|9p_{k} zm|bphmit$-G=ElaQB5-_dy~Ns6KF0L_(qdlZqfZpyr6@~#SFXoi6Lv*VKdzgoLp+v z7Ug!o6D;Z`QNrrRjCYqo*t`uHiAILM;o282qOgn7k7Bya5T};c!0$=intim!hmxLr zX<`yeBg;iRX~_}qTVC>L+m-MRm-Er0T3B1-Mfpx zVbw&n$g&M07LJu=Z?(?^Z)1PSQ2;`P2=*cI0|D=V z`htyuKq9_lxU2kENGe9^m;l6R5Uvx2Y5ddCd$+}q`B~5eLjeER2yO;9X?ddjBEmj7 z%U_QI=aLtN+u8yxEEwI~`?sWQn#HBnDvQO4KA1MK7Fm!IrnC?wWj;(2R9wh4HFW(< zLP%RaghpHvVQ&3$)^C{pI0S+N>II{VdaL~9-zf`+@zxQt8GuIN~;@1)aU5RCm#sTz#2Fq`Z zwg#D=Tw?KMUHVM2T+(N8xOy9EW9LS1g=Sa1{K{wEu>H9GhU^TAl?gyJM7-`VP~(9P;d3>5{nNJ#F>i>%50ku2r}OMIZD*RKjoyl*D1~$ z9mGGDSW@*QFkbR^s(yw$Egdn_?CrsT=)Cb1j16V~u{E}X69Gk3SipK@UC@{PX_-!Z zU%$cDQZ>n`mcW_uOFA+JxS_Hb%X7<2be8ZN;=bCg6X;!d8s$h zc(6k=^OMz*#YqjCQM|5XNW`d-7k@acpS}CVC2{>)v7ZB5$n;7?iGfU7u!(W(rNTaA zlRGJ3oGfI^0D~}CgI&E()3>h0C#l990*v`oi`?>awu&v9djLSUr@Nr z5IlNYP5~SVB1m)nwcWV_>Q{@7KiEVt@{Ubl@L*7YF6!d@1w)xRt08lv(g88q$@|Mv zZ&Mufx;O8Z-^u!gsrVY}Jgd@sz+pJnMwDoBrlc>Ql4#}qsE-KG5>dwQmb(DET;p8g z4SkVMkW;7B*xVHygsLj1k}+isG?7TKieb6BxA2aTI$WGb6jzs(^nvV)EoXN-3I9wx z^58OTmxrzImF@(20c`i_t9^HWR>McKYei%hGInnFgk!@s`bOmcq^dEC{m ztYjw0gKIF>C#~0TBAxH*&w^A7@*!+u5jts&+*Otd#X-zeWzIR_WP>X7*PRZvZ+lh} z_}-Gj7wo?g@SPnmM|5@nK=P_~ugrsaOaP1qMPA!~xKeeib?E*zC9X~#9(^G%b?XCA zHCyJ*jUMZ4e7EM8QB`aEfmuQu_e#FN2hB#(<=acXvi0ZC-9_odAEuebW=k_uLmE7IQx1F(ALEmN%chKr}Vb+-?Ld%NVB0m4mGpFGq&r zCtM+y1!r2qdo*os8eG098NaK!#RS;hhNpRlEy5+<<_C>DwACcx{<@U*MUS5~kJW~d z6$kqHp1K|!+|05!KU`(O%28g_ktdNQC=TKw*OH4+;$eI;LC5(lCFtZUWiELtFM5HU z*jwQ3M$JgcG0mIB(PPWkBwrr0`T!Cb^nz^S{B7Y62|OPU&=}Mz!A1nxS2j4spu-^6 zD;-sVrWQ}V)17@%1s6YR+_ZQZ8)UiPr6E{S+}F?0Fs!#pzwN;RSR>lTv|pNl1VL&QMxqgxBc*^DYV!Z~#kY7W@~v3?lnV@b8;qo!fq*kvsqQ0|YG5e}5A` zKZ4vlu&w?F_#}9U`|n#62?YFz;H4}7%S&7W#Q*y%m{VGSLj!KHQv5GRKz9FdyW5su zzH=TqUF6U^$&ty!e@_8$UF84S>2LR zf+csHLhwJo{68O@mp<wDFtE69i$M%OG6a{a$<<&CSrdv-0J%n3D^P} zZ99Nw;-1g^=MZKbeehzUfGPu78+kc?fX^@g4!?eI=h-a0*aOzebKQaUC01 zIPSeg#OZ>_l>T1cvkZi=*&{Zz2-Oc%jSxL^&!O%Ai^}Mj?w=!w704cEMm&;L?5%A< zLUW=5#6sJkbc%)!(L88#{QYX+ULeIwC)B41qX3GR2L+@$Z!n)72Nr&ITAv|{ z$bXV`+Wa6$$uuhC;cYw(_UAmO>}C?*f|Z)zk+T=3rN3IZfm3{>b|kRz%l_S^(Wwgp z{N{I_t~@AM>QPpx60Yh>h<{=<{m$F}-Q0>PpAsc+{`4q?^3c<-zn*&=7CyBqsG_419O%>bwA$L|LHBzkZ}LB?o@R+FddULr%dRiO?rRVUBqjX|m5ZDVr5>D;L-r3}bR|uH&+joctaCs+CBNC*sydRa@?bGcw)Ym{JDYGI z*>F<+iC@K+S&f9JCm}KH#VeKm2p#@sgsIy0ZIj*BqhriT&>V;Pfh^_)UjK0z|B z_CD(-DJUALc;fhZ+fB|!CluePP9V5->lW(I&#=yxlG4%~O|EQBu7UVTP97c=>!$CN zM85qgJM{$)F?OG7>obu*4*ve_cyg!9e&Cf!#%%{;CnqPAGz=V1RKj>dPGu#9l$4ZJ zzfd==dF0iD3NIT@^54IHhN4+zY;CzyQ&Z9X9$T~LPz0o;V#b+Qk$1fg?UIuS+uqyj z1oo}-(XJ(;%~4cZisQUAS_ULXe3WXc@H>0&zu(x+cz(l{;`M_u4li%-_Wu5}(Bs8L zv9q%iH~^uGdXbWXB3qYx2U-_xgM;TbH#d_1;~2EIniz#tSp zH4oyA^$)+DL45(JU-okg=XDU&y125kf+*=Y&b3CtiM5Z9QzJ6!P$O5@I<4M-lY`?S z#UUiW;F51qs(J6;6;(#Jhi+~`RaI3(mfT51`}_OOuC9UT$={>{>DGVWUe;o3kU;Ry zc|2dNDSajM_X1q)=8fSb|ND-}t9je(0ss7~6;&o$;GZ`~cKp}Jw7e)xEd_;y$Qc-- z{QOY3XU=?u`TuTE3gw&OtLhsVpmJm`S}QCmQC@lk=$V{_1^da#2^l?oB;pWSP@u5& zL^Y!>5%{4#z(PQ5JDZ!E$;in^Y%?)%{m&pKyW9Kw@_=N$HtQl177?k5Xf7rvS5Lp@ zk9b$Iv*Ut&6pXfo%$|TG^uClw*5l3V8Ee9#qDYZLaQ1BAt5;V*Z7m!o@@40`eyC=M z)qo@(!hr!NkD#n9CPXy~B)-p0O-((TEPna28>ETJ>FJ4Y-n@xcQ1}Wu+je5!I=_HI zeHHOq1hPCVDTMrj_yB-U*~-Art+{(!-`t>_5T87P3I7P#vMK%j{Rs#N+7OHQvNGNl zUqScT52q(TGzNgZ3o2=$a9Ej-Rxcxr45<1ZOtfqobqMw$48_KtFmy99GVF%Kp!vg|IwQB%Lk; zb9QXi9K3CfOqRf7VdQ#kj$Ej=j!we(lA6PON3fA^SX9(_S{8EYdK_(Riu7A^a{SMb z&=(2awCtm*T2k8p+rSUTOvSp&_k4DOC&cyi^cL3EN?kL+nW}U3M?o!^WVeWH4Cmm0 z^0A^_2C(f`Oss+aWOM{q*yZ8F5$^$bx*QIgix(Fbmdj&gbF$&#vnzK!+%}ExUo`U0 z*H*fI{kndZ^}y{LVHFf`+Lt&vIkBaI1DFF!Zhb>T1--qB*hs{va-$hk5DG(lSBuKZ zRM!gg^W_r(FPKx}PKv+7UkJl_TBfEf43du$Wo2avP%ZG(S`8X&ySNA*{rWWqFv~4` z68icrcC+`HlDK{#AfN~{GX<_oLt3`BCEM6+EG+FMKfViqe*+N-NdX{IBk*t$XQC}E zENmn_UfpTPO}Yn)K3LgsRniZ(<}`p5oi~^!mQYnCgq4khPx4&E$rf=sfZk>V5VaIS zNtp^@UHA3&W-l+>U`yB5)*88|-tZR0$_72lQ2-!{i;6H56cmd5&k|HQKw0-j=}_7y zVDKxzRVwW4M2kP#GS{egzOA*yOKAr@7=wPZ?4JehMmNE{|XM}UcE1Jo~EzZ*Ah zphfhGbr)7vF5loxmwcS;;_A8rP#gz}ik8-9+`F3*SA(^z6MC)$D7Ex!S|46&7YEU3 z0xElcHN*P>2RTrzgt=~l94)pqXhBlc80hN8wzNpX!=zz1xuR++;@y19z_6$Jto`D|>Ixt#nZ6fcY?;fM*AQ6C4!qba`#JVD;biUIbne zXo6cDJgLDyww(mo3`CUycHN#BCNbmL_yw1ScEcK@CR^X$euge&Z&{X=zSRPnQ98H#0YXxID~Ku4?!6r%MAp;&->Yx{8F{ zss+B{{CvDy(e(alX%|6Ji@CZ^^vsnjSL&OZA{Z$rlIvcquG%gvEHHC%5dgjP`NS@) zLqvdi`{2NFA8l`*m4$?r?rsHSNEG%MOk^Y#2c_Tscu~uT#2P1Lw;3NFk5$fhhHc8| z`{pJI3Sw?ZLzATzy!)E(v2b`q#9vAij0He;&;#VO;7H|sS#$F|&Ai7m#u7S9pA+C9 zPy$}|a6BIPq>N|~6aeydh3k?!0DE-6ucEN5FZi>B^kx9fhXF0T$B!T9%*0+578WLO z61Z(VtBoOmZit+(uVj3DyqlHdbiF^*(-ZPbmo8oN-epJTjnJhh%k{`b}ujoT{bH4Q4*RbD%!a+uPd)m-N25c_3_1>!0g1dR^4E6jfC_L2TgfXa^Vq@o6_wl3?cE3k$2I2ia`+9mM~n!fuiuVPy)Y5FZ>Iz}=UP+H`mN zd$Pj5qHf5I)Caa6rR2k3$H!)0+WZl;6;V8fiI4lRVWR2_P|!!C@PV1nzhE__B;|`C zkupEtw1MN%#PoC|;tvjAfjGrMnUpK^EIFCuQTiENTxLN*3aBC#jEv|==&v!S$4q{D zzP7pwr^ot;I0a4_HV|QGHaf#@2Wh)G6qmPaY^kG}Zbn07$are!=;)a1uzW00ReQsn zG~gzz;Mv((lpn;&a?8|B_Tgw` zy`@ITy;X7r&dNeCWvGWfTM~IFd3OrHdjSy%C2;bv zWNmBogSV?T7uELet}LXo@0PjQ6J6^)WIc&*l95JjyRI zk*eIX$#d(x<*C8=!~|lZ2RBV!U0wDuggXqufP%jdH8qk+=+#i2=+-@Qj(Gk z1~2c(fQera<)B)I*t757tsu=O3=8|4aUfEUEmIX00*dSu>vM0IV0GqNUcP*pnRVok zf?a=_ih~0m!n=gHZ4O+0BZI}Oi7$H|*uB>Pr4$Owfw(&1!5|i>fTj{=H}#h?Y=~oU>oChhHPa%VQqhr-!gjMpv@Tf~(2Bs828}kdO*w5X zEg5hJWI<6eF*!lRZJP6Ch3)MDG(6qDb`sj!+q36NJnca^uJ2}MGEl?Nj*?%q+2lcJ z^Yg7Z5bYPXwlq*SAOUAJn3k%Xp9{Z9fii0LdM&etMx)74j~0^*f-dI3&^w`sq{{+E zZ%M7Zq$E5bFi?pj0p!R&Z>9kmod?2tBy?MXmy${iUJ-d(KYM49` z_}D}-8$h>?mCa!emX)F5zas!~3?W{Fq{yqH%1UjU(pRqv;cH^^^4PGl;ejIRFDWTe zEY^+J<<5s3Ut2}xtcaM{7=ZbNDEH0j6v#>~YyQn+dZ7R&sCPAfWNmF-Syjb`vM@K7 zgK6%({3dHrEG#Tp23Qom6BGJ}EkL$#J6Ja?cSn4*SiXJ#u0RwVfQn5>NEmABfgS2H z*!e)#q?DPNxiCL3gMuXPtOI0$RLH6fmT*#Gr*QG~hGzt{3;9J0&UxHy&% zTVTA+g0ir-=B!pr6;|r~zO-~Uh7z)DC=c0_l!I%xx1Hzl;uS0{FF|2Icx85aW=4rM zjtsRr_vXz+R3}owfaaFMwboR+*AXfuV3|d8xBlIt3#4z9w#U%_f3WfP({4e5 z_ogNn)g!x9_~8Xu;g|O&A!~w@44T_l+eG%E8_65%>p>EkIN486zA;(7Px}O_8$rK$ zl9XNC-KkF<_gdm&pFii~^>lM%&)2?uatcBR{i{DBFGO&X>!Zu{$DmaiMDrB23?2Pk zsB4TH?W~gG;$*J09)W?)c{M{Y;A{g5SGh`SkZ5Uu)PVR;QwMLIF&~QjEo+c*kgY8)4vSAn zcmPT92T)UI`L?#E^5093hrpG$h}4N&dz2+<46JAFDn#h6X8R~<(w!W zEQ}g$L82+_wS9j+I6Wfb>|ln3ft|KhxwlR#B#FLusjzP^fNr-9w4fnTTveTl|qM%*@&2sYZY`m@8riyh^pLDj*S*%h7CWZ*Lzpd0hl41zFtCFY9GlbiKz0 zU83@(_4Re$OtHG;d)I)8W>#%TCRkvsWk6y>;r{*OHfaa~kXG>zB(7<>YW6 z^ZN4r`yKUmrQ*TNIlB5E&x>BZ42g({X!o>!Razp8rl$i|D45(q8-6px@m=o?q!7izhDUe^;Qkme?DZc zFt3FB52`W1btCNlKXAl_;QuecL_4jWYn{`a0w6t7;A_&^)ny7h9wMl9us#(CxnaWk z56G4w8*c~oQMF26^E>s!ZII^47M*bdX%%g4ZA3Mz zdc}hY?d~oDfBmwyX1DUPx)=gHDCy1dUU|s}vDsKrNy)#dsp;L%#jP!*8tCll`37tP zjyWdt$Qo({hWVrlX#^`9+sO1Z@zbYIPd1#M1_G2}WMqUOx`=x;Bv%mgtKAHyaGt}= z1d=Vn4r%BDc~a~b4z*-=8t^6=q98%IZk(H|EZi%L-~ zNGdHamzR?Z#Cz0x8V=;U`+&tD8i@AxhsAk(QDD{t8<(Q8@>jTFWiwx_vAb`lA+mDZ zJUry*&xe2lHZesQ+Ir~SJ3@%xxwTMon?iVoxt5@)sB=gO1YlTwL&M6n0u-o|;hI|`rY$LbCIF!7sM)oxp$jEpkhQYnfM}GX%Z)fTH-kWm z(LT0cU!Su5Od}$-W@B$31Su;bj|P;onxjLk`w-nVOUJ!H*padRN_XVWW~v5AXuNy( zu6JlCBrp&MjH1Zs=!j5A@`{Mqfm}w%+qXCn#6x3ZVrCsKJU%&9<~vs&afiPLfrgOo zdRZAUQp3pjnnqrYVC|;0!$CGrtZdjcJ{9dlvtL70R1{Zw4_v5Z0R}WWg6t_4%}Q=L zGd*py*q4Os2gL*W2sU3GxUMy|R}$VKk^0R3RWY$=s9}k%W;xhgj6SCdm|{a{v|B_1 z{TK*xRqw(I1^@w)vKkjuFYIJ6lZBpwQWt{bSf4UG#W9$Xe)2g%qv8A5pt>vfFh4dM zpcN7EfhznmI~d46Q_kN5#BUT1R+*olKi3jcu7i$o3Yt&B0%CwG4c z#@GM^i0cQUG50@W!O5OYAS3_XJ^jIe{8AsvAX?qapNqa!~eMFhKEXJ_Yq zKn`qdY}#NrEG{L5(9_d1UBZ(Db{dpldOCejaIimyjD{wZMJ@zr(P!XpT=U$d*X5>$ z>w?H?qUwK;xZS_c4F3XmAJNLT=}<2*dgx1jcdJud&p%&#U8MNwXI@EHT;wjjU*RVb|aGfvO2A8?35ZTU#*^5pQ7w zHXxOMIQLx7*Oti)@NGPDVq@+$;e}8CBDA(m)0eCjo($LTla-4T_ zbN6`WAT2K`Dk4KbaV%-&FSB)6mFv?DLV!|+B}>AHHLf2kE30C;{@D${z84^Y zg9J~!&T@HYY+otpb&YTVKN<}MHEI}?d1{icc0U*S>I%`vp`)t{59PerM;-Xa?kTKC zR2zuW$|INyVxI4IcncR*3a z@AMD;D>N=^fG&3z)b*y@w0XI?h%}Iv@$K8RusC45ifU{Wzjo~!K|i8G2Mau6_iq7& zd;(R+MFv4ndSJ`8&hHb{k5UL!Mw5w~?a4nD~Ev&3^Z^bY^2Tj#Rj}0RD zZ78i^-BSTw`25{!>^8tCoL4_wMr^WfS6UFlb4YqkLV^wOFvO4t_BpKTnL}zKJk)Zt zR(6i>RgXxz#?A5U;+$5?V?eXlcbd}R9#`{wHu?S%h11LS`~}Nf?Vm7*1PgeicYscU zJW7Jg3MPoBE+Tsgiwbd+&$UdIIP_QjTk6O6Ttb z7hdG&W7#zA*xj`NtL@+Zzjm3;?d_f}9!e_mohyz|fSM8kCDm_SFdv{(;`^Imm;%|D zR@9yrV(V4=j{@_h%AQaUA-Z5emTU@hO&sLtB_C12{@JmG4no}C{?TX-xWg~z zW$fwd=7xsq3aQ^}3ko=z!JiU@t;YIZ8CEGICMo|F1Va=HK~j-WO-&8;$?*i#e}W+m zf_#Yy!e#Ub)oI_3P;GL^gnS;j-?e3E?9rN+nN;+q&_dr$+uQs4{`!}|WkoG) zZmL6b=LMhw@$W3C$jGwYJ1U`Q1=yVeRasY82&zoOkP%!K7EXkem=FbBhdIwXsg$lF zzm`GbQxfc+J1(i@YZouORHvSR)%BjEU3&nY>}SwZBS1l!MF)*4c{ExRoVFBmG-Dx2 zz{&=JwzEeN0|+^BVi+Y;Ve<)Uoc7gzXdIP=;Sv-C5cqnrF1J?G-^E%!uIYMxuDV*d z+!Eq8l!*mZ-$NL0nsDl0G**#Y%Z*D+M5C6G-qRu%q-XnIkmO2j{KE%LAD6B$UQWZ_zMctBWt08iJWAIG)sKiPBh^Me7#VqMLG z5(&gOh9PWK-@Ok|S}MfA8e36_rNA?{`>{hw?(ng~A2ke>=oMQrBvg%1B@oEPWVQZ6 z)9R?0N0XC-0yEWh2?-rv-lr1;~)?9USIYRtO=k+hFQ(>Z+xq zgF{M63h5)^&#Zc;LEkfg-v)xi0kl`>A$|mum-E4ef|O7GC^eN19>E;ghP*%x(Vc&7 zs;Y3}H!=+x_v{&dzIIq)))P9!)DyrCM8p=lI3r0I3;{HLkYJ4*?8Zj9d#0js6jQzH z=e8kER_}_BX1J7G&#k(hLZ-d_jg#gS{TZy$?lPOJShn3n45elX;b9 zL8#3z0Hc7m1qM89jiEM(g4E$F?D(BfZt%@eBgNZOq|0&6&1+tB$7-r8U_B&%2!p|}loa9GFc=~p4E7)Z4F$ZC8$$UT z{3Gfq_taCz#n#iu!rca@X5s1T=;G<^#*%ge>XL2K{n>FOcM&F%Dm z-@)bLZpWQDSmpx01>IHA&;te|ih=$j^vymgguzxmE5W68eRKEo{Mz+&?gyoIR-zWg zHI(CI-lg=(v1%)dM}4_2N}&@Mmm^EVFUE}Qvl`d@$*V_Cr(C95MvpZO_i|||TVH7l z30WH7!we{Bi2ih8_M%|o=Dc$LFrgK-n~+k#-xHv%ty)YLwxOUKFc;(zg->lAbW)*JV22TpUbw1_jKxE;c&#_Qet)!0!Kq+}k;@?BN!< z$e`gxNu$vzspgB%3!hEOV!<9s2|WMGAhhaU^Vf!hzsL$^N?}G(o zj;gK*H6c#p#=c>e0>`T$Gc&UhJ8-RD4DNOqOn5C6ak4^-fy1PE()-Pe?;oU-sU>QC zk1b(Os*FClF1ZaBnRWQHva$6{m#Nf&*G;_VZ7$csad<3xkY@cB+I+b6Ys?aBy8e<& z-QV)J`Wz-{NM0em&G&!4uoD*_UuQc;9(Z>?`}EUuBCh7O2kn1W0)%&RJ*La=e${ks zl)W;OS?vs>8qUS8f!1f}iYtv43!U{+@XY}%v|(Hnqo)1j;m_|?Ik-Q-Mht*`ohnsI z&)As|{l)S4#dplH9HBpQW>V-S&g#PJ5l>OSaa9>N4V+F$CF^KN5JBrUcIk*z;qLhQ zy#biw?n;MP7N>C(xxn)^upxa!1|~0;mX;!1yKYY~qHt)E$oOrA)3A6Zz@gkljOU42 zjb?FPPK5joN5&wY^LOr#BND#aO0To%MZu&N7e1gZw&;zTYj$Ix4m^@J@%pA$@wBek zYJTjf7+6v&Ix1d73aNSU6_fY=+)G8quvxPJtWPgy)zNjTj08+Pr{u~fnx21q_^r}F zAy3pxwQIE_K*)9?KM{*Uu+VwARd}y7T@$?X_Hr}%wN!{Cw$!a_uIIE8`h;pWAF^?y z<7Y#=yhucBVOWlk%RsJ(N3GMMAf@lxORyCLnnf~^AFmd`y=8HmCrSOiMD+9X6W)kn z;P^9SOs66=e6?6>f%s#hAelpgd~+DiH4zu3t6 zyJd$OI>)EYu5=GEFti$M#}Xz!*-t$PN5vT!6Ix9u2);%)ZgLjj^no>BZp0r?DbQGe z4feg5w{u%`YC=z4j_*XLgEK=x%+hhWmFS6~-Q4?zjHE%D5K4Z#@jl?ZI@mZ}H^1AO z*P|$E{Z4<(*?~opih8mtD=WMHS@zjncu}K91{Xi-M!Z~)rr`mRM;y3`@6UH{HBC$? zZ~k^8;`E6fwuf&fOG(P*<49h@lEqKZetgMB?B&7l{54sGXy(7i^wD8vK!3%0kNHhk zvg9?IY&3R1a6&C3Bl4TS5d`Yp8IN={Ys@6XuXjtJi+lfGBD?9-tJJ^TElJKWTIbn> zY`58M69)5Ha*N)E(Ni}#DL6ZTO@ejvVBTKs6f~mXJ;@F(ah$L3uiqcdWRFIr_JzGN z4;G>J-=zaqj|#r+oI{8%qT*qVFH=OHFjx^n#+bK8o~Yi_cAdBCay4chUcDZgSTwS;Bo_o{C;Eg>^tHJR)>LSR$zE?G5q8hfwx(`zM zJX>mZ6W*`wovbwA&h`KKE(T8jn%@q)y7ecUIEWO@zpC4yt;r4fd$s$$ih@o5Lrj^< ztBvA#E@d*tcLV$L4Ruz7*s$(Tvu3{nu3yYnC*E~|DA`zW1CGS<-es~-dZG4}ng64O zMyL3$ztQtIWWX+1n(;xjaGO?QDFP=Cg_v=%L-Dhp-!Sa*{g_3)_hX1TjY>Oy zPRFIC;V=1aCbDvJ%7OTH^xfE{NI8=Y77FeO)xg9JnOP%0mp7kDC2Q??kY@0pX_Y$N z3K-(L|E?hR4NB%bcEIOq-K7r%vHCTy70U0{UtG}M)E%gt?o14#v*d}!qr>L0!I;$r#)N)ddR>!dWQ4J9Ug z{?iK*`DALWLdWg*AU`?uD$wI$QV3%1`EJ zrg1uN!nMTWzq@pbWV^zWkBnas-ZV4TJ;Y6m}UjEgWom zG&*!jzpd1#jgDkyLFanyAfiA<3`Om*um|n;e{Xz2)Z=yEQiOgkZ^C6FI4A|_l_-%y zNd2la`0iTx^b7y-@3zD8#GUSi+5h6LdLHGV zgPf8QI;@%enaJno&vc7qke5R4@9Nn74#x5_$lW>cpZ=5WQE+_bYrshcpy+?td4o-2;)>9D^&=-?(f50eIS$OB zsdjFD1z#dPMRj{56CtC6pqt|WT#pPy!Qc-BF9t3S7PUaQO5lT8dJ!alD}+u7_DmEO zf4{3j4gS|3wN0$WHZSIN+ul-89$b0=N@*J#?tL;}>+S+N} zp{dw4t+6aRf7|n0(BABFDsD^yxAeoRHCVzm4X;`eeqIQaRgQ;;br{V(=oB?2y<4W-bzM=&yu z`hu^lvl%5;%@G{?E-1Ij`cWs>gfwtDO?CXW+KcRVKB7Q$_;lru!iUmc?cIuyCJ44x}rc&ij*5 z?nv|apSnWx@ZKmax6jBVFjy28Mb-tTO2)2!Gc9m`1-c)5fSkP z5!~uR5zTF4-mW0eRV11U3JS3VES6vu&A|F0Bs>!@9(=vW0#j^RD+bZ?a<=PlBq(1t zN|GhrxdYLl8^#CO?60C&xS5er+~;uALD3QK#$UNX7xNXsNCaJ05>ROZdA4t&X@W^9 zgq%IOKO#^45(Wlx6Y**W!RBgzwX3V-(t4M9(HGzt0HxHRGY8w=xc~HUz5x{kE4#L*ME`?-jQl4ipkgp?>sKhovVt|9lQ3p!McHo#pV`Fma>PZKjYJ8pq zkF!@m#Rd?LR?p}>uzvzG?B-{mAHZx5Z)1{2_o)b=jbv7P69MI>coJ@TQ02K@@4ejw zKo$bxIIba2Ps0!+4$P$@MB;io1iA`0kCokpqa%9Y${Pg5HQpo zvt}NdovA4bHh>Zc!b)=ub~vqGzoNh!3QbzvUkkZVOa8sIf_`f<8oZ;K5#QX;5RRf^zP=5hTm_H#2&*)3j$AK-+giEyedcN z1^~-=#K&qdNxCn>v(o0j-PIbqH(dgMLF4O0by=G15ztSST=PLGnsUN+YLxXCa_SW!joh>V)s+r0`6)`M7{Z1zb4J z9CCM@X@j2~rb{ypA*6yBdOWSd-7jfe`%L;nhw#Y|Ln6RHD^OLC$foz66jXUaFw&ho zpZpK|_UHy6U-Lrv4j{H?ch~2a;NYN26LN`wKfmR`-cNzTI@fK0EKBHDuGe=%`|lsJ z_cE&>XkXpD@erz>fR{n$F!kw$f#=V!=-_J*YwvNr#X&}p6!qMF=GVVR7fl)VqNan` zY2l;N)o+j>`k?#*vN;KWsdAs5f19i}6+7FXCjj-^;5P&FMBwuS)v;=?a12|AGr9nN zq7r!VJz?27Llsm`ZU>)cH<~w-`0rK{xJ+9MpMQJb*aM;#|N0>~eW*|wyEJL_QKbyN zT)zZNL*4UlY*5hey1SrgbXtu1`K_|Vw9Olwan9yqPO+c+b&o{b1Qw`5y%T?f3OueC zTa07<%JaGlL?wJ@7`u6AyVDi4^^VryGElh|hKy1B>~q-M%}ZEeA)u;`mVH*&@Bbd& z!!kND{{jTw3ne=!u{3(Ub6RYKPI(Hrv~Hz7XG(j8avu*;0S99QE^0;L!Oecc2!_ zuJ1SlVO$=dQ_Bz%5|Ygwr6FRB3{OP!13|Q*~AfTU%StK*{1k9=%=5G%%9}8NjN*Jn*<5L^I2tn`hW!`#kL+<$!9b zq&qhP5xOGaA!AM;vgZ<%Mx0#`z?%AC*pM+n!etTzP$0FK&+opMsMIkaGfbZmOT(b3 z$>a0euI=p{urW;bUKKNefKMMcrML@Cq_r)U#yf}A|9ZP^| zgCyWOS^V!8rM2$c%3t5>VSvNNFd{rVSQPTUt8@hMKm2%e@Fp#5#1*%Q6&V?M?qo-Q zf5j4puCR&)OKo0Nf_H@>!0BTr209z)xyCPjah25g%rF^)oQYj-@9wksnB<7#`G0#< zPNdDK{pB#z(-&2&q#+1mhQH?E*Y>j4vmJJOI*^V{5M<4kei@NAgLttwr`pAQrPvth zd9v^*-gCm}XWy46GkvMI_Yqw)b3x^z#4%=b{;E-Wt!k6XQLr5NWy}GywZD%WWckerYf9`FEv`O9E*qzfYs`Js;IrM%tKJ{Gg)>t$u*Xx0q)UY- zHgisMvvD4=W(X5=n*oj{H@dNkO<8T{ZCP8{KnfbB% z^3!6uXD`nzuY|O{GC%yXrrP?Ewap?)qt!Msti&Ni8jBV5u5Ojf(p@ezP57$Vt#7tW z(K_S}@14TMuemvc!I$;T#Z^9x+FAOKt1ov-M3r`3`}e9!8F}xAC*DZdmETmX6#K=G zyv|7{)u=Z)_7aoKS1jG1PxGaa%MQxEDtNjy5F8}uWuRSeUhZog({$iFpXQaZ->~t^ z(jj-1LtsiPEbm!Je)`>;OziYuHtOS&A*N}J#vk){7_XyQryet;-fgFuVB3na30%z1 zTHlk6g=ARg4K#^p&2OGloaV?|F2`IHl{gGGNz`39o8LXqb`my=9=3U7(m1@zbQ8JN ziffL8m45lfk!9Xshw)o%g-gtW$Coa7{2<5ru0;Hro!9MdcL)vb%!8>M0bfz&&tGJA z?H+D5B6YV@(LDNORqRw5cX{25SXS<4nfyt6a~A!7qQV6!k7nHT7X*oNykSZX_O;K? z|9P}b3C51_drL5Ki+ zR1qyDL@fOeiFX8QHT*wO0W>}`(f(bcSRx7`<7vlZooD2wnE&su@gG{Rj>9i{|NHL$ zbweKqLtopNpPcjQ$u3{(qMlb3qDIX5@yu=2=NWneyKUg~R^4 zUyOu9og10^3YD2Lt0DJPfUjibYCn>p4A`%OsB1TX@FDuPG5;Q9KB#p9$W4^hz|%yB z*MNF?))#}fyVSy;BysT+BKrYd&}fsZ-b?VGJrrB`0EbuvC<|LKc8muCD#75)lWCd-}iJc!}sbzOU+nk$S4(PW_FPo7a1!wR_Amj+FPIzV-g z?x5mOCjfR2qSCW0P_QXu`r}D9L8qr10Ey_U(;WyfOM{Z5s%a$-ptOL88vijAQgD$C z01tXWUd4-LOyX$+tqYKH*Fbjc6Iu-n2kd*9cpE4z63F;b0HERml$SGkh?W)}L=Ztd z7){76FX(Dv!XVzf&SOVCfn4ArRG|a<#Wa%T-=a=PUg%&XvP#em~@gop-%7&s`q z!Jf3Zzq2ad*suf{i3CEO5PLa#2`J7N`wO2iB>c}}u+WOne$C>*jzFuT8T-Gt{uF#! zPu%phHq=>HGmQ1L8&k^prfe?gMsq@<=&t3U$cX8 zMC_X2KmoroxL(CWaS7|*=#Nj0S9X994X_SIw2#zqh#7#YV%NFM?>|DM1-{Yrl&l@)XNCi)zmLLa}5Gq7EfxTzm zzJd732D^y?P}WZv1(VKww8vuyhiQE=gIH)N5TXynuj;?^2BEZ0I$pM1<2w?Da;1u$pQvvHf zqm;F zFtqR>LwueEOnQho8Rcrj1XKv+-_wHoXJ@-p4!s&Vf>=^_XF4MqfIWl3AY%iYLfB@y zR~U}n6U&kx1L}>n#zp5|!0*B`s9ZY%k%<5UeHj~$;J1JUj+lEX!5|YOR%}Oa{r5<< zFZkp9_!%f{AUaQ8T^+kzJumK^&fD^c7I21^;YgKLa8Twv&}^i72MA2`RRD({vJ?dJ z0d^)FB3(hT*AD=&1u4qk^O}%#U{8Mt^BJu|sZgL3u*Se3;pzju5!EhGjEMgR>|X(s zd$M47%&wDSSy|cBdh1w+*MQ~nS1tiX>m}%N{Ug_*8XOb~n(wrkOgzQ}e9xv7B%*OB zzeP<@$^u|1^8V_D%;Q2wCYj&N6g7IMZHJu@<*C+H`LvE66^{?16@xuKl7SWw zjdSOf?PHgfrL!A|+=L*xpz~4;Ak!Z^Oe2AIQP!~t7Vxb{yGs^Z@KD4+4*M(&I%SVx zrdMkqk|HaJC*>E6K0WVmr1x77MZ^ZR17!-YN%^Z8KdeJ4Dr2;~0A=#R5~bz= zZsUhTwwnff^v?Zj+UC1M_NW{#MYY4zxHQgo__`BN6V$|aJyK@l;X@~EeFBPzmOC_$ zl^F8c-Y3)eC@iHfs3~>T^%@lKWn^LmK}6qG7&68hC3BZuj>?TlPBGw@flZD(70*yq zh5*LtgGmcMFeK1vMuzAJ5X>;*mT3Uf&xN};mbPhms6%6N*np1raFN}I--bpsvq`-k zKdldP+=2p^>*b{u52t=mcuhuh0V7S~wHmNL_lIHAd$KHEyX})+!BI-ITQCFP5pdya z8QK+fSB5oor=mO$Cyupq>KIx`Ptu_Wb7jAmt4@y71EY>+SmPmsf8=u}pHIHAth zZb7G_Us&Eh4cd1PRQW>MpRWUsP{zT*p~nuKV>58qI=cyK%Am6;YMmpTd?>je;LS1A zd6mLPsZ*X<7p%-4ImR>n^bv2s58uWogs6A0EfH4962!nm6RAF!0V1D16%F*5ste^l zVxi)_Pp_*QY5bM_0B#`g%a*=%I0v2TWJ7nyVsG`q`bc~YDSB57?d?}PMJMy~#q4p3 zKPEu?KnBb~{jyy>Pt+IGjetn8Lt=Q1AsjO#NGXtzN_WLOq7eVZSHy9m}i)g7?n(xsX|)6640Y#fFr0wdj<3*uT!fKq3XN-8dy6 z2_FKUuNSmpk|5s%&L|zfgN98X;~_3I9o&sw!4jxdFk-_vV%z(XGqPC$nF7~jHSB#S zTSXeH%KU+9{p!;LiNAox-2jCn39VXfMaK`>z=2ZBxoUQY2h4%n<=ewy`n}`U6`leW zOYi=WEvu><`Z1wpxdptfxXjdhFSf6HxP`2`h$9+fP&E{$Ak;*`cTV8q%0$m0{BEvQ z^kwZq=7e_!hf0Z~SWHEgE*lq|^ycI>jGaVjAW^Ntc0aDzOHXIjAj36yNvL8^v*eka z594%ach3S7^7%TN;G`u_fQ1q+l4gFVjZn*PHp@12{sS`WI7X?IN6rnktv8g>n#d8> zL?*FlSP#e@ zfkY3$hIqCdoDvxRE1lm@I4130YnCCq+6bCO3i+*kx+?cetmU9;OA;!Sd6oacxl=*N zPoU>l;z6C{@urCudH#SW36`%D8w>M6uR*>&Yjo zqsurKVCd{#TsOyjU2Qx>bhyZhyuRK?Q!blGWL@1lSe+ckBkqi zEwP$EB&#EM(j)Vd6sc>_B z50pZ|U9jjbQ{;uAl9g$QvzK>$yvpRLoRrt#?HK79LvoFKF1|bR9pRAnHUfp;gDu{E z_E4lnWQ_PYHjW(krq-Wy>p_{#vimhQKHj0XvZN5>)R2JtaT(Yt=?hskf}EHmT4%u@ zaf(8Fn$?((-D|5g%MopLrbdR?(b}kzY8Q(h&1dW-xa^02aBSA;t8Bl0^WdT`ZP7ocktU2) zm6)+O`b9(C~EGkb9WFKBUyQ3x*F+5Tf5&ls4SGWJWcc4)8f)jJGkyiG+ zDKnWD1{hlqm3f#2i5i|Kt^S-s+m&V=(O=%Mac5yDDoi6yM zihRf0x9R4pw1t1lhL+e=V`PETde_gt?OQdWv!3pkXJq5%u%@>upRMuaoUZ4;Ovs~} zL^3`xVujB;+TyDIoXRU4mC{*}vt8Lckb00d^X-*G_}VvE7745{<8-rATFp*^*o-BY zJ#WQztI(8{dmXP4B|Ei4P$H~wgp~nl^I5l!gy?(P}VkZBOZEv<7i|1j)0z#7rRDLc?W9IR!g5sg+io^&dO^} z9eolOkL8$>9CMXAjjnyBU4OjjDn1nwMOU-psjKHI*rzFb@KqtUICzZO~UW2oht-HdEx--$}v5k$TO?{=s z3@8?)kx?C)Dz)=qIC1qs+eHr}*AY>+eh6Sb|M(?5LbOO*U=-e3?`5TJuaL&ELlN`4xs4YlfOD4rQE=MsHIW7%@I52Rz5= z4ZY>ZyRMKGHHn?Xld`K)n{oFq)V8pWvwL5@C9m$?Bk3#Fc42QoIQty0bV70Zkd<;JP8#FiC!3CU{T{-%U&g*abMOC1l6jw0`Ot6R;T0H!`Oh2CR^+x6+IZBR_ZY%<=92ij zv1Q^C$Qr$o{IC@>aCGo%DhD6pE(Y(W(T?bDQ;bbZR%bimmH}5*Z_aD36??aN`P+v( z=CyOshP%IotgoD@&ggaJ&-ol- ztO8s5NayZUlwjLX^v3if%VG-sdEaNnnlkRGl^W$zO8VTU#6*O{iEiSNJYR;f5^}vT z-f){lhk(}a(%UMMYqu} zg$d0zbEOl=RjsCYSem|1N(qY>;6!H!>)uVcmaypwc!aK3^_ntLs>Z$yp}xceUh1a; zI&n=-MAt+~T7fjGnw`CsM#b)8iGzGy56L=b`082*GKE>n{Rxn-gQ$dupEu(dNf`14 zJ!-Gh+ItcXZ(m_`urcebl0P7zmBW@Aov8V^!T0XH-}`;%>0xH$g6XpjZTliWq7UMF z2ZImweibvdn$EJmK~rYxVv*qwPXPzAqVBgM+4sH@Jc@$m5zxr;w(s}Vgftsu6i}rX^6H#q$Eh7Xq9!)SYvcY(sEW}wDMRk zR=pgfZ72%km;FZddN$g9VR`IE#aHbL#&~*PhpjN}x7&+m%haUI?zqRnWFo_r=D&kE zXP8MMLOnT0zgsN5C&8nmdjcpy&^20z)F42~0<}ybB5RP+1Jk*A9fi`Z4==wL@d@C# zfT}DJQV9Sq4@hX?UBP#gEgp7s>#?%%@d0plyg5Xtx$4sxA3qlOHMD+Wj>*c`3A|9W z@;o-z%DgV}B0^gri_0Zo~)22LtJl(`FYLcs&N&quA^2X9WUK>f+< zyd>OyHm%YO6bPo#sG)!k*eFd`hXlt~1wlY{^%|(>Aie=e)uwcOWgL64$r0)sZu!sg z+x}M5bIO~T7<79gG50ohXfM_DpE+LFi0JM z2~j+kTO81j=_(`&b7GpvEQwbPc2&1MFMm?QP)f`YUd8Y#3191dZ@V zQ@W!;l6xQ_Zo$@w(Jp;qu6L2bHp)z}cvs}8mx8FfYkWe_1K4?RGU-H+cowi>fGFfH z1k0}Obpgs=7^Li)*#QJbG!eUgVRJJns0%$PR~}ZrocIsTNOnpf+Owc(yZQSi&mjt3 zHm|0j8c``0|$$RCYjSsy+64E5+q%zP0*$CgDtiSiLg;MqVq zMDuS`_5!l)8L2!+Le5d&qgIy+I|hZAzvr)09BIY9zCw6neJac6qhTzhUx8#n|L9sk zI`CuD=0>?Je0(J8^)mwM8UTgKAdn{l?cPg&pumNNR#vx;c=^i2AfF8pYw`lZ_p4lv zbRSSz@;FR0LjC8HtzlsxveOA(3BGZfT}OBZ#K(~4pkYEX9<=R?fG`OXYC(J|7(KuR zYQ1AZh*3>NA$g+ook04Ld+FcWVqk0sst`v!vT}+Wq#(-&`m)s^CIJ~7M1mKF-2c4< zD$66FT`d6;-rbqEIPwXksVD6-M-dg_6;8}c)oIi}nJe|WF&?4O(aD2*lp`^XNLLqq zF*=t6 z&+jLHJQEnEm(jYPZ)r?4^wS9<-q%rO{i#U&Oi!Id3U~wn2*6_SQG_p<4b|rZ=&ifz z-oV$P7fVx$vM0-krsT$-thtAFPS&DpAwW&E-zm#U(M1K_!OydBQLLC2WKJ0nJ|CzS zJz>D@7>?TiS!9%xF8N3GRl zUrFfTyr5EzdGER=9V2nMLga;JU0ZUE#?EmVuho^7N%bM?wqE32-7jQ-ag!=qOFIwI za1FU4m3^XS-8G-CX4jXe?XnHa5Xv_e)mAFRI6_~B>G`6|GyPR_ghU`dA)ODOGN+)m zkHo8>e)f4B0X3wegg<9AQuSP-i64(`d=Qan!-I9}&SU!T@17K6-|E+}^*_qkQms>u zmz6V(nvRJ@0XLrFt9#tf)~J)O`TWf|Ql?GA6BUXnZTtJR`6SnkfjhstaE?YgM7#`T z{m|60hw1=g7`}XfQWJ`{a?DR)HZxtT<4DovJo&HzJE+G|#sn_lP7(cqe#};f_rXwm z9;2V`80GRdi}L5p7{@0uGefws#EGmOZ#nV5mdbs;R!M2-HzJP4EMg)K)viQf?qOvx zCgss8cZn~5xSaJ&s7rJ%A0b1rGfzoFiUTwrBVJCDeZ)kirB$b*ta#7*P7Kk3U1RrW zCKf$0a%N&HS_Cfp!s8cgKW5)GX!GLiX-<<7sDUHb%5iKi{?7A3%*C1}jr{rYLP$*v zUjt!Bq*iM1k4FjD>5-PL+RwM+GCEjfe&04*5|grm=3gAaVV+k-YnY9$(_xcon7wZJ zIDhwe1g9gbl9Gh&)0VVM>j$aLG%OR3HgfyZEh)B4&a%o0N# znU+VIhnD?-0WSnQ<;{0FszY4;nC`or?p9o-YpPJRB3e;w{xnGj(2}I690s&g5f&di zGP?;IAC9x=!4%RQ;z-6v^WtH}LB;DTB=7}go{CE)n$n_p{k69YSZ}@y$Phv`VPQnq zDPI}OGf|%FX7h#~IG-}eJVO(oRc%ZUk|bjg6@&+f2!jGa`TYXQSK1i|xnx#ML9)sB8AK zNGvzI7slEWLG1{mM#oqnV_yfoN^~Pi1wa7>i2G77kv#Z-hROHD&ly*Kb81PhP(fNi4)&$zs|wP46u5wDi{; z;-ZS(aPOZ~zq)zO5Yjse(ZQW_wu%JwZm;xdtszu&=Hmk3EUWcE73((42-lKJgk6UY0DD{s!hd!1;GmjZc z6I8%+Zrx*sM0t=JE}Xbu0MI2Ur4w8uX5&rSfhTr+^-e@CCzweGXNh0dtG@o6b+jD_ z8Zyf~@aeT-k?0p)pW=G zmPjsFmA0=xugr%1Mgk88jp1$W?BoOs`TSl=n1H67UIS@X=iPLO|-Hw4t)5%`+r#pT?INO~oOJF`CiO_D}?#FxV*2qo5jX) zu@MVO@SzBZK*88n*nbQJ6rKth1-d<5$e!4}*vf}Vd^0&ShPEv02PPIPfhyD zbnR671m)B1BYsSMR(-eqJgVQrdu%xLb}`_?wAV=sT831cWz@Gcw^jx5jJID!_hp#N z8Y%par<6qo2{9onL?{G3ibj3PFaM^30JMViewN4>pyQ<2y*o$xGos>Ub~i$PijBA2 z?=r$ho9-W-I|;A%`ja_b9^^N1OxNy@PIBVBUrg-pjoOJZ#YfO2f6~h3s#8`xv1>aJ z#|so>2^2!un*)ixpq*`50Ca zQ@@Bq!aGVDqS~+KseR-0fWE1%s-GkKW8OF6+s8tC@vd=ReVJ`+I)R>_*ZW>0%}3@j z%KZ|mI8ojy=ora(C+uloPV{73NIwJ=5TFe-YwDA?_a~iMtp`Z%U1!vUEWW(vl~mcG z1bq!!6MqdBF9}n8i?-oG4I2BmG<2t~Z*62Gt%MBq%+`KHV;0BvUf3YU<=>ph82KIi zo>i9lI>#fo{Lqn8?bi&G(=kD0C1((s>(YS8muK=J#dGk8a%kiW=+d8#>_DbGTqA2J?yNjw^1e+R$?nj#t7&yY{j0*tTUGTqjCGd&Yfl^8Zy;ZqN#5aCab~ z2&656U?jEn5y{FpA+zoa4!t9_&R_7a``L@~reDW|s4+Am>ytOyuqrbAqUY*p<`EqX zrck$UbIqQu(Iq8()_nnE++eM=Wf#U{HP(=ev3X1VmO@v~aX`ABx*DF6vU#eiqDdgO zo};PEn8E&pIL73--ibsXL4fx|g5^NSBOZ<5%0X`<>H~#z%cjVf_gguVy5^!Y-K>~b zE+3*IF4+yL6CmLyXkOz}H>rZ|Xqej`lE9H#*3k238O|Df=;a@e#+Am^-C0&WzpF>y ziV2&q8Bm>7GEk~;Jj#C}He^Pi5iDqZuF7UsBcS&wHO&H%*iTOnnXV9Yt)c0ONlW3V zaI|9LU@9Z5dNs`!iHB76nR(?1Li@-K6nSW=7pSVmoY`eW>+*^0==!WDZv9gPu8=G;8pVrf4<;8ascDmwD^ZL$8pMQ7= zI_bpARwAqk(iF2eIbQw5bTE=%_p$I(o#4xPbAFrY9HNv0hzIt`&lXCZRE%=Sf_5~f zmFj)_<>`HD)9E6g+0Gkrg`QgLFDm^Q`fFb7NhLjRW+rvE{_~;Ax^_kUtoygmWh{j+ zYkPi1hI2*~BTtQUZ55sb(DwkfQpTV{GVPW=8iJc5-NvC4fwHhW0bN+esPg?VOoGaggn#>$W;TMDme3TkIH{^9?FSCc!(Z(C%3^Vy3POLq&m55Yrlo$$?>(eIz z$>JE%K$MNX6;*~y5|`s`9Q&#jIXl=yPEBM8>(kHLm!;@)9L;!Y24S@nnU3GMGmgxU zD}FrQ0)nf1Ko|am|7zDBkMU)mf3?``3P>&v>@Aq zS1NerRF8YL2py)>55ur@rXOUuD073fFj{I{@MsFn$(+`%M6&

diYiGvM6NGqdcx_DJz^N*k)0 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 R&ST(zs)}0J5`}Al{~y~zrc(d_ literal 0 HcmV?d00001 diff --git a/reports/signalsim_validation/acquisition_peak_neighborhood_e1b.png b/reports/signalsim_validation/acquisition_peak_neighborhood_e1b.png new file mode 100644 index 0000000000000000000000000000000000000000..d8d71c130d0d7c4f231b5f3dab6fc3c26d2d6ebf GIT binary patch literal 51698 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ɒjCtl8MP_E4=^EGfg;aR?P>VGrXL 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

    39k~Jxk8~&965lN5&v7Tg4H3 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�~d`*Z*jU-SJtz8n{_R~_`{n=)vQ5X{4DQdzpI7}~bnahQ0#83+hPMoCB z8Rd7dI);wDlGwSJDada4Zhif+=IRNNTx+hv-`<*wo`(SEvSdPT+MD-L;JeV5xlrlS2Oln%bLt#g+8~vS|{>Zzd_iKq9Jy23jNPvT8 zm|pwe8P>aodPTYRWGzJp%y0> z#+RQC;4`(R!g6+$Y$`c^~otTpf1JjqqCawBw3{!Laq@9rAXQe%)pMa8*Hw zi%C#GSY$fjbE-1q)~AueA8o$RP=2QO;qb>^!Cg?3hi2GsO|8!`$x2JBWjq9(jPwdc zAD61KQds0nf&7~O7EgrTl$4VA>~qK>>^xul8Ch;u5Grx`5uS`b<3#bLw@)s=lg0d` z*GM1u9i~WQr~OusiO;$!u4udHo8fa_8hu%ZRk=W8cF5n25_NMmTs52fQyykLM$RB{ z8UBShunovwDp9`1!c)(6+ZJp4UloMWU`(v@nJ=H?Pi^QGf6o2-l19L9nNCX4WA%dp z8_FBz>1HRq$ItC=q2OHKT$vK=-4D$nwQlrsq^-?<{slkzql^E)sDFm}W>1V2!wCl6 zBd6{SQt4LhA31SrI+gPaL8AJ_>wv3x12iRV3?B-QMjO?ft{!4I*9=>=t4qz#Wwxjs z(5F7VyR!37>A#l4(WrvJ%885rGI>HTvC6>hhO$hF!s7z_Fe7}vO8^1Q?gEVGtI)awc6la-c?Icc zc>b9GsU+E<%Zv|dlyT43(qqaky2{u566GCsM!iV5YFIjC@vDS6Jta_zFhUdgCbAf? z(f2=-BC*Z!>$O%UIB9QZkBvG9fIWgh<%wH8NOG|R$FUu`21O9={@cXAn&LV5D!#-?Jr4ozcyY3j>cma()|+8K3&o-zKsA?Nl*S$?gn%eMbgPx zOkGuiAsArzqN_@S_*UYFZhr;2HKxv0Xcv$ai&^^w4Wm5^5lpNW>4uuIy#XJ+*D$qxU`5 zKbVUMidyLS-4Hx?_usr$ebh+NmuNa|r}>UM=N<*v*SM3spWs;tIS}}l1oiMRJzmBS z%#J}$A*Fwg-D*TC18ArtNzBPJJvQ7J)erZN)&;N~)bDYc`F6(BIq=TjdZ6;bOf_!H zSOCQTtzXweI_}_wToKil;i?~wxq?zHn!<=3d!+hzG9bGjaR?@x9?GVpx9t3N={YEPp0i&=BTJCGBO$QxMb1vD<$H$$ChBm<9?daR%ghLm)|L}_ zC8q8T8%a4%k3l{Wvc9gGyNF*dUWr@JI^S})J5G%=T>!{Zge6XS`uP!bug`r=>{9F3 ztGrA?mi9*)KItk6)5aq>c)wPijmgk#LpsZqwn!SxEH=no(kyAm)B&+Oy_hDc3LeA)0-D0_gxx01t= zXK`SiXr54$0KZ;2p^B5u*%^To?)qD7FA!VD%Ml+gJ+5dXP}Bfy#Do0Zp^X;_vVWHo zgD1gFLhsgalI)W-&4hX^AHZ{Gf9W3BL)W5o2ky@_&C$Q|G9p;E_v0~!OD2AZrAN|p zyKVo@-fVIh+g$zGi1Nnc$(U-%<*#nCb0Qg*i1|+oQ4rEb?nVNs6mnAy=NmlFY z(mU>ANf1$%q@K~lF++$1+((81+;D|1EmpSuf!TXqvW)o{TA*OMAPx!nxx)}t>|Xcp z=e-s&I{j3|t?rxcpJa0$yI-b3J%&mprq;}xpoESBYi{b(&kfO2!(&w+rxxA*@j*ny zRPdTHOcs=Yd<8jL-gTMDWg}=G*pTX`J58ICVEQp}srN_<)CMa^!1Y0uD*VFaaBtR| zkY6*W<8TAEv(85~cGf%DTJ2?&g#yqwUv#Qo)f|^de|}*I2~el)8~ob7=GH|7Gis?4 zr-2nBqf+~`g6Uqy_X{ZRDXpo3SQWPHiJ{`>{*Q4x-QVTxNo~td+-)tl`Vy^KSZh8l z%KAVUL*Nf{>X#?};XI#Oa+O?Vs7Sb`4$@t~+xSlf7ua~+?`8Fiq{Oewb?!+Q(!Cnb@+ONFR4~DTq4YPrTv=fM}3cW zJ)Q9TpKLz;WNH2N=`4`POCW5SKg^8x2J8TO0f;r8d8lH>W`q|$6&X8gPuMBR9)e!S zx%j%GEpqxtvbcIbK-UxR<|rMcVGxKV(ncON~AWtBhN4>7Bjwwh-g96A?=?vW)H4n(Mhb`VS-wpmEz9Q!-G ztE?65=#T{u%hJ)_y|F6AT~Z)cJoedfqYbrmkAD*_+_rziN$rQqOJC+Di7W0 zrFtkAqkD70f(N~N`w|h1$XmTXpH6l_-}F?V!E=4VfBeTaj8%6U67X?lj9zd|!=6G=_h`8v<)*Ly30v^ES1+mBK>CXcO=okV|4s^r#-Hl{ z=MD?*PvI5-28q*OgSor-G&&Xgw^({pUMd?@Gy{Q)>m>9%a{gW*oVaCn;$chUvnIZW zWHqv%I$0VM#P|rMW?g|Mx%P-g1gLbB*p2p9$<|=oRkR+F!!?>l)`h>SWJ*#y7?)V( zX)LUg35Stv-N<+0za-g=aF+F5Uy00y{NEiQtEXA+v&~*t6kJC$Lz6xuUpX=2e6@T} zd6srW-Gh~sB8+^Qp-&cbJaL?K-E8ZK#Kq*r2cFvmR->cNPEG@ie0PxOcK^5pjUa{A z>n!@O%^0XD$6ro^u;>54Dj<~vz0UtGhGPGoy)f{(>rh_`tBY6}=7y^i8v_2dzk+_W zJ8sM6Zbc4r=1563ryEOoB__$`TO8SKK_^K@)_WqWZ14y&OLH+qboGe&Lc%LQ$JaMJ zWW1_pw32g!j|1*1NeLuZvjq`R-_YyK5gN-UujqILpb^|rrj|4SPg z!=>VHP)|$DhZSbU-f7C>)G-mKz_P|vEWB; zLuSJ3M{JoCfO?lN@loU|v8#WKG*qlzz=8JL1_m$vqaR~%-%sO*dTXB7huu#MNMFiQ zsRx79=0VwKG@=E;$gc)atP;ekFVG!-sV1&c|2m9u8-L^;G~0od*W#l0up}?*=@{LH z%)3L271KIvF}$2cTYf0m)t_+FPqw4Wa``XoRwOUa=JhjL3P*%@SCZEZHXO7v`X0MY zLWTTA*}lbfkh%e;JN}aZ&5;Vl(@d8DAtlBfhax(_hjbgw<2bo^M4fwES)zXdgL?Qh~|&*VRL zGdFB{Una|seA01fDjTg%DxVe8k%AaiL?4pnCFpBI^SZT1bA`05hbHGAa+LxjyRD(x zyO_g&R*eYC@5Gc2xg}~+DC=WM@!#Sam&!UXKq_dDZFbKIrW1%W^giwtCe+m z%o1t5mTt^s3WpDUNCVO&Kvm5s#OoawzqOt{*9&6Rq(sU1W4`l8r<(} z?6(w-iMmJp?U#zwbj9a;paT5ROw)IZ<@(k8D=1LucCanYBp(i5AF~;pWX64T_x44XDSc6z@zixJ%}Ju=V~5GutTMjH~^(jn?hkD1dKeP>YL;9TAGRRN7&Riw`$&xyoFZ6Nac>UjuT}~NBZIT zIunLl?M%{eKuB?hH>L38>G}S;pm1jH`K3eS*ww(*V@c)PZK4{@IAax}Tvn=%&?`7ZLB9tSHl%_WzP`k@v=jqiH5)vY`P8%%6V@*m1fBE9m()>+G@D=9=oG-Tfl7{gU?;p=^GStmgIHMm?4)s!vS| z+(ZMGr#FbFo_Lz33wJEo>Kf)#r5e&S$??H z-q?C2{x}%-nN`3~GlJNb(Qo4&-5Q%?`JtN)?PERPe@dGVwx`@m4}DgqdhOM>9*XM2 z`B}@)k77M?d;8moXs#~@s0dP!kPTJzwpO%#Jenfl>&;peLaiD%7u_)eWP zi~V;drr*zJnGi_75)$qVwdeeBUo@a1$Lg^~N-%j%W#xM;!apfLRPi#g_-(bk$zE0M z6}^~}e{|=_JzC|;ZCCCGGd4LWidP&(Y}}W$lI7X%{Jzpy%V+Y^DVg+i`ze2c5y_?O ze^0b~f7Zw_60RBrTD3Sd3J4UUqr&b!YWmX1Q|#`XrF`K1QRR6c`3N%|W3FnArFZ!C zda8xXH%=3dCxTf#$}us?ExptHIY_UGEpAoYTG@@}hZgC+=K*D|`7X`PxQ_4eS$1tp zo9f0?Y#LH1L(m>2%QU{L4c}_SI5(ns|M}N_T|%`Gw%NEBwE8m*RXVo>qzlVrv$=NO z+z?gwKU#lu&Hs>d@r^NIXLyyGqgpF5`b*G8i-W%tx!eWCZdcx|Zx0Z_vaGei76P^n_=b#vfy>>9E zn;A}iI?9z)y1+ca@*{68Zfnsr#(re??mqOn(KDRGIIEoQ^CPQAx9x3j7U8$NcUQ0|_b#EzL*&iRQxes);m zt;YIl@+I~ssj19(I^j!xx3yNek~sEKZ;5sEm#bcT)*F3%hGG%NsC^t>cqa0+#ns)N zV*u~A_Q2ucx9ic$R}}By>z!@L94_qB!NcXObdVx5XLu$^|+1sZ&kzrh|_?s1&AFOoE!H zsJ2vOh4;0)TH-bS{n@DZXNU>lkMhgr*zS$0@H_rcLK=s9_Uz8@$6*Ptm!8o8@ig7G zr-}OJ-*ET)Usb%XqYt?vKbb|4<>F2>S&@DU7qYKl{dRuG$;vJ&>Dl|#x#bnN8f$AQ zc^pT}efPTc1#B;4yUr00;=t}B;uiY(Nn0a=dYTP9FXK`yu4~sM^ha49v?kYORVAwg zX}CPKxx2ymhdO3j?Kg}6xN{|?Ax~OjH3M12nY+)QXOP+jHKPmzF$sai#RC z*}-MIdoJm-x@O*aX||(X_nX)1vbsIZ#=Wok%BBVKCw+}6bkOns`Zi5(Cx)`YhM#-T%khHckhwcOF_mT%oC@|hXA*LKUI5jn2b0c4{IO z=}HB+j7ubVOW75#SM#r9lB*Z+9ew0}hZ`P@ciAO9+@E+n{7F+|q-+4W0Xj~~yyY)% zt1kF-OsUHrCiX6xrson8o`O++O{@BK6!RG|I==b8e5S8z%HRL?uB0UJJPg<#wY7<*GHeIcquv2eJPh{bFI1 z9sE$qZ89|bTALSK#eFyCLk%BwL-+DKN3+#|d~jY;x|i`>iRtI+W~p&!Rt{f%tN7*@ zhhuqp3T$95m5JWW<+;~^uQv9ZLna9Ey&9ya*diZsOW6O@bXKKk>=+>XSaD~wg6mCO z{uRn!yKL^K|M(};J~e1~?>Mof#U(O~Q%wfy^8DJZwFq6N$WA^lBP8v;iXW%#ea#fp zwp1v`tRH&<>#|G2I`X+6rWVBc%=_^d@$^eAH)gTF8X{{fB{_e-S`*D6#Qm+Aa-F+{ zH~s|wz|2EOAdw=aFpGG7K5pu-&ouu=8B25YN5)DgcE`m(NM$WkUk=_nfTe-eg0YQV5Gda)lcS)?MhU+ z1Z9gVoxeVz1l+(2bg6UkdL_~FfO^)Ck*N3YFx?6n$GT@w)ZBMA%eedoOCSG$Z-SY` zPc{*c_&V=?376!-{(L}nf{*PR>G{JHToPxN&KposG$fKug3?@fD!9JSYBN{Gs00O@ zV(u~P&Y2i_kFUor&b@wf-MH6A;OW`nll?UlRDFbGw%DwASirFV1XjV^V~$`FeTbGM3LMDD<_ihw{=+Rn7CL!|h_?Nb{@<_Rxq`_Y#+FYScme4gO0;ZMSo zl5!jhBsLEJNa;G(HTST|d2-BbJmn)4r1RGG@6DOY9Fa*|zDX47@}&1A+{=?GnWQqm zyv!>GDVtc=7kJ~#pPNxkG+w!{eP9_IFPwM-lRO_Ale~oNl>_dgWdYB)gdw^`(64WB zRzExXpI~xEYb|%e17_qS+d~j4C8|kdxBM? zH`?pUi)*hLdlyuwT>h@ z^6!f|@5U+9Nnu}hc!>H9!nN2le^+eXoQ?D(y)n0(0n?4$jBNXJ3&=0IWG$epw3d^ zX4y{@^Z2jt@I|$`jr?lJX3bTM-xEw*ilO-t?ma|Hc^&_5PMzF<6S}L63*%Fn z=NpzoO+Chn{<&j$hW>giW2jIR0X#!a;!J8`qnP2|PQlCN_3+`LUFfVctrXsyyMB$= zc#Ed<>0LlE*5w;N;h=jL?lGc{5r8lHw`PF5@iTXhRptW~IWaQ9Yrn}Zkqwoe57fyU zpq{Nv%%Mk&$|qds)6ozg%jgTKkt=`A5Ys?K4bIIKzHLLL*?#91x z=5VE*^ApmuUo&sJXLQ#BHQJcIyqD|ldO;KAqot_!P!!6a?HlYl^xHqbh-YVe?(4k4 zHbhUg*YPNQbMIA3qfb^oo1mrqq@@anKwMlX+gZ8+>&@$Z14(x;aoV9 zVC-K>bydu6j zEX-CC{L@B|@2RQl4Y!(aBV8DNHST0fTe>M7{t?W0ST%xVOWS(c9X_elG+6wCn^j4! ziP{vUZMVh(uy6amU+DAD`Fy-;r%q~s7p?)eLQf(!^K4s1}0}eA8oHL%lexX z9$|Ip)F{z-?cAQE87drZx!qr5Sfwph7*KsQ1vbvI>W^Vp?Wq z+(v&qDM;sYt~<&yQ&QmjOC8Z3JDYHmYN|7lMAw%dG$`E<3 z-8s*1-D^GTzSp|f(?91d`S$$`d%uTk?|r=}>gdsdT%qO&~HGXwlEfi1bY z9}Y`I#<7@Q@Q;kWt*|Swpg_TAuq*kjMJO=@iH(izarx$$bmX`SMvZ=w$4P6JCf=cv zP5$}Ivo2ka4RrjR+c-Rmn!b(X`B>v>sqT}wCtM93;E<#$5sVs9E_LV<(R9AxAgq^ zb70o=tuKQ&L_mzNyLE#(!TVu(f6JbtC%(P@EP@jkYv^*$3T#vHG<?ZaJO` z%Q1z4VgoxmZ(1s)u?|Did9q(KN%aydfD7cX0XAulj*j++Zv+M7W0BJuaq$e{wB3JR zEB%pVgB9GYu#0*$;Qse%72M^=Yy0zh4U7u7QWSFv3iiTd2tz|5nO)<6xJbimS_?*A=9Qkt#{b5g zP5$X4*ybuNFTV#yn|?boV!m1CTYvrfb^Z1k41daJS<=4SC3dQhN?&MuP192?rWWtq z+b+6wDQqyk5Vjxxdoy$U?%g%}c691#@8fBTPWyc7y#7Cb^Z)$kL6-Y|#Grrf;eT^C z@}+G5_r}wO{&SCPmjB$X#)sgmjQ>s+qa%^K{(ZjU|ILGYXHHBDu@{}#yuzCU4#_Kt zry0%;@Fd0V)i4UWZTsuzmH~jT`GYq)vY7aRa4r zrHF_~zz*U#ADCo!OIP$c@iv87IkpsY9y)aBk6~ww0gTk)B20hf%9V>A9)d6fy0&Jc zfor%iL3R+MA$ZjX#Km#$3+D|&m{JrCqoJh}Egv^{e6s7HvXi&1tu0UwDtMLe;anfO zamR)@sZ*_nDj)k{MHRp8oS>(tCxLx19qUd|{~uf&(pK9ndeoO84LbHU%?o zQ02nm8+wqWt_x}F>ghExDmyLTm#=4SE!^k4jnSt%1x|LS2J#<0dSnR4BDVWeIH03& zN&mT_`=xS1}^712!PaVc_w($Q7&b!~0OZ7=yttOhL*De*}J`RtuI=o$HFbUw4WZv<_$}IFW!KO4e9>-ak?c0m(wu+0d){d31 zeZeZf<^`AFrcD#m!$*nP42J7I7Z+JjFIV5u{mZub{=?}&ebZr^8*twPH-LSaFV%cs zrv_h4{Cr^lNNlm-#T0O0vz~H!PL6ayTMK-ZyF=67A(=5EY$Ljw;i$zBoYGU9w!o>V zAwf=nBZN%7FPN6(0p^^pAr|M{a@Og}gEvLk7*0DlgdyLU!@LK!sJ40@m}>?XyWB_H zkLV~ns)2SU4fB2C5d73-fPvVuVkF1ky!i!oP+~KTPw^;W@J?fDYDyd<@obn6rKpGb z_)zcwG8=A6dt<`NZnN#BK-gy1pm;+GgQrd~O=qNx^Q^P`v<)~5oOR}98#y-|k zIq>zCSFX$o+sPmKdkH3e9sRMPI2H3y?sAsVSP2})j8lzd0nAFs&fY4gsAvsOb=hC) zzh^Dzd?XEXcJg&NC^R)Ub5mb?da97!Er04HDu&URow~AEpk?bm{wYCOMMZJHq5|Qv zGE(1QTA7iZ9owOVt@(65W9_-AwN3AZ0dP4(8QR#SH=K_;@Z4j1=oyt$`FlR2+ikNX zH;$J$WM>wtnCHeLWe!)?R9CNWxxSX29an#@??t`+G=I-e|~0xj#yhYm5zNlTmU+qW+h zCoJmc92m~lztc0>%E`;TzqbPEbQv}Ma5s^NDvxBk84ZyV}jqVg|BTPGKQ#)@$C4s=^~_>7U9MesDMiHds7L%z=S{ zvcEo_O*kg>FtPrIh+pI2>ruM{UFqU{4uV^zV83To=vr*DXWzbMHkYjoIGL}}Zir~> zciUV^tLdeU!b!94YeB(hnut2uIPHkYu!%1hZtU58tBV?FOD->00~hXyfdLZ6Q{n#n z;UNZFKfnW4si#CBK6*sNFg}``nThMH>zjC&rp*b=Q2y{UyAf%tS8T`)ByE64$F$+) zuO|<`mDqi*P-|#ta7O5keQS{SD5C+ctSHu)#HMg;k#NvRp5o`H;3%o+*j@IpaG~&C z$;iGZIx!_E%s%evvO?s3K}^QssRtV=GCg;J$l@W}xvxC5ExCkmhc_>5261USQ2>$S zF|fMVIg_zB8HEg`KXUUWS55Nv3uYD;v@2JxEMCkSC`rW%KnLi!#IYQ~qpGW`yt@xU zlZG-dFkqO`F63lqe<&H@@E*Ctd1l;nvxtZVj=_-=X_Eu56_T?Iv}3+y=jXF&+{szt z+EO+mmRC`s9vT|De)@uekx?*?Fp+?C{PD?J)OtPNzem9N*WIeP_QNqHra5N4f9|W| z!uJj2P~h~m+w!}ZUF2PU`Yy&CIB_V(C5k> zi0{M)5_XY&FwA;^B=o-W$`vp?(ih8gK<;%)SKUHUxRYn~^_p3i-nD+qcKTcaB$e*m zEFe;(TG!2Lcof^#(!vghaC&Cuz_c_W1b_*gdg%r41^&)^kU!0woF2QVD`aJt*uE^d zo$Zz%r1E+cj}T=E87Ced9-mOLwJ2EdIbCpfw`USSH)uOL5GJ$DW z4TD5|^$L(Xhbu60zGM}3SO48xvzCu9Ycj0r`SayfQ%W*Y*X`qY+l*j@EuTJ))PGZG zBXaePxlJ=DoDUqJw|8*JHLqnD{aBFEvVt3-kLgkAR~sGOffA(Yfb8t-kBwby#l^); zkG31wB`1`;l3-&XJt`tWOp}`1P-KJq;MiCgVyqclNdF27dIn2=U$9mlCLPwv$Z%Xg z$#)MAM{`WJ^W(=?nEVNIp6VDpmf0C-;w%UmkdZO^tr-_DZ)Qb9(OO|)VYAR)#0o^7 zn2tZgY8cm+pBU*6ay4c=Ii1C;=AnPOypSCUoUr1ir>BWQV9a-#7cX95(q{ec2*V?q zhx7e<`P%p=*112vwOMqRUE)$W%LY(lnjV`(@7J$%x4&u}??(>nnVNHUcR!~5CiZU_ z6%&a3(YcE}Jc-uz*Pay7qmQi%W*0XaFpQ;L$t*8AbT(Y+i@WIsv_Poc>?WiCdLy8y zSh#D~@i7`t_n5h#W1TEPd&Jz&Ess8R0j`%o%pJ@q8z0dtbv()VN~rIk{zD%3v{W6? zyvbD~rB!uy8e5;*{W^1~L{?gQr=cMic-WCKF?)9fE`wbzd=htQX$6}s=C^!1WE$-i zhkPT5A$I0%(k=v@L`H&XmBC@p_{79MR7Ff9GF5#OJzu_DMTr?59eo=`uk0`5*Y5jw z1=67?f7Z~DscD;On7a%$(iY;c54TbU(JJa}cbV~t6TK*a_MSgq*s#|d=k#D`cNc!l zS>s_(0s>Y@NJz*hGo=yx)7!_sPSkcJ$=^Zvz%$?GHpD`_9TUFUp{b*My2~%yiCxy} z=;%(%dUOK<>NPvt*p}Ac9vsw2D+wt<8WLx z;ze&yj}H##84qxTek32k%@c3yi|`e_*C{S0<_uHTzb~qSO7&2#lj*_xRc@N8LAB;T zan@Uwvj6ftNY>R$DSC6V_u_mmnuZr#7DY~-7g;oRDi=yNR#Q}rJz;1lO^u=eIpXT5 zaQKPd47_+x?A^Pw_C8w5Vgo=i^aVU&bwlV1zL+FvJH1twQxb zO0bygg7zE~WqSfv89vzB+M1c4pWp2UX4Gq(XSEzb`oE!*qMl4+cK`l;v9#1T>q`$2 zNBX|0xr4`#$Bp5VWL_A8>GrGt#$hh%Yj3YW-u*qsA8?~z8&ewZrlwjMJgD$qRN(=b zkhW@JVc|pav9M0CF`Jv4EdUg0I+Oi^_&d{9+1uM2nwaq7#=-wnJYBt<&Zit;y^&Wg zsYfF3r2Sr;IW;^v@$=`;hWGD}jGsZpC!2Dj#BGbKo0}!xZD|9J-EENJ(@U)Skiob&nBw+P_l{)f@?9S1e4AK$ywO$rdi3$ z$ec!KYr0Z7dlwqdb#fbMR$khtD7)UDmcs=#aSBmf*J@6~glnP$Bq#itCWvWq*8X>ZU}s z%Y`OJn6A;SaZqWdXUxu?eT90pMQ^VjWCY1$zi5tkG~$_Asw3C&()l=amz~%O32!_X zXh~`H6sg5N*t|wxDt#9_+L8C*ZAr*qe?=;L1N6m6ZAaR1GsevM1xM=>y1J3mU!V6n z8v^3g0a4+jr86cil3YgKI5EOZ=-aKK!9{Uw+$a@i073FwXVK&7JMXHiuX>?m$V5&| z3vT{GKph-hT%uW0Xs~{Q^Crf4puD`Co5HDYp{}2^6BZB|Q*t3>$Zm+Jqi}_dpb6zy z3`htI2fB}Z&@@s)vb0CMXNXWxP_UxdvTt=px_t}=Dnh=XKY$| z{o{Cd`D-$7P_Lw2iGbWV3I?YYDrd(#diiA^uY?49pDkjrwzQPKZM}DnlY}TR3dztI zK7(HK6^Luy*K2K$;9K2WO~>Lk!SI-oTD@vjl;$RN^;TIjkR~c@qD`?ur7*4 zS|$GdrP>`4rKP0}6X;{jeHMZzLt7Tqq|oKeR|nVh=Dd5STO8+cv-)&q>$J!oJNo6z z`UeNwE``E4xgnmA&)}#H(4~fB?dc%&?QEQ!XjSg&96n}v@{xgP25$3e2Fh^_nZ*b1ML!+*OlX+E7$n$^ii;Dt$On&3jyppY6U*D95pDCtR@fN zv_>CpgI3BQ%c!M4pLp9Nahid%E3K&L*y;(~9uG$PAFb}jv6xlMmmN%0WJ32_3zlr+ z4-dfKdQ(%^)1nME)Weh*IyxlIlhTx>vkBTwE`?EJopU5n9(*KN=Dd z;Z!I~5@y(Xh2XS%_vD9MfqSW_Ubt~zPFB_&HvG0ODwuQ)9UTce$tneVCwoUmUa7!^ zINep@1MFSmV`A9Fw{CTenp&$N?`H(%R4NUQ9u{y^?{O)HnXLqdyqTq?e`k>si7Tk< z_n`=hij1Vt>kSXW@;&#`ly!S&rv)-qPHwI*DkZ81-v3t*Y_29wEpT=ALF?;j(1pS- z$LX^=G3OP#a{tjI2K;+R+ICkjKZ9r1WB!pmJ^`>;;5sVwOPc zGN>HLsGlmlc>L&?s$qRiLjk?gUg5Pp`($}A;usKd1egg@N$mDhW9MjAGV@kV^wkNl z21(nz<0lUkYCb|!`x7hD_}+f}ID&9SQ0g6vzq0piiUowOZRfr$$LwFr#^#Tj125&J z*L?&n2nxj6UKb$?iG|QpLDF7&@Hg-AY!jk|pF`hH`9wslK^?vZq?MSdVo+AGR&pC% zDRHCtruq{)$y2;ENa2~zl~BI1K;u0ANf}ZzQH(Kt_5wG}w&4mMFf!UkQE~Cz$mswf zELGuBzH;rgkX>(7gegF%c;uGv-W7ysg4Gx{bTrYgo53w24K+UqUtm#W<*CyP7-=;x z7SIda6FO#KAgiXPhSG9mY@NDYs{~{v)6!U!f&glUczh)n9Qu842_M6+YIub|E*ga$dc;p{QO;@V3Zs`Re>)<-Z_4< zj3W3njH&9@Rt{W;F9r|tBv}(9oCPco5K)!tfsXK3aBww<97IBKgZAq27UgKbz>(Oc zo*uJp%F3tT-`z`AXil4%`9NGH>l5MO;aE`veE^JN)yTxe5Fq5sU>YwiD_f0NPr51J z*8_qeMS&V}{Z?apI~R0rXo(Pf0v|t?YHDgC9#JS#SuqE9VeJ7+9V-w+7C^4Xixr0; z?>zNYC&oMFy6azi1RIi+*U`|>Ag}I5m;<(upxY75IVoiI9z+kU3-NE>yd0y`A7L85 zFj2X*xCZbq!iFOQK&KKD1sy#7>eZMDeEcl*kx5CRkZ5-uKD-7IRn~$Vl?Mq#$mxVN zKG|PSmaGl3O&(6p{sESN-a%I1pMDyYdxI&M3O(kj`!^1(-w-=-^z%S&uf#$Uxj{fB z`QNOxU<{RkI!cR&O-h@JU*p@s8Qdf$#sGb=P<{-bsllVci?h-1!i-xFHPE-Ra)+a$1Af2|Qe%Spybn5VKx|i&n4z% zwES{4jnLt_sX|aViu*v4tUsuuV^zq`!GYeDEaTLnDau0;skJmVH1twJQnCX9wLcv4 z&{oP2p+szl$ionH2EwdCmOs6)0K!O-lDosv z((?IJldU1B-a0DIj~UVVkQM?FB*BZ8j?s*2M`xff77-P-mbS{=+}yH|lZ{Q<*x2~R zfJ+Ce0&a`YvCow$G-iDRt&+u_R%gzLOPoQFBr8pA>jdsO z+?F9ZH8>%Go8p&}dfaU>HHA~|(A~n+Q_v2AhmwN^d)u~cBx>U61qKBLHCzluZtX+P z!d8JQbn`Sj=Y`i(z*5st;B+A=?@ygd4TgSxwWjx_eW~Z1EM*26O4g~3rl)+Sy9Sq- zmL*Ye$;0DS82eCn`F6_e`Cn_BKJOp%f|{XWV8DTxsQ>CQ8Y)63NN_-1O_;JsK7J4& zNM8QKgC&w7kV0{-S@&)!^D<*W#j0rz6MF(2TQRi@M~*~&Dg>7n+ABR4fQW8{X84%c zN?p03(wrRK-b_n)mQg;nA)LEUojT=M>F4LyP>G;FU{rvo%ZzmxRqqAEw1sq|B53Bb zKRcadT)!S96F|*l+6NeN3=m#EKKA<#r%%&F9q>mH9do74pJi+pmeTvvzV!4^c6N5E zp0g}iG;MO+7kt1vW(3mcjkm>E)Z_)SjAUF)LjvtaT|!p72$F&7fe=U$h$~he#C0<8 zG&C;tk`7Z=R{kM<9!gP{5g)YT?n1CXC zOltMm`m`6wk?^>L8lU zR{CtxYc=vW{!_03cM*uV)C(QC7Ezgf!;Q#DAIu(&!-pT&H(z$y##;t``eI+067@k< z;!pMfvldI12y=8O9;lrdupE*`_v9t9zMbHfSQ8@2UNzMtxMhpx_#02eT68_V!^0gC za}OJ#e*>8ypw#)E2xzK}rT4;jU`cCsZmuQK(cWId=O(|5s;Y@~ilxL=!LiPw{RqFH zRQN;o>V=91+1sF46(SKV2ctW;uG$KTkth1(QH+3{Iz72aTQF~2zEdaUJqSCf7_TC6 z)xWuCfHKF+YmsiHIbJ^h6%p(*QXB^t>Z-3V4IZ)#TK!_BzY(8aV9gMVO5_J=POitu zdq<<3T2^LK@&dfpQ>a%wu2>l4%TCC%C&sk|)$LX_YgR81` zQVP$6bf+7$>(;HZlIzf#QfIxd6^wlj5sqsE}LXHd1-*1ihL`vf+8R}$_$Uo`P@0e8kV+imqz7K{p=YH z)IWhef>G16NCp%|_91{4Mk-vWvrc;6F;STpBC&jeNq7ffJEE?uxDELrxYV?^7VZ*{ z$heW0Cs*j$6^!Q2>}8|?wrSL1(E+8h=_*m#UQt6&pD0GBmf_R zI)?)4(1B*;gB=%DH$Zq7QESCKL`ZQzpLYYO%KdoA0s_0N zFXNU8$O(!=>ZwZaA+&^n%zO-Fp9g4Oh_p=U3N09%$kO|Cby*;)kX0W>9z{l!W3#~W z+|I}lZ+qpwIPVT8I&qT+fhIqDCo5&Ot}4y3I_3h_y|Q$^|iTahntr*fC+i zHq=0Jdk0x6?Gm!f1`M?o*mXuqrkWaB6%`eR2py22NC3lzxj_}~9|KG17(u+Mg^tgj zy=Uvh-@Usx3keZTi1^%1OdPpr0^?7t-}ZMKaB^^bLH|#@^2kn|1TSo)d5+jZ#seA= z(Kmj3#@x4HKg|SwOM{<x8S`H-mI zRd`*Vot^cm>uX6|Q?HJ_BnjX8p{Ss4mCbNfy6@=f;t~l5UG$>cwr{VgtJ{D2cd6U( zGU%XfVZkg-=XJ?`t37rt-YkyV2nm6hv>HJ0oEGs?)$U3t$o-EozG4$1KUZkDr2{$Fel j`=7O{|4#v|Wr_Ayyh=)u%Dw;!e>C?V+LNtecJ==NL0vBj literal 0 HcmV?d00001 diff --git a/reports/signalsim_validation/acquisition_peak_neighborhood_e1c.png b/reports/signalsim_validation/acquisition_peak_neighborhood_e1c.png new file mode 100644 index 0000000000000000000000000000000000000000..6241663f53a43545dfb65c1f8a33610e67f353ed GIT binary patch literal 52195 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ⅇY@#Cg1(#Cu2a<9qD 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 G!hZneCZO>E literal 0 HcmV?d00001 diff --git a/reports/signalsim_validation/acquisition_profiles_e1b.png b/reports/signalsim_validation/acquisition_profiles_e1b.png new file mode 100644 index 0000000000000000000000000000000000000000..7e63906b9f873fbd65fa12c62654107e3bbbb4c4 GIT binary patch literal 40298 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 M$zM!8f9KKv1!uzPt^fc4 literal 0 HcmV?d00001 diff --git a/reports/signalsim_validation/prompt_constellation_e1b.png b/reports/signalsim_validation/prompt_constellation_e1b.png new file mode 100644 index 0000000000000000000000000000000000000000..167674a8b8a56a9d95864cd324ec8d1a38b62ddd GIT binary patch literal 62070 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 V_)y;N&qd(lgqoIW_K^#>{s-zLhD!hd literal 0 HcmV?d00001 diff --git a/reports/signalsim_validation/rtl_vectors/signalsim_acquisition_input_iq8.json b/reports/signalsim_validation/rtl_vectors/signalsim_acquisition_input_iq8.json new file mode 100644 index 0000000..2aa868d --- /dev/null +++ b/reports/signalsim_validation/rtl_vectors/signalsim_acquisition_input_iq8.json @@ -0,0 +1,40 @@ +{ + "stem": "signalsim_acquisition_input_iq8", + "sample_count": 163680, + "total_bits": 8, + "fractional_bits": 0, + "signed": true, + "encoding": "two_complement_hex", + "i_file": "signalsim_acquisition_input_iq8_i.hex", + "q_file": "signalsim_acquisition_input_iq8_q.hex", + "overflow_count": 0, + "sampling_frequency_hz": 8184000.0, + "sample_period_s": 1.2218963831867057e-07, + "timestamp_file": "signalsim_acquisition_input_iq8_timestamps.csv", + "register_values": { + "SAMPLE_WIDTH": 8, + "SAMPLE_FRACTIONAL_BITS": 0, + "INPUT_REPRESENTATION": "COMPLEX_IQ", + "IQ_ORDER": "IQ", + "SAMPLING_FREQUENCY_HZ": 8184000.0, + "INTERMEDIATE_FREQUENCY_HZ": 2046000.0, + "PRN": 1, + "COMPONENT": "E1C", + "ACQ_DOPPLER_MIN_HZ": 1000.0, + "ACQ_DOPPLER_MAX_HZ": 2500.0, + "ACQ_DOPPLER_STEP_HZ": 250.0, + "ACQ_COHERENT_SAMPLES": 32736, + "ACQ_NONCOHERENT_COUNT": 5, + "ACQ_FFT_LENGTH": 32736, + "TRACK_E1B_INTEGRATION_SAMPLES": 16368, + "TRACK_E1C_INTEGRATION_SAMPLES": 32736, + "CARRIER_NCO_PHASE_WIDTH": 32, + "CARRIER_NCO_FCW": 1074701159, + "CODE_NCO_PHASE_WIDTH": 48, + "CODE_NCO_FCW": 35184412914156, + "E1C_SECONDARY_PHASE": 10, + "ACQ_TO_TRACK_CODE_PHASE_SAMPLES": 18309.255563640225, + "ACQ_TO_TRACK_DOPPLER_HZ": 1828.0, + "NOTE": "Symbolic names; APB addresses remain to be assigned by the RTL IP register map" + } +} \ No newline at end of file diff --git a/reports/signalsim_validation/signalsim_e1b_symbol_comparison.json b/reports/signalsim_validation/signalsim_e1b_symbol_comparison.json new file mode 100644 index 0000000..2c34245 --- /dev/null +++ b/reports/signalsim_validation/signalsim_e1b_symbol_comparison.json @@ -0,0 +1,27 @@ +{ + "status": "raw_symbols_recovered_page_decoding_not_implemented", + "comparison_scope": "known_10_symbol_INAV_sync_words_only", + "recovered_symbols": 469, + "compared_symbols": 20, + "initial_ignored_tracking_epochs": 150, + "initial_ignored_time_s": 0.3, + "bounded_alignment": "code boundary from PCPS; sync search within remaining 1.876 s", + "sync_matches": [ + { + "symbol_index": 190, + "sign_inverted": false, + "errors": 0 + }, + { + "symbol_index": 440, + "sign_inverted": false, + "errors": 0 + } + ], + "symbol_errors": 0, + "symbol_error_rate": 0.0, + "median_soft_symbol_magnitude": 43846.682818616624, + "frame_or_page_sync": true, + "fec_decoding": "not_implemented", + "crc_validation": "not_implemented" +} diff --git a/reports/signalsim_validation/signalsim_validation_report.json b/reports/signalsim_validation/signalsim_validation_report.json new file mode 100644 index 0000000..e7acb0a --- /dev/null +++ b/reports/signalsim_validation/signalsim_validation_report.json @@ -0,0 +1,267 @@ +{ + "simulator": { + "name": "SignalSim", + "path": "/home/onur/Desktop/galileo/signalsim/SignalSim", + "remote": "https://github.com/globsky/SignalSim", + "commit": "80b262113e77c4482ca9f5cbfef9bcada402ed28", + "git_status": "## main...origin/main" + }, + "vector": { + "name": "high_cn0_single_prn", + "samples": "verification/vectors/signalsim/high_cn0_single_prn/high_cn0_single_prn_iq8.bin", + "generator_config": "verification/vectors/signalsim/high_cn0_single_prn/config.json", + "sample_format": "IQ8", + "sampling_frequency_hz": 8184000.0, + "intermediate_frequency_hz": 2046000.0, + "duration_s": 2.2, + "prn": 1, + "expected_doppler_hz": 1828.0, + "expected_doppler_source": "SignalSim_validate_only_summary_rounded_to_integer_hz", + "expected_code_phase_samples": null, + "path": "/home/onur/Desktop/galileo/verification/vectors/signalsim/high_cn0_single_prn/high_cn0_single_prn_iq8.bin", + "size_bytes": 36009600, + "complex_sample_count": 18004800, + "sha256": "3e72a5ad2d35ee68273b77587a66847b0fb328650b39c9e39272f0dc54e39e3c", + "internal_dtype": "complex128" + }, + "mode": "quick", + "acquisition": { + "E1B": { + "detected": true, + "prn": 1, + "component": "E1B", + "code_phase_samples": 18309.41036755577, + "code_phase_chips": 2288.6762959444713, + "doppler_hz": 1766.3593126265423, + "carrier_frequency_hz": 2047766.3593126265, + "peak_power": 5441370632.908489, + "second_peak_power": 724471887.0812238, + "detection_metric": 7.510809915386589, + "estimated_cn0_db_hz": 38.1685032317465, + "coherent_integration_ms": 4.0, + "noncoherent_accumulations": 5, + "raw_code_phase_samples": 18309, + "raw_doppler_hz": 1750.0, + "metrics": { + "peak_to_second": 7.510809915386589, + "peak_to_mean": 27.236766759293843, + "peak_to_sidelobe": 9.98985090978008, + "cfar": 59.10585279263198, + "noise_mean": 199780344.01061067, + "noise_median": 186242777.1487124, + "noise_std": 88910448.07689284, + "second_peak": 724471887.0812238 + }, + "side_peak_suspected": false, + "expected_prn": 1, + "expected_doppler_hz": 1828.0, + "raw_doppler_error_hz": -78.0, + "interpolated_doppler_error_hz": -61.640687373457695, + "expected_code_phase_samples": null, + "code_phase_error_samples": null, + "processing_time_s": 0.06577738200576277, + "overflow_count": 0 + }, + "E1C": { + "detected": true, + "prn": 1, + "component": "E1C", + "code_phase_samples": 18309.255563640225, + "code_phase_chips": 2288.656945455028, + "doppler_hz": 1776.6435168702901, + "carrier_frequency_hz": 2047776.6435168702, + "peak_power": 5496116005.536917, + "second_peak_power": 796144387.0872731, + "detection_metric": 6.90341613239865, + "estimated_cn0_db_hz": 38.21910556645223, + "coherent_integration_ms": 4.0, + "noncoherent_accumulations": 5, + "raw_code_phase_samples": 18309, + "raw_doppler_hz": 1750.0, + "metrics": { + "peak_to_second": 6.90341613239865, + "peak_to_mean": 27.54425543885342, + "peak_to_sidelobe": 8.877838662393293, + "cfar": 59.373205541870576, + "noise_mean": 199537650.1549647, + "noise_median": 185090556.71506774, + "noise_std": 89451553.10970132, + "second_peak": 796144387.0872731 + }, + "side_peak_suspected": false, + "expected_prn": 1, + "expected_doppler_hz": 1828.0, + "raw_doppler_error_hz": -78.0, + "interpolated_doppler_error_hz": -51.356483129709886, + "expected_code_phase_samples": null, + "code_phase_error_samples": null, + "processing_time_s": 0.0624623160038027, + "overflow_count": 0 + } + }, + "tracking": { + "E1B": { + "epoch_count": 1088, + "tail_epoch_count": 200, + "final_state": "PLL_TRACK", + "reacquisition_epoch_count": 0, + "loss_of_lock_flag_count": 0, + "estimated_doppler_hz": 1828.251096939249, + "doppler_error_hz": 0.25109693924900967, + "doppler_jitter_hz_rms": 1.3255296914423045, + "dll_error_chips_rms": 0.09628370185540092, + "mean_prompt_magnitude": 22399.083674143894, + "mean_carrier_lock_metric": 0.9896417407083584, + "mean_code_lock_metric": 12.739000577793442, + "median_cn0_db_hz": 40.7319852224026 + }, + "E1C": { + "epoch_count": 544, + "tail_epoch_count": 200, + "final_state": "PLL_TRACK", + "reacquisition_epoch_count": 0, + "loss_of_lock_flag_count": 0, + "estimated_doppler_hz": 1828.2835216359945, + "doppler_error_hz": 0.2835216359944752, + "doppler_jitter_hz_rms": 1.0823023869896848, + "dll_error_chips_rms": 0.08491496617672437, + "mean_prompt_magnitude": 43800.06510755679, + "mean_carrier_lock_metric": 0.9933108801959688, + "mean_code_lock_metric": 12.868774234261869, + "median_cn0_db_hz": 39.005575872111315 + } + }, + "e1b_symbols": { + "status": "raw_symbols_recovered_page_decoding_not_implemented", + "comparison_scope": "known_10_symbol_INAV_sync_words_only", + "recovered_symbols": 469, + "compared_symbols": 20, + "initial_ignored_tracking_epochs": 150, + "initial_ignored_time_s": 0.3, + "bounded_alignment": "code boundary from PCPS; sync search within remaining 1.876 s", + "sync_matches": [ + { + "symbol_index": 190, + "sign_inverted": false, + "errors": 0 + }, + { + "symbol_index": 440, + "sign_inverted": false, + "errors": 0 + } + ], + "symbol_errors": 0, + "symbol_error_rate": 0.0, + "median_soft_symbol_magnitude": 43846.682818616624, + "frame_or_page_sync": true, + "fec_decoding": "not_implemented", + "crc_validation": "not_implemented" + }, + "e1c_secondary": { + "phase": 10, + "residual_frequency_hz": 52.0, + "normalized_correlation": 0.9830279116196488, + "compared_periods": 100, + "sign_errors": 0, + "sequence_source": "/home/onur/Desktop/galileo/signalsim/SignalSim/src/PilotBit.cpp", + "sequence_classification": "SignalSim_implemented_sequence_not_independently_certified_against_ICD", + "wiped_25_period_coherent_gain_db": 13.719295519016415, + "unwiped_25_period_coherent_gain_db": -0.863467276962604, + "wipeoff_gain_improvement_db": 14.582762795979018 + }, + "fixed_point_acquisition": { + "reference_dtype": "complex128/float64", + "input_format": { + "total_bits": 10, + "fractional_bits": 8 + }, + "fft_boundary_format": { + "total_bits": 32, + "fractional_bits": 20 + }, + "power_format": { + "total_bits": 64, + "fractional_bits": 32, + "signed": false + }, + "reference_doppler_bin_hz": 2000.0, + "fixed_doppler_bin_hz": 2000.0, + "reference_code_phase_samples": 18310, + "fixed_code_phase_samples": 18310, + "doppler_bin_agreement": true, + "code_phase_agreement": true, + "acquisition_decision_agreement": true, + "normalized_absolute_error_mean": 0.0015404047604332905, + "normalized_rms_error": 0.0021864998265414934, + "normalized_peak_error": 0.01995720714695684, + "overflow_count": 0 + }, + "rtl_vector_manifest": { + "stem": "signalsim_acquisition_input_iq8", + "sample_count": 163680, + "total_bits": 8, + "fractional_bits": 0, + "signed": true, + "encoding": "two_complement_hex", + "i_file": "signalsim_acquisition_input_iq8_i.hex", + "q_file": "signalsim_acquisition_input_iq8_q.hex", + "overflow_count": 0, + "sampling_frequency_hz": 8184000.0, + "sample_period_s": 1.2218963831867057e-07, + "timestamp_file": "signalsim_acquisition_input_iq8_timestamps.csv", + "register_values": { + "SAMPLE_WIDTH": 8, + "SAMPLE_FRACTIONAL_BITS": 0, + "INPUT_REPRESENTATION": "COMPLEX_IQ", + "IQ_ORDER": "IQ", + "SAMPLING_FREQUENCY_HZ": 8184000.0, + "INTERMEDIATE_FREQUENCY_HZ": 2046000.0, + "PRN": 1, + "COMPONENT": "E1C", + "ACQ_DOPPLER_MIN_HZ": 1000.0, + "ACQ_DOPPLER_MAX_HZ": 2500.0, + "ACQ_DOPPLER_STEP_HZ": 250.0, + "ACQ_COHERENT_SAMPLES": 32736, + "ACQ_NONCOHERENT_COUNT": 5, + "ACQ_FFT_LENGTH": 32736, + "TRACK_E1B_INTEGRATION_SAMPLES": 16368, + "TRACK_E1C_INTEGRATION_SAMPLES": 32736, + "CARRIER_NCO_PHASE_WIDTH": 32, + "CARRIER_NCO_FCW": 1074701159, + "CODE_NCO_PHASE_WIDTH": 48, + "CODE_NCO_FCW": 35184412914156, + "E1C_SECONDARY_PHASE": 10, + "ACQ_TO_TRACK_CODE_PHASE_SAMPLES": 18309.255563640225, + "ACQ_TO_TRACK_DOPPLER_HZ": 1828.0, + "NOTE": "Symbolic names; APB addresses remain to be assigned by the RTL IP register map" + } + }, + "pass_criteria": { + "maximum_raw_doppler_error_hz": 250.0, + "maximum_tracking_doppler_error_hz": 10.0, + "maximum_tracking_doppler_jitter_hz": 5.0, + "maximum_dll_rms_chips": 0.15, + "minimum_secondary_correlation": 0.9, + "maximum_secondary_sign_errors": 0, + "minimum_inav_sync_words": 2 + }, + "passes": { + "acquisition": true, + "e1b_tracking": true, + "e1b_raw_symbol_sync": true, + "e1c_secondary_sync": true, + "e1c_tracking": true, + "fixed_point_acquisition": true + }, + "overall_pass": true, + "known_failures": [ + "SignalSim E1 output cannot select E1B-only or E1C-only", + "SignalSim E1 uses BOC(1,1), not full CBOC", + "SignalSim has no native real-IF output", + "SignalSim IQ2 writer omits the output-byte assignment at this commit", + "Full I/NAV receiver-side FEC/page/CRC decoding is not implemented", + "SignalSim does not emit exact sample-side code-delay or navigation-symbol truth", + "Full multi-vector regression is not generated yet" + ] +} diff --git a/reports/signalsim_validation/signalsim_validation_report.md b/reports/signalsim_validation/signalsim_validation_report.md new file mode 100644 index 0000000..9da9805 --- /dev/null +++ b/reports/signalsim_validation/signalsim_validation_report.md @@ -0,0 +1,17 @@ +# SignalSim acquisition and tracking validation + +Overall quick-mode result: **PASS** + +| Check | Result | +|---|---:| +| acquisition | PASS | +| e1b_tracking | PASS | +| e1b_raw_symbol_sync | PASS | +| e1c_secondary_sync | PASS | +| e1c_tracking | PASS | +| fixed_point_acquisition | PASS | + +E1B tracking Doppler: 1828.251 Hz (error +0.251 Hz). +E1C tracking Doppler: 1828.284 Hz (error +0.284 Hz). +E1C secondary phase: 10; normalized correlation 0.9830; sign errors 0/100. +E1B exact I/NAV sync words: 2. Full page decoding is not implemented. diff --git a/reports/signalsim_validation/tracking_e1b.png b/reports/signalsim_validation/tracking_e1b.png new file mode 100644 index 0000000000000000000000000000000000000000..549af7db8a147812c5d8d647e5b71f7296e56cc2 GIT binary patch literal 125680 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

    <@9rnRxhHhv^nOWc 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

    i%jS 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

    =2h!6=FOi68R@+M_G-(wj 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

    Q$i7aOHxAuAF?5A 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

    diYiGvM6NGqdcx_DJz^N*k)0 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 R&ST(zs)}0J5`}Al{~y~zrc(d_ literal 0 HcmV?d00001 diff --git a/reports/signalsim_validation_full/acquisition_peak_neighborhood_e1b.png b/reports/signalsim_validation_full/acquisition_peak_neighborhood_e1b.png new file mode 100644 index 0000000000000000000000000000000000000000..d8d71c130d0d7c4f231b5f3dab6fc3c26d2d6ebf GIT binary patch literal 51698 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ɒjCtl8MP_E4=^EGfg;aR?P>VGrXL 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

      39k~Jxk8~&965lN5&v7Tg4H3 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�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 literal 0 HcmV?d00001 diff --git a/reports/signalsim_validation_full/acquisition_peak_neighborhood_e1c.png b/reports/signalsim_validation_full/acquisition_peak_neighborhood_e1c.png new file mode 100644 index 0000000000000000000000000000000000000000..6241663f53a43545dfb65c1f8a33610e67f353ed GIT binary patch literal 52195 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ⅇY@#Cg1(#Cu2a<9qD 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 G!hZneCZO>E literal 0 HcmV?d00001 diff --git a/reports/signalsim_validation_full/acquisition_profiles_e1b.png b/reports/signalsim_validation_full/acquisition_profiles_e1b.png new file mode 100644 index 0000000000000000000000000000000000000000..7e63906b9f873fbd65fa12c62654107e3bbbb4c4 GIT binary patch literal 40298 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 M$zM!8f9KKv1!uzPt^fc4 literal 0 HcmV?d00001 diff --git a/reports/signalsim_validation_full/prompt_constellation_e1b.png b/reports/signalsim_validation_full/prompt_constellation_e1b.png new file mode 100644 index 0000000000000000000000000000000000000000..167674a8b8a56a9d95864cd324ec8d1a38b62ddd GIT binary patch literal 62070 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 V_)y;N&qd(lgqoIW_K^#>{s-zLhD!hd literal 0 HcmV?d00001 diff --git a/reports/signalsim_validation_full/rtl_vectors/signalsim_acquisition_input_iq8.json b/reports/signalsim_validation_full/rtl_vectors/signalsim_acquisition_input_iq8.json new file mode 100644 index 0000000..2aa868d --- /dev/null +++ b/reports/signalsim_validation_full/rtl_vectors/signalsim_acquisition_input_iq8.json @@ -0,0 +1,40 @@ +{ + "stem": "signalsim_acquisition_input_iq8", + "sample_count": 163680, + "total_bits": 8, + "fractional_bits": 0, + "signed": true, + "encoding": "two_complement_hex", + "i_file": "signalsim_acquisition_input_iq8_i.hex", + "q_file": "signalsim_acquisition_input_iq8_q.hex", + "overflow_count": 0, + "sampling_frequency_hz": 8184000.0, + "sample_period_s": 1.2218963831867057e-07, + "timestamp_file": "signalsim_acquisition_input_iq8_timestamps.csv", + "register_values": { + "SAMPLE_WIDTH": 8, + "SAMPLE_FRACTIONAL_BITS": 0, + "INPUT_REPRESENTATION": "COMPLEX_IQ", + "IQ_ORDER": "IQ", + "SAMPLING_FREQUENCY_HZ": 8184000.0, + "INTERMEDIATE_FREQUENCY_HZ": 2046000.0, + "PRN": 1, + "COMPONENT": "E1C", + "ACQ_DOPPLER_MIN_HZ": 1000.0, + "ACQ_DOPPLER_MAX_HZ": 2500.0, + "ACQ_DOPPLER_STEP_HZ": 250.0, + "ACQ_COHERENT_SAMPLES": 32736, + "ACQ_NONCOHERENT_COUNT": 5, + "ACQ_FFT_LENGTH": 32736, + "TRACK_E1B_INTEGRATION_SAMPLES": 16368, + "TRACK_E1C_INTEGRATION_SAMPLES": 32736, + "CARRIER_NCO_PHASE_WIDTH": 32, + "CARRIER_NCO_FCW": 1074701159, + "CODE_NCO_PHASE_WIDTH": 48, + "CODE_NCO_FCW": 35184412914156, + "E1C_SECONDARY_PHASE": 10, + "ACQ_TO_TRACK_CODE_PHASE_SAMPLES": 18309.255563640225, + "ACQ_TO_TRACK_DOPPLER_HZ": 1828.0, + "NOTE": "Symbolic names; APB addresses remain to be assigned by the RTL IP register map" + } +} \ No newline at end of file diff --git a/reports/signalsim_validation_full/signalsim_e1b_symbol_comparison.json b/reports/signalsim_validation_full/signalsim_e1b_symbol_comparison.json new file mode 100644 index 0000000..2c34245 --- /dev/null +++ b/reports/signalsim_validation_full/signalsim_e1b_symbol_comparison.json @@ -0,0 +1,27 @@ +{ + "status": "raw_symbols_recovered_page_decoding_not_implemented", + "comparison_scope": "known_10_symbol_INAV_sync_words_only", + "recovered_symbols": 469, + "compared_symbols": 20, + "initial_ignored_tracking_epochs": 150, + "initial_ignored_time_s": 0.3, + "bounded_alignment": "code boundary from PCPS; sync search within remaining 1.876 s", + "sync_matches": [ + { + "symbol_index": 190, + "sign_inverted": false, + "errors": 0 + }, + { + "symbol_index": 440, + "sign_inverted": false, + "errors": 0 + } + ], + "symbol_errors": 0, + "symbol_error_rate": 0.0, + "median_soft_symbol_magnitude": 43846.682818616624, + "frame_or_page_sync": true, + "fec_decoding": "not_implemented", + "crc_validation": "not_implemented" +} diff --git a/reports/signalsim_validation_full/signalsim_validation_report.json b/reports/signalsim_validation_full/signalsim_validation_report.json new file mode 100644 index 0000000..e5a0f81 --- /dev/null +++ b/reports/signalsim_validation_full/signalsim_validation_report.json @@ -0,0 +1,545 @@ +{ + "simulator": { + "name": "SignalSim", + "path": "/home/onur/Desktop/galileo/signalsim/SignalSim", + "remote": "https://github.com/globsky/SignalSim", + "commit": "80b262113e77c4482ca9f5cbfef9bcada402ed28", + "git_status": "## main...origin/main" + }, + "vector": { + "name": "high_cn0_single_prn", + "samples": "verification/vectors/signalsim/high_cn0_single_prn/high_cn0_single_prn_iq8.bin", + "generator_config": "verification/vectors/signalsim/high_cn0_single_prn/config.json", + "sample_format": "IQ8", + "sampling_frequency_hz": 8184000.0, + "intermediate_frequency_hz": 2046000.0, + "duration_s": 2.2, + "prn": 1, + "expected_doppler_hz": 1828.0, + "expected_doppler_source": "SignalSim_validate_only_summary_rounded_to_integer_hz", + "expected_code_phase_samples": null, + "path": "/home/onur/Desktop/galileo/verification/vectors/signalsim/high_cn0_single_prn/high_cn0_single_prn_iq8.bin", + "size_bytes": 36009600, + "complex_sample_count": 18004800, + "sha256": "3e72a5ad2d35ee68273b77587a66847b0fb328650b39c9e39272f0dc54e39e3c", + "internal_dtype": "complex128" + }, + "mode": "full", + "acquisition": { + "E1B": { + "detected": true, + "prn": 1, + "component": "E1B", + "code_phase_samples": 18309.41036755577, + "code_phase_chips": 2288.6762959444713, + "doppler_hz": 1766.3593126265423, + "carrier_frequency_hz": 2047766.3593126265, + "peak_power": 5441370632.908489, + "second_peak_power": 724471887.0812238, + "detection_metric": 7.510809915386589, + "estimated_cn0_db_hz": 38.1685032317465, + "coherent_integration_ms": 4.0, + "noncoherent_accumulations": 5, + "raw_code_phase_samples": 18309, + "raw_doppler_hz": 1750.0, + "metrics": { + "peak_to_second": 7.510809915386589, + "peak_to_mean": 27.236766759293843, + "peak_to_sidelobe": 9.98985090978008, + "cfar": 59.10585279263198, + "noise_mean": 199780344.01061067, + "noise_median": 186242777.1487124, + "noise_std": 88910448.07689284, + "second_peak": 724471887.0812238 + }, + "side_peak_suspected": false, + "expected_prn": 1, + "expected_doppler_hz": 1828.0, + "raw_doppler_error_hz": -78.0, + "interpolated_doppler_error_hz": -61.640687373457695, + "expected_code_phase_samples": null, + "code_phase_error_samples": null, + "processing_time_s": 0.06212109600164695, + "overflow_count": 0 + }, + "E1C": { + "detected": true, + "prn": 1, + "component": "E1C", + "code_phase_samples": 18309.255563640225, + "code_phase_chips": 2288.656945455028, + "doppler_hz": 1776.6435168702901, + "carrier_frequency_hz": 2047776.6435168702, + "peak_power": 5496116005.536917, + "second_peak_power": 796144387.0872731, + "detection_metric": 6.90341613239865, + "estimated_cn0_db_hz": 38.21910556645223, + "coherent_integration_ms": 4.0, + "noncoherent_accumulations": 5, + "raw_code_phase_samples": 18309, + "raw_doppler_hz": 1750.0, + "metrics": { + "peak_to_second": 6.90341613239865, + "peak_to_mean": 27.54425543885342, + "peak_to_sidelobe": 8.877838662393293, + "cfar": 59.373205541870576, + "noise_mean": 199537650.1549647, + "noise_median": 185090556.71506774, + "noise_std": 89451553.10970132, + "second_peak": 796144387.0872731 + }, + "side_peak_suspected": false, + "expected_prn": 1, + "expected_doppler_hz": 1828.0, + "raw_doppler_error_hz": -78.0, + "interpolated_doppler_error_hz": -51.356483129709886, + "expected_code_phase_samples": null, + "code_phase_error_samples": null, + "processing_time_s": 0.052345254000101704, + "overflow_count": 0 + } + }, + "tracking": { + "E1B": { + "epoch_count": 1088, + "tail_epoch_count": 200, + "final_state": "PLL_TRACK", + "reacquisition_epoch_count": 0, + "loss_of_lock_flag_count": 0, + "estimated_doppler_hz": 1828.251096939249, + "doppler_error_hz": 0.25109693924900967, + "doppler_jitter_hz_rms": 1.3255296914423045, + "dll_error_chips_rms": 0.09628370185540092, + "mean_prompt_magnitude": 22399.083674143894, + "mean_carrier_lock_metric": 0.9896417407083584, + "mean_code_lock_metric": 12.739000577793442, + "median_cn0_db_hz": 40.7319852224026 + }, + "E1C": { + "epoch_count": 544, + "tail_epoch_count": 200, + "final_state": "PLL_TRACK", + "reacquisition_epoch_count": 0, + "loss_of_lock_flag_count": 0, + "estimated_doppler_hz": 1828.2835216359945, + "doppler_error_hz": 0.2835216359944752, + "doppler_jitter_hz_rms": 1.0823023869896848, + "dll_error_chips_rms": 0.08491496617672437, + "mean_prompt_magnitude": 43800.06510755679, + "mean_carrier_lock_metric": 0.9933108801959688, + "mean_code_lock_metric": 12.868774234261869, + "median_cn0_db_hz": 39.005575872111315 + } + }, + "e1b_symbols": { + "status": "raw_symbols_recovered_page_decoding_not_implemented", + "comparison_scope": "known_10_symbol_INAV_sync_words_only", + "recovered_symbols": 469, + "compared_symbols": 20, + "initial_ignored_tracking_epochs": 150, + "initial_ignored_time_s": 0.3, + "bounded_alignment": "code boundary from PCPS; sync search within remaining 1.876 s", + "sync_matches": [ + { + "symbol_index": 190, + "sign_inverted": false, + "errors": 0 + }, + { + "symbol_index": 440, + "sign_inverted": false, + "errors": 0 + } + ], + "symbol_errors": 0, + "symbol_error_rate": 0.0, + "median_soft_symbol_magnitude": 43846.682818616624, + "frame_or_page_sync": true, + "fec_decoding": "not_implemented", + "crc_validation": "not_implemented" + }, + "e1c_secondary": { + "phase": 10, + "residual_frequency_hz": 52.0, + "normalized_correlation": 0.9830279116196488, + "compared_periods": 100, + "sign_errors": 0, + "sequence_source": "/home/onur/Desktop/galileo/signalsim/SignalSim/src/PilotBit.cpp", + "sequence_classification": "SignalSim_implemented_sequence_not_independently_certified_against_ICD", + "wiped_25_period_coherent_gain_db": 13.719295519016415, + "unwiped_25_period_coherent_gain_db": -0.863467276962604, + "wipeoff_gain_improvement_db": 14.582762795979018 + }, + "fixed_point_acquisition": { + "reference_dtype": "complex128/float64", + "input_format": { + "total_bits": 10, + "fractional_bits": 8 + }, + "fft_boundary_format": { + "total_bits": 32, + "fractional_bits": 20 + }, + "power_format": { + "total_bits": 64, + "fractional_bits": 32, + "signed": false + }, + "reference_doppler_bin_hz": 2000.0, + "fixed_doppler_bin_hz": 2000.0, + "reference_code_phase_samples": 18310, + "fixed_code_phase_samples": 18310, + "doppler_bin_agreement": true, + "code_phase_agreement": true, + "acquisition_decision_agreement": true, + "normalized_absolute_error_mean": 0.0015404047604332905, + "normalized_rms_error": 0.0021864998265414934, + "normalized_peak_error": 0.01995720714695684, + "overflow_count": 0 + }, + "rtl_vector_manifest": { + "stem": "signalsim_acquisition_input_iq8", + "sample_count": 163680, + "total_bits": 8, + "fractional_bits": 0, + "signed": true, + "encoding": "two_complement_hex", + "i_file": "signalsim_acquisition_input_iq8_i.hex", + "q_file": "signalsim_acquisition_input_iq8_q.hex", + "overflow_count": 0, + "sampling_frequency_hz": 8184000.0, + "sample_period_s": 1.2218963831867057e-07, + "timestamp_file": "signalsim_acquisition_input_iq8_timestamps.csv", + "register_values": { + "SAMPLE_WIDTH": 8, + "SAMPLE_FRACTIONAL_BITS": 0, + "INPUT_REPRESENTATION": "COMPLEX_IQ", + "IQ_ORDER": "IQ", + "SAMPLING_FREQUENCY_HZ": 8184000.0, + "INTERMEDIATE_FREQUENCY_HZ": 2046000.0, + "PRN": 1, + "COMPONENT": "E1C", + "ACQ_DOPPLER_MIN_HZ": 1000.0, + "ACQ_DOPPLER_MAX_HZ": 2500.0, + "ACQ_DOPPLER_STEP_HZ": 250.0, + "ACQ_COHERENT_SAMPLES": 32736, + "ACQ_NONCOHERENT_COUNT": 5, + "ACQ_FFT_LENGTH": 32736, + "TRACK_E1B_INTEGRATION_SAMPLES": 16368, + "TRACK_E1C_INTEGRATION_SAMPLES": 32736, + "CARRIER_NCO_PHASE_WIDTH": 32, + "CARRIER_NCO_FCW": 1074701159, + "CODE_NCO_PHASE_WIDTH": 48, + "CODE_NCO_FCW": 35184412914156, + "E1C_SECONDARY_PHASE": 10, + "ACQ_TO_TRACK_CODE_PHASE_SAMPLES": 18309.255563640225, + "ACQ_TO_TRACK_DOPPLER_HZ": 1828.0, + "NOTE": "Symbolic names; APB addresses remain to be assigned by the RTL IP register map" + } + }, + "full_vectors": { + "nominal_cn0_single_prn": { + "sha256": "ffbcb2cfedc6142ca3064514b4d2c10045abf0221462996a5fc10a49213bf88e", + "size_bytes": 9804432, + "acquisition": { + "1": { + "detected": true, + "prn": 1, + "component": "E1C", + "code_phase_samples": 18309.2493035726, + "code_phase_chips": 2288.656162946575, + "doppler_hz": 1773.307913756068, + "carrier_frequency_hz": 2047773.307913756, + "peak_power": 10585746841.368246, + "second_peak_power": 847781679.7040988, + "detection_metric": 12.48640669501491, + "estimated_cn0_db_hz": 41.10297101242409, + "coherent_integration_ms": 4.0, + "noncoherent_accumulations": 5, + "raw_code_phase_samples": 18309, + "raw_doppler_hz": 1750.0, + "metrics": { + "peak_to_second": 12.48640669501491, + "peak_to_mean": 52.56524583502863, + "peak_to_sidelobe": 16.06495209542566, + "cfar": 114.99687091212033, + "noise_mean": 201382998.8466272, + "noise_median": 186498684.67146492, + "noise_std": 90430705.41148725, + "second_peak": 847781679.7040988 + }, + "side_peak_suspected": false, + "expected_doppler_hz": 1828.0, + "raw_doppler_error_hz": -78.0, + "pass": true + } + }, + "tracking_e1c": { + "epoch_count": 144, + "tail_epoch_count": 144, + "final_state": "PLL_TRACK", + "reacquisition_epoch_count": 0, + "loss_of_lock_flag_count": 0, + "estimated_doppler_hz": 1828.0419570441315, + "doppler_error_hz": 0.04195704413154999, + "doppler_jitter_hz_rms": 3.917722043209542, + "dll_error_chips_rms": 0.08564197894938912, + "mean_prompt_magnitude": 60049.986617079274, + "mean_carrier_lock_metric": 0.8929102312320804, + "mean_code_lock_metric": 13.315864057778144, + "median_cn0_db_hz": 36.15381627805871, + "secondary_sync": { + "phase": 10, + "residual_frequency_hz": 55.5, + "normalized_correlation": 0.9946712168819579, + "compared_periods": 100, + "sign_errors": 0 + }, + "post_pull_in_reacquisition_epoch_count": 0, + "pass": true + } + }, + "negative_doppler": { + "sha256": "b17d2d1f180122041b2688f9a8b1facfc73ab99b521187908c88450d65ddc1ad", + "size_bytes": 36009600, + "acquisition": { + "27": { + "detected": true, + "prn": 27, + "component": "E1C", + "code_phase_samples": 12348.267448186096, + "code_phase_chips": 1543.533431023262, + "doppler_hz": -2674.9276245321194, + "carrier_frequency_hz": 2043325.072375468, + "peak_power": 24352646750.750618, + "second_peak_power": 945164158.8151873, + "detection_metric": 25.765520754910906, + "estimated_cn0_db_hz": 44.58325935097769, + "coherent_integration_ms": 4.0, + "noncoherent_accumulations": 5, + "raw_code_phase_samples": 12348, + "raw_doppler_hz": -2750.0, + "metrics": { + "peak_to_second": 25.765520754910906, + "peak_to_mean": 115.91743569126469, + "peak_to_sidelobe": 32.843535009708745, + "cfar": 254.8907938083333, + "noise_mean": 210086141.10142696, + "noise_median": 196188871.44995743, + "noise_std": 94771794.29817012, + "second_peak": 945164158.8151873 + }, + "side_peak_suspected": false, + "expected_doppler_hz": -2637.0, + "raw_doppler_error_hz": -113.0, + "pass": true + } + }, + "tracking_e1b": { + "epoch_count": 1089, + "tail_epoch_count": 200, + "final_state": "PLL_TRACK", + "reacquisition_epoch_count": 5, + "loss_of_lock_flag_count": 5, + "estimated_doppler_hz": -2637.776190851375, + "doppler_error_hz": -0.7761908513748494, + "doppler_jitter_hz_rms": 0.5305994248096336, + "dll_error_chips_rms": 0.06150522766847954, + "mean_prompt_magnitude": 55240.73688530836, + "mean_carrier_lock_metric": 0.9983333662736632, + "mean_code_lock_metric": 14.362780122257186, + "median_cn0_db_hz": 45.81367632112874, + "post_pull_in_reacquisition_epoch_count": 0, + "pass": true + } + }, + "multiple_prns": { + "sha256": "7c6f60e63e2574a4f79034d5a6e16ae954de49502df25b0b532090517ed434d8", + "size_bytes": 1947792, + "acquisition": { + "1": { + "detected": true, + "prn": 1, + "component": "E1C", + "code_phase_samples": 18309.253639126782, + "code_phase_chips": 2288.656704890848, + "doppler_hz": 1769.2706088921507, + "carrier_frequency_hz": 2047769.2706088922, + "peak_power": 32096057962.95762, + "second_peak_power": 1209538637.8968797, + "detection_metric": 26.53578559405557, + "estimated_cn0_db_hz": 44.99077757327253, + "coherent_integration_ms": 4.0, + "noncoherent_accumulations": 5, + "raw_code_phase_samples": 18309, + "raw_doppler_hz": 1750.0, + "metrics": { + "peak_to_second": 26.53578559405557, + "peak_to_mean": 127.22278220023618, + "peak_to_sidelobe": 33.26567281226302, + "cfar": 270.10885652568476, + "noise_mean": 252282314.5970945, + "noise_median": 232987645.09787288, + "noise_std": 117963811.80426, + "second_peak": 1209538637.8968797 + }, + "side_peak_suspected": false, + "expected_doppler_hz": 1828.0, + "raw_doppler_error_hz": -78.0, + "pass": true + }, + "4": { + "detected": true, + "prn": 4, + "component": "E1C", + "code_phase_samples": 9956.98938014865, + "code_phase_chips": 1244.6236725185813, + "doppler_hz": 2230.0939309134383, + "carrier_frequency_hz": 2048230.0939309134, + "peak_power": 37308607171.82941, + "second_peak_power": 1174375756.8562684, + "detection_metric": 31.768883982842297, + "estimated_cn0_db_hz": 45.62044968201952, + "coherent_integration_ms": 4.0, + "noncoherent_accumulations": 5, + "raw_code_phase_samples": 9957, + "raw_doppler_hz": 2250.0, + "metrics": { + "peak_to_second": 31.768883982842297, + "peak_to_mean": 146.9166866558231, + "peak_to_sidelobe": 40.25791358515722, + "cfar": 310.4480527804397, + "noise_mean": 253943973.42509538, + "noise_median": 234535851.2409831, + "noise_std": 119421175.26119119, + "second_peak": 1174375756.8562684 + }, + "side_peak_suspected": false, + "expected_doppler_hz": 2171.0, + "raw_doppler_error_hz": 79.0, + "pass": true + }, + "19": { + "detected": true, + "prn": 19, + "component": "E1C", + "code_phase_samples": 11452.996654723802, + "code_phase_chips": 1431.6245818404752, + "doppler_hz": -321.2206563080019, + "carrier_frequency_hz": 2045678.779343692, + "peak_power": 30643770880.483227, + "second_peak_power": 1130106003.827365, + "detection_metric": 27.115837608773887, + "estimated_cn0_db_hz": 44.810366937653406, + "coherent_integration_ms": 4.0, + "noncoherent_accumulations": 5, + "raw_code_phase_samples": 11453, + "raw_doppler_hz": -250.0, + "metrics": { + "peak_to_second": 27.115837608773887, + "peak_to_mean": 122.08676737545365, + "peak_to_sidelobe": 34.57235944504926, + "cfar": 257.90378471314983, + "noise_mean": 250999936.6781855, + "noise_median": 231773952.64053702, + "noise_std": 117919932.66662621, + "second_peak": 1130106003.827365 + }, + "side_peak_suspected": false, + "expected_doppler_hz": -367.0, + "raw_doppler_error_hz": 117.0, + "pass": true + }, + "21": { + "detected": true, + "prn": 21, + "component": "E1C", + "code_phase_samples": 23576.992428350735, + "code_phase_chips": 2947.124053543842, + "doppler_hz": -749.4303755817893, + "carrier_frequency_hz": 2045250.5696244182, + "peak_power": 61578536111.72763, + "second_peak_power": 1115177497.25106, + "detection_metric": 55.218596379069915, + "estimated_cn0_db_hz": 47.83859101459858, + "coherent_integration_ms": 4.0, + "noncoherent_accumulations": 5, + "raw_code_phase_samples": 23577, + "raw_doppler_hz": -750.0, + "metrics": { + "peak_to_second": 55.218596379069915, + "peak_to_mean": 244.175094203, + "peak_to_sidelobe": 71.06285060781445, + "cfar": 522.8149246569416, + "noise_mean": 252190078.24169424, + "noise_median": 233744033.19949394, + "noise_std": 117335579.35206439, + "second_peak": 1115177497.25106 + }, + "side_peak_suspected": false, + "expected_doppler_hz": -712.0, + "raw_doppler_error_hz": -38.0, + "pass": true + }, + "27": { + "detected": true, + "prn": 27, + "component": "E1C", + "code_phase_samples": 12348.261457074981, + "code_phase_chips": 1543.5326821343726, + "doppler_hz": -2667.442432329403, + "carrier_frequency_hz": 2043332.5575676707, + "peak_power": 23965115133.30752, + "second_peak_power": 1209176598.921569, + "detection_metric": 19.81936729066816, + "estimated_cn0_db_hz": 43.66095463640046, + "coherent_integration_ms": 4.0, + "noncoherent_accumulations": 5, + "raw_code_phase_samples": 12348, + "raw_doppler_hz": -2750.0, + "metrics": { + "peak_to_second": 19.81936729066816, + "peak_to_mean": 93.92989682313109, + "peak_to_sidelobe": 24.852227733911352, + "cfar": 198.45743284172485, + "noise_mean": 255138309.99339387, + "noise_median": 236239222.55910087, + "noise_std": 119566576.92772253, + "second_peak": 1209176598.921569 + }, + "side_peak_suspected": false, + "expected_doppler_hz": -2637.0, + "raw_doppler_error_hz": -113.0, + "pass": true + } + } + } + }, + "pass_criteria": { + "maximum_raw_doppler_error_hz": 250.0, + "maximum_tracking_doppler_error_hz": 10.0, + "maximum_tracking_doppler_jitter_hz": 5.0, + "maximum_dll_rms_chips": 0.15, + "minimum_secondary_correlation": 0.9, + "maximum_secondary_sign_errors": 0, + "minimum_inav_sync_words": 2 + }, + "passes": { + "acquisition": true, + "e1b_tracking": true, + "e1b_raw_symbol_sync": true, + "e1c_secondary_sync": true, + "e1c_tracking": true, + "fixed_point_acquisition": true, + "full_vector_set": true + }, + "overall_pass": true, + "known_failures": [ + "SignalSim E1 output cannot select E1B-only or E1C-only", + "SignalSim E1 uses BOC(1,1), not full CBOC", + "SignalSim has no native real-IF output", + "SignalSim IQ2 writer omits the output-byte assignment at this commit", + "Full I/NAV receiver-side FEC/page/CRC decoding is not implemented", + "SignalSim does not emit exact sample-side code-delay or navigation-symbol truth" + ] +} diff --git a/reports/signalsim_validation_full/signalsim_validation_report.md b/reports/signalsim_validation_full/signalsim_validation_report.md new file mode 100644 index 0000000..a9e734f --- /dev/null +++ b/reports/signalsim_validation_full/signalsim_validation_report.md @@ -0,0 +1,18 @@ +# SignalSim acquisition and tracking validation + +Overall full-mode result: **PASS** + +| Check | Result | +|---|---:| +| acquisition | PASS | +| e1b_tracking | PASS | +| e1b_raw_symbol_sync | PASS | +| e1c_secondary_sync | PASS | +| e1c_tracking | PASS | +| fixed_point_acquisition | PASS | +| full_vector_set | PASS | + +E1B tracking Doppler: 1828.251 Hz (error +0.251 Hz). +E1C tracking Doppler: 1828.284 Hz (error +0.284 Hz). +E1C secondary phase: 10; normalized correlation 0.9830; sign errors 0/100. +E1B exact I/NAV sync words: 2. Full page decoding is not implemented. diff --git a/reports/signalsim_validation_full/tracking_e1b.png b/reports/signalsim_validation_full/tracking_e1b.png new file mode 100644 index 0000000000000000000000000000000000000000..549af7db8a147812c5d8d647e5b71f7296e56cc2 GIT binary patch literal 125680 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

      i%jS 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

      =2h!6=FOi68R@+M_G-(wj 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

      Q$i7aOHxAuAF?5A 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 None: + self.profile = profile + self.sampling_frequency_hz = sampling_frequency_hz + self.config = config + self.engine = PcpsAcquisition(profile, provider, sampling_frequency_hz, config) + + def acquire_one(self, samples: npt.NDArray[np.generic], component: str, prn: int, carrier_center_hz: float = 0.0) -> tuple[AcquisitionResult, PcpsSearchGrid]: + grid = self.engine.search(samples, component, prn, carrier_center_hz) + raw_doppler_index, raw_code_index = np.unravel_index(int(np.argmax(grid.power)), grid.power.shape) + profile = grid.power[raw_doppler_index] + samples_per_chip = self.sampling_frequency_hz / self.profile.code_rate_hz + guard = max(1, int(np.ceil(self.config.peak_exclusion_chips * samples_per_chip))) + metrics = calculate_metrics(profile, raw_code_index, guard) + selected_metric = metrics[self.config.metric] + code_offset = 0.0 + doppler_offset = 0.0 + if self.config.parabolic_interpolation: + code_offset = parabolic_offset(profile[(raw_code_index - 1) % profile.size], profile[raw_code_index], profile[(raw_code_index + 1) % profile.size]) + if 0 < raw_doppler_index < grid.doppler_bins_hz.size - 1: + doppler_offset = parabolic_offset( + grid.power[raw_doppler_index - 1, raw_code_index], + grid.power[raw_doppler_index, raw_code_index], + grid.power[raw_doppler_index + 1, raw_code_index], + ) + code_samples = float((raw_code_index + code_offset) % profile.size) + doppler_hz = float(grid.doppler_bins_hz[raw_doppler_index] + doppler_offset * self.config.doppler_step_hz) + cn0 = estimate_acquisition_cn0_db_hz(float(profile[raw_code_index]), metrics["noise_mean"], self.config.coherent_integration_ms * 1e-3) + result = AcquisitionResult( + detected=selected_metric >= self.config.detection_threshold, + prn=prn, + component=component, + code_phase_samples=code_samples, + code_phase_chips=code_samples / samples_per_chip, + doppler_hz=doppler_hz, + carrier_frequency_hz=carrier_center_hz + doppler_hz, + peak_power=float(profile[raw_code_index]), + second_peak_power=metrics["second_peak"], + detection_metric=selected_metric, + estimated_cn0_db_hz=cn0, + coherent_integration_ms=self.config.coherent_integration_ms, + noncoherent_accumulations=self.config.noncoherent_accumulations, + raw_code_phase_samples=int(raw_code_index), + raw_doppler_hz=float(grid.doppler_bins_hz[raw_doppler_index]), + metrics=metrics, + side_peak_suspected=boc_side_peak_suspected(profile, raw_code_index, samples_per_chip), + ) + return result, grid + + def acquire(self, samples: npt.NDArray[np.generic], component: str, prns: list[int], carrier_center_hz: float = 0.0) -> list[AcquisitionResult]: + return [self.acquire_one(samples, component, prn, carrier_center_hz)[0] for prn in prns] diff --git a/src/galileo_rx/acquisition/detector.py b/src/galileo_rx/acquisition/detector.py new file mode 100644 index 0000000..99d0541 --- /dev/null +++ b/src/galileo_rx/acquisition/detector.py @@ -0,0 +1,21 @@ +"""Detection decision and sub-bin interpolation.""" + +from __future__ import annotations + +import numpy as np + + +def parabolic_offset(left: float, center: float, right: float) -> float: + denominator = left - 2.0 * center + right + if denominator == 0: + return 0.0 + return float(np.clip(0.5 * (left - right) / denominator, -0.5, 0.5)) + + +def boc_side_peak_suspected(profile: np.ndarray, peak_index: int, samples_per_chip: float) -> bool: + """Flag a competitive BOC(1,1) half-chip neighbor; no false unambiguous claim.""" + offset = max(1, int(round(0.5 * samples_per_chip))) + peak = profile[peak_index] + neighbors = [profile[(peak_index - offset) % profile.size], profile[(peak_index + offset) % profile.size]] + return bool(max(neighbors) > 0.75 * peak) + diff --git a/src/galileo_rx/acquisition/fft_pcps.py b/src/galileo_rx/acquisition/fft_pcps.py new file mode 100644 index 0000000..2342d47 --- /dev/null +++ b/src/galileo_rx/acquisition/fft_pcps.py @@ -0,0 +1,138 @@ +"""Readable floating-point FFT parallel code-phase search.""" + +from __future__ import annotations + +from dataclasses import dataclass + +import numpy as np +import numpy.typing as npt + +from galileo_rx.config import AcquisitionConfig +from galileo_rx.signal_profiles import SignalProfile +from galileo_rx.signals.code_provider import CodeProvider +from galileo_rx.signals.galileo_e1 import e1_local_replica + + +@dataclass(slots=True) +class PcpsSearchGrid: + doppler_bins_hz: npt.NDArray[np.float64] + power: npt.NDArray[np.float64] + complex_sums: npt.NDArray[np.complex128] | None + coherent_samples: int + fft_length: int + + +class PcpsAcquisition: + def __init__(self, profile: SignalProfile, provider: CodeProvider, sampling_frequency_hz: float, config: AcquisitionConfig) -> None: + self.profile = profile + self.provider = provider + self.sampling_frequency_hz = sampling_frequency_hz + self.config = config + config.validate() + self._code_fft_cache: dict[tuple[str, int, int, int, tuple[int, ...], float], npt.NDArray[np.complex128]] = {} + + @property + def coherent_samples(self) -> int: + exact = self.sampling_frequency_hz * self.config.coherent_integration_ms * 1e-3 + rounded = int(round(exact)) + if not np.isclose(exact, rounded, atol=1e-6): + raise ValueError("coherent integration time is not an integer number of samples") + return rounded + + def _fft_length(self, sample_count: int) -> int: + if self.config.fft_length is not None: + if self.config.fft_length < sample_count: + raise ValueError("fft_length cannot be shorter than coherent block") + return self.config.fft_length + if self.config.zero_padding_mode == "next_power_of_two": + return 1 << (sample_count - 1).bit_length() + return sample_count + + def _replica_fft(self, component: str, prn: int, sample_count: int, fft_length: int, primary_signs: tuple[int, ...], doppler_hz: float) -> npt.NDArray[np.complex128]: + effective_code_rate_hz = self.profile.code_rate_hz + if self.config.code_doppler_aiding: + effective_code_rate_hz *= 1.0 + doppler_hz / self.profile.carrier_frequency_hz + key = (component, prn, sample_count, fft_length, primary_signs, effective_code_rate_hz) + if key not in self._code_fft_cache: + replica = e1_local_replica( + self.profile, self.provider, component, prn, sample_count, + self.sampling_frequency_hz, code_rate_hz=effective_code_rate_hz, + ) + if primary_signs != (1,): + primary_samples = int(round(self.profile.component(component).primary_code_period_s * self.sampling_frequency_hz)) + signs = np.repeat(np.asarray(primary_signs, dtype=np.float64), primary_samples) + replica = replica * np.resize(signs, sample_count) + self._code_fft_cache[key] = np.conjugate(np.fft.fft(replica, fft_length)) + return self._code_fft_cache[key] + + def _sign_hypotheses(self, component: str, prn: int, primary_periods: int, first_primary_epoch: int) -> list[tuple[int, ...]]: + spec = self.profile.component(component) + if primary_periods <= 1: + return [(1,)] + if spec.channel_type == "pilot" and self.config.secondary_code_mode in {"wipeoff", "search"}: + secondary = self.provider.secondary_code(self.profile, component, prn) + if secondary is None: + raise ValueError("secondary-code handling requested but provider returned no secondary code") + phases = range(secondary.size) if self.config.secondary_code_mode == "search" else range(1) + return [tuple(int(secondary[(phase + first_primary_epoch + epoch) % secondary.size]) for epoch in range(primary_periods)) for phase in phases] + if spec.channel_type == "data" and self.config.bit_transition_mode == "hypothesis": + if primary_periods > 8: + raise ValueError("bit-transition hypothesis search is limited to 8 primary periods") + return [tuple([1] + [1 if (mask >> bit) & 1 else -1 for bit in range(primary_periods - 1)]) for mask in range(1 << (primary_periods - 1))] + return [(1,) * primary_periods] + + def search(self, samples: npt.NDArray[np.generic], component: str, prn: int, carrier_center_hz: float = 0.0) -> PcpsSearchGrid: + array = np.asarray(samples, dtype=np.complex128) + coherent_samples = self.coherent_samples + required = coherent_samples * self.config.noncoherent_accumulations + if array.size < required: + raise ValueError(f"acquisition needs {required} samples, received {array.size}") + fft_length = self._fft_length(coherent_samples) + primary_samples = int(round(self.profile.component(component).primary_code_period_s * self.sampling_frequency_hz)) + primary_periods_exact = coherent_samples / primary_samples + primary_periods = int(round(primary_periods_exact)) + if not np.isclose(primary_periods_exact, primary_periods, atol=1e-9): + raise ValueError("coherent integration must contain a whole number of primary-code periods") + bins = np.arange( + self.config.doppler_min_hz, + self.config.doppler_max_hz + 0.5 * self.config.doppler_step_hz, + self.config.doppler_step_hz, + dtype=np.float64, + ) + # Code delay is periodic over one primary code even when coherent time + # spans several signed primary epochs. Keeping one period prevents an + # artificial duplicate peak from corrupting the second-peak metric. + code_phase_bins = primary_samples + power = np.zeros((bins.size, code_phase_bins), dtype=np.float64) + complex_sums = np.zeros((bins.size, code_phase_bins), dtype=np.complex128) if self.config.preserve_complex_sums else None + time_s = np.arange(coherent_samples, dtype=np.float64) / self.sampling_frequency_hz + batch_size = 1 if self.config.parallelism == "sequential" else max(1, self.config.doppler_batch_size) + for first_bin in range(0, bins.size, batch_size): + batch_bins = bins[first_bin : first_bin + batch_size] + carrier = np.exp(-2j * np.pi * (carrier_center_hz + batch_bins[:, None]) * time_s[None, :]) + previous_correlation: npt.NDArray[np.complex128] | None = None + for accumulation in range(self.config.noncoherent_accumulations): + start = accumulation * coherent_samples + # Absolute sample time contributes only a common phase per coherent block, + # which magnitude-squared noncoherent accumulation intentionally discards. + mixed = array[start : start + coherent_samples][None, :] * carrier + sample_fft = np.fft.fft(mixed, fft_length, axis=1) + hypotheses = self._sign_hypotheses(component, prn, primary_periods, accumulation * primary_periods) + code_ffts = np.asarray([[ + self._replica_fft(component, prn, coherent_samples, fft_length, signs, float(doppler_hz)) + for signs in hypotheses + ] for doppler_hz in batch_bins]) + stack = np.fft.ifft(sample_fft[:, None, :] * code_ffts, axis=-1)[:, :, :code_phase_bins] + if stack.shape[1] == 1: + correlation = stack[:, 0, :] + else: + winners = np.argmax(np.abs(stack) ** 2, axis=1) + correlation = np.take_along_axis(stack, winners[:, None, :], axis=1)[:, 0, :] + if self.config.bit_transition_mode == "differential" and previous_correlation is not None: + power[first_bin : first_bin + batch_bins.size] += np.abs(correlation * np.conjugate(previous_correlation)) + else: + power[first_bin : first_bin + batch_bins.size] += np.abs(correlation) ** 2 + if complex_sums is not None: + complex_sums[first_bin : first_bin + batch_bins.size] += correlation + previous_correlation = correlation + return PcpsSearchGrid(bins, power, complex_sums, coherent_samples, fft_length) diff --git a/src/galileo_rx/acquisition/metrics.py b/src/galileo_rx/acquisition/metrics.py new file mode 100644 index 0000000..c596350 --- /dev/null +++ b/src/galileo_rx/acquisition/metrics.py @@ -0,0 +1,41 @@ +"""Acquisition peak and noise metrics.""" + +from __future__ import annotations + +import numpy as np +import numpy.typing as npt + + +def circular_guard_mask(length: int, peak_index: int, guard_samples: int) -> npt.NDArray[np.bool_]: + indices = np.arange(length) + circular_distance = np.minimum((indices - peak_index) % length, (peak_index - indices) % length) + return circular_distance > guard_samples + + +def calculate_metrics(power: npt.NDArray[np.float64], peak_index: int, guard_samples: int) -> dict[str, float]: + valid = circular_guard_mask(power.size, peak_index, guard_samples) + noise = power[valid] + peak = float(power[peak_index]) + second = float(np.max(noise)) if noise.size else 0.0 + mean = float(np.mean(noise)) if noise.size else 0.0 + median = float(np.median(noise)) if noise.size else 0.0 + std = float(np.std(noise)) if noise.size else 0.0 + epsilon = np.finfo(np.float64).tiny + return { + "peak_to_second": peak / max(second, epsilon), + "peak_to_mean": peak / max(mean, epsilon), + "peak_to_sidelobe": (peak - mean) / max(second - mean, epsilon), + "cfar": (peak - median) / max(std, epsilon), + "noise_mean": mean, + "noise_median": median, + "noise_std": std, + "second_peak": second, + } + + +def estimate_acquisition_cn0_db_hz(peak_power: float, noise_power: float, coherent_time_s: float) -> float | None: + signal_power = peak_power - noise_power + if signal_power <= 0 or noise_power <= 0 or coherent_time_s <= 0: + return None + return float(10.0 * np.log10(signal_power / noise_power / coherent_time_s)) + diff --git a/src/galileo_rx/cli.py b/src/galileo_rx/cli.py new file mode 100644 index 0000000..231a3ba --- /dev/null +++ b/src/galileo_rx/cli.py @@ -0,0 +1,189 @@ +"""Command-line entry points for generation, acquisition, tracking, and comparison.""" + +from __future__ import annotations + +import argparse +import json +import logging +from dataclasses import asdict +from pathlib import Path + +import numpy as np + +from galileo_rx.acquisition.acquisition_manager import AcquisitionManager +from galileo_rx.config import load_config +from galileo_rx.diagnostics.reports import export_json, export_tracking_csv +from galileo_rx.fixed_point.bittrue_pipeline import compare_acquisition +from galileo_rx.fixed_point.fixed_acquisition import FixedPcpsAcquisition +from galileo_rx.frontend.frontend_chain import FrontendChain +from galileo_rx.io.sample_reader import read_samples +from galileo_rx.io.sample_writer import write_samples +from galileo_rx.signal_profiles import get_signal_profile +from galileo_rx.signals.code_provider import SyntheticCodeProvider +from galileo_rx.signals.galileo_e1 import e1_local_replica +from galileo_rx.signals.signal_generator import ChannelModelConfig, SatelliteSignalConfig, SyntheticSignalGenerator +from galileo_rx.tracking.tracking_channel import TrackingChannel +from galileo_rx.types import AcquisitionResult +from galileo_rx.verification.signalsim_validation import locate_signalsim, validate_signalsim + +LOGGER = logging.getLogger("galileo_rx") + + +def _load_and_frontend(config_path: str, input_path: str): + config = load_config(config_path) + raw = read_samples(input_path, config.rf.sample_format, config.rf.sample_endianness) + frontend = FrontendChain(config.rf, config.frontend) + return config, frontend.process(raw), frontend.output_sampling_frequency_hz + + +def _result_from_json(path: str) -> AcquisitionResult: + raw = json.loads(Path(path).read_text(encoding="utf-8")) + if isinstance(raw, list): + detected = [item for item in raw if item.get("detected")] + if not detected: + raise ValueError("acquisition result file contains no detected result") + raw = detected[0] + return AcquisitionResult(**raw) + + +def command_generate(args: argparse.Namespace) -> None: + config = load_config(args.config) + profile = get_signal_profile(config.signal_profile) + provider = SyntheticCodeProvider() + satellite = SatelliteSignalConfig( + prn=args.prn or config.prns[0], component=config.component, code_delay_chips=args.code_delay_chips, + doppler_hz=args.doppler_hz, doppler_rate_hz_s=args.doppler_rate_hz_s, + carrier_phase_rad=args.carrier_phase_rad, amplitude=args.amplitude, cn0_db_hz=args.cn0_db_hz, + ) + channel = ChannelModelConfig(seed=args.seed, quantization_bits=args.quantization_bits, clip_amplitude=args.clip_amplitude) + generator = SyntheticSignalGenerator( + profile, provider, config.rf.sampling_frequency_hz, config.rf.intermediate_frequency_hz, + config.rf.input_is_real_if, [satellite], channel, + ) + sample_count = int(round(args.duration_ms * 1e-3 * config.rf.sampling_frequency_hz)) + samples, truth = generator.generate(sample_count) + write_samples(args.output, samples, config.rf.sample_endianness) + export_json(str(args.output) + ".truth.json", truth) + LOGGER.info("wrote %d samples and truth metadata", sample_count) + + +def command_acquire(args: argparse.Namespace) -> None: + config, samples, fs = _load_and_frontend(args.config, args.input) + profile = get_signal_profile(config.signal_profile) + manager = AcquisitionManager(profile, SyntheticCodeProvider(), fs, config.acquisition) + results = manager.acquire(samples, config.component, config.prns) + payload = [asdict(result) for result in results] + text = json.dumps(payload, indent=2) + print(text) + if args.output: + Path(args.output).write_text(text, encoding="utf-8") + + +def command_track(args: argparse.Namespace) -> None: + config, samples, fs = _load_and_frontend(args.config, args.input) + acquisition = _result_from_json(args.acquisition_result) + channel = TrackingChannel(get_signal_profile(config.signal_profile), SyntheticCodeProvider(), fs, config.tracking, acquisition, args.start_sample) + measurements = channel.process(samples[args.start_sample :]) + if args.output: + export_tracking_csv(args.output, measurements) + if measurements: + print(json.dumps(asdict(measurements[-1]), indent=2, default=str)) + + +def command_run(args: argparse.Namespace) -> None: + config, samples, fs = _load_and_frontend(args.config, args.input) + profile = get_signal_profile(config.signal_profile) + provider = SyntheticCodeProvider() + acquisition_manager = AcquisitionManager(profile, provider, fs, config.acquisition) + results = acquisition_manager.acquire(samples, config.component, config.prns) + detected = [result for result in results if result.detected] + if not detected: + raise SystemExit("no configured PRN passed the acquisition threshold") + consumed = acquisition_manager.engine.coherent_samples * config.acquisition.noncoherent_accumulations + summary = [] + for result in detected: + channel = TrackingChannel(profile, provider, fs, config.tracking, result, consumed) + measurements = channel.process(samples[consumed:]) + summary.append({"acquisition": asdict(result), "last_tracking": asdict(measurements[-1]) if measurements else None}) + print(json.dumps(summary, indent=2, default=str)) + + +def command_compare_fixed(args: argparse.Namespace) -> None: + config, samples, fs = _load_and_frontend(args.config, args.input) + profile = get_signal_profile(config.signal_profile) + provider = SyntheticCodeProvider() + engine = AcquisitionManager(profile, provider, fs, config.acquisition) + result, grid = engine.acquire_one(samples, config.component, config.prns[0]) + count = engine.engine.coherent_samples + replica = e1_local_replica(profile, provider, config.component, config.prns[0], count, fs) + fixed = FixedPcpsAcquisition().search(samples[:count], replica, fs, grid.doppler_bins_hz) + reference = grid.power / config.acquisition.noncoherent_accumulations / count**2 + comparison = compare_acquisition(reference, fixed, config.acquisition.detection_threshold) + print(json.dumps({"float_result": asdict(result), "comparison": comparison.to_dict()}, indent=2)) + + +def command_validate_signalsim(args: argparse.Namespace) -> None: + source = Path(args.signalsim_path).resolve() if args.signalsim_path else locate_signalsim(Path.cwd()) + report, passed = validate_signalsim(source, args.config, args.output_dir, mode=args.mode) + print(json.dumps({"overall_pass": passed, "passes": report["passes"], "report": str(Path(args.output_dir).resolve() / "signalsim_validation_report.json")}, indent=2)) + if not passed: + raise SystemExit(1) + + +def build_parser() -> argparse.ArgumentParser: + parser = argparse.ArgumentParser(prog="galileo-rx") + parser.add_argument("--log-level", default="INFO") + commands = parser.add_subparsers(dest="command", required=True) + generate = commands.add_parser("generate") + generate.add_argument("--config", required=True) + generate.add_argument("--output", required=True) + generate.add_argument("--duration-ms", type=float, default=100.0) + generate.add_argument("--prn", type=int) + generate.add_argument("--code-delay-chips", type=float, default=100.0) + generate.add_argument("--doppler-hz", type=float, default=1500.0) + generate.add_argument("--doppler-rate-hz-s", type=float, default=0.0) + generate.add_argument("--carrier-phase-rad", type=float, default=0.0) + generate.add_argument("--amplitude", type=float, default=0.5) + generate.add_argument("--cn0-db-hz", type=float, default=48.0) + generate.add_argument("--seed", type=int, default=1) + generate.add_argument("--quantization-bits", type=int) + generate.add_argument("--clip-amplitude", type=float) + generate.set_defaults(handler=command_generate) + acquire = commands.add_parser("acquire") + acquire.add_argument("--config", required=True) + acquire.add_argument("--input", required=True) + acquire.add_argument("--output") + acquire.set_defaults(handler=command_acquire) + track = commands.add_parser("track") + track.add_argument("--config", required=True) + track.add_argument("--input", required=True) + track.add_argument("--acquisition-result", required=True) + track.add_argument("--start-sample", type=int, default=0) + track.add_argument("--output") + track.set_defaults(handler=command_track) + run = commands.add_parser("run") + run.add_argument("--config", required=True) + run.add_argument("--input", required=True) + run.set_defaults(handler=command_run) + compare = commands.add_parser("compare-fixed") + compare.add_argument("--config", required=True) + compare.add_argument("--input", required=True) + compare.set_defaults(handler=command_compare_fixed) + validate = commands.add_parser("validate-signalsim") + validate.add_argument("--signalsim-path") + validate.add_argument("--config", default="configs/signalsim_validation.yaml") + validate.add_argument("--output-dir", default="reports/signalsim_validation") + validate.add_argument("--mode", choices=["quick", "full"]) + validate.set_defaults(handler=command_validate_signalsim) + return parser + + +def main(argv: list[str] | None = None) -> None: + parser = build_parser() + args = parser.parse_args(argv) + logging.basicConfig(level=getattr(logging, args.log_level.upper()), format="%(levelname)s %(name)s: %(message)s") + args.handler(args) + + +if __name__ == "__main__": + main() diff --git a/src/galileo_rx/config.py b/src/galileo_rx/config.py new file mode 100644 index 0000000..98dbfd7 --- /dev/null +++ b/src/galileo_rx/config.py @@ -0,0 +1,177 @@ +"""Typed configuration and strict YAML loading.""" + +from __future__ import annotations + +from dataclasses import asdict, dataclass, field, fields +from pathlib import Path +from typing import Any, Literal, TypeVar + +import yaml + +T = TypeVar("T") + + +@dataclass(slots=True) +class RfConfig: + sample_format: str = "complex128" + input_is_real_if: bool = False + sampling_frequency_hz: float = 16.368e6 + intermediate_frequency_hz: float = 4.092e6 + sample_bit_width: int = 8 + sample_endianness: Literal["little", "big"] = "little" + + def validate(self) -> None: + if self.sampling_frequency_hz <= 0: + raise ValueError("sampling_frequency_hz must be positive") + if self.input_is_real_if and not 0 < self.intermediate_frequency_hz < self.sampling_frequency_hz / 2: + raise ValueError("real-IF intermediate_frequency_hz must lie between DC and Nyquist") + if not 2 <= self.sample_bit_width <= 32: + raise ValueError("sample_bit_width must be in [2, 32]") + + +@dataclass(slots=True) +class AcquisitionConfig: + doppler_min_hz: float = -10_000.0 + doppler_max_hz: float = 10_000.0 + doppler_step_hz: float = 250.0 + coherent_integration_ms: float = 4.0 + noncoherent_accumulations: int = 5 + detection_threshold: float = 2.5 + peak_exclusion_chips: float = 1.0 + fft_length: int | None = None + zero_padding_mode: Literal["none", "next_power_of_two", "explicit"] = "next_power_of_two" + metric: Literal["peak_to_second", "peak_to_mean", "cfar"] = "peak_to_second" + parallelism: Literal["sequential", "doppler_vectorized", "prn_vectorized", "batched"] = "sequential" + doppler_batch_size: int = 8 + preserve_complex_sums: bool = False + bit_transition_mode: Literal["none", "hypothesis", "differential"] = "none" + secondary_code_mode: Literal["none", "wipeoff", "search"] = "none" + parabolic_interpolation: bool = True + boc_side_peak_strategy: Literal["flag", "prefer_main", "none"] = "flag" + code_doppler_aiding: bool = True + + def validate(self) -> None: + if self.doppler_max_hz < self.doppler_min_hz or self.doppler_step_hz <= 0: + raise ValueError("invalid Doppler search range or step") + if self.coherent_integration_ms <= 0 or self.noncoherent_accumulations < 1: + raise ValueError("integration settings must be positive") + if self.peak_exclusion_chips <= 0 or self.detection_threshold <= 0: + raise ValueError("detector parameters must be positive") + if self.zero_padding_mode == "explicit" and self.fft_length is None: + raise ValueError("explicit zero padding requires fft_length") + + +@dataclass(slots=True) +class TrackingConfig: + integration_ms: float = 4.0 + early_late_spacing_chips: float = 0.25 + very_early_late_spacing_chips: float = 0.75 + dll_noise_bandwidth_hz: float = 1.0 + pll_noise_bandwidth_hz: float = 15.0 + fll_noise_bandwidth_hz: float = 20.0 + pll_order: int = 3 + dll_order: int = 2 + use_fll_assist: bool = True + pull_in_duration_ms: float = 500.0 + damping_ratio: float = 0.707 + carrier_aiding: bool = True + secondary_code_mode: Literal["none", "wipeoff", "search"] = "wipeoff" + loss_of_lock_epochs: int = 10 + weak_signal_cn0_db_hz: float = 25.0 + + def validate(self) -> None: + if self.integration_ms <= 0: + raise ValueError("tracking integration_ms must be positive") + if not 0 < self.early_late_spacing_chips < self.very_early_late_spacing_chips: + raise ValueError("tap spacings must satisfy 0 < E/L < VE/VL") + if self.pll_order not in (2, 3) or self.dll_order not in (1, 2): + raise ValueError("supported PLL orders are 2/3 and DLL orders are 1/2") + if min(self.dll_noise_bandwidth_hz, self.pll_noise_bandwidth_hz, self.fll_noise_bandwidth_hz) <= 0: + raise ValueError("loop noise bandwidths must be positive") + + +@dataclass(slots=True) +class FrontendConfig: + remove_dc: bool = False + dc_alpha: float = 0.999 + agc_enabled: bool = False + agc_target_rms: float = 0.5 + fir_taps: list[float] = field(default_factory=list) + decimation: int = 1 + nco_phase_width: int = 32 + nco_lut_bits: int = 12 + + +@dataclass(slots=True) +class FixedPointConfig: + enabled: bool = False + input_total_bits: int = 8 + input_fractional_bits: int = 7 + coefficient_total_bits: int = 16 + coefficient_fractional_bits: int = 15 + accumulator_total_bits: int = 32 + accumulator_fractional_bits: int = 20 + overflow: Literal["saturate", "wrap"] = "saturate" + rounding: Literal["nearest", "truncate", "convergent"] = "nearest" + + +@dataclass(slots=True) +class ReceiverConfig: + signal_profile: str = "GALILEO_E1" + component: Literal["E1B", "E1C"] = "E1C" + prns: list[int] = field(default_factory=lambda: [1]) + rf: RfConfig = field(default_factory=RfConfig) + acquisition: AcquisitionConfig = field(default_factory=AcquisitionConfig) + tracking: TrackingConfig = field(default_factory=TrackingConfig) + frontend: FrontendConfig = field(default_factory=FrontendConfig) + fixed_point: FixedPointConfig = field(default_factory=FixedPointConfig) + + def validate(self) -> None: + self.rf.validate() + self.acquisition.validate() + self.tracking.validate() + if not self.prns or any(prn <= 0 for prn in self.prns): + raise ValueError("prns must contain positive identifiers") + if self.acquisition.coherent_integration_ms > 4.0: + if self.component == "E1B" and self.acquisition.bit_transition_mode == "none": + raise ValueError("E1B coherent integration beyond 4 ms requires a bit-transition mode") + if self.component == "E1C" and self.acquisition.secondary_code_mode == "none": + raise ValueError("E1C coherent integration beyond 4 ms requires secondary-code handling") + if self.tracking.integration_ms > 4.0: + if self.component == "E1B": + raise ValueError("E1B tracking integration beyond 4 ms is unsafe without symbol synchronization") + if self.tracking.secondary_code_mode == "none": + raise ValueError("E1C tracking beyond 4 ms requires secondary-code handling") + + def to_dict(self) -> dict[str, Any]: + return asdict(self) + + +def _construct(cls: type[T], values: dict[str, Any] | None) -> T: + values = values or {} + known = {item.name for item in fields(cls)} + unknown = set(values) - known + if unknown: + raise ValueError(f"unknown {cls.__name__} fields: {sorted(unknown)}") + return cls(**values) + + +def load_config(path: str | Path) -> ReceiverConfig: + with Path(path).open("r", encoding="utf-8") as stream: + raw = yaml.safe_load(stream) or {} + known = {item.name for item in fields(ReceiverConfig)} + unknown = set(raw) - known + if unknown: + raise ValueError(f"unknown ReceiverConfig fields: {sorted(unknown)}") + config = ReceiverConfig( + signal_profile=raw.get("signal_profile", "GALILEO_E1"), + component=raw.get("component", "E1C"), + prns=raw.get("prns", [1]), + rf=_construct(RfConfig, raw.get("rf")), + acquisition=_construct(AcquisitionConfig, raw.get("acquisition")), + tracking=_construct(TrackingConfig, raw.get("tracking")), + frontend=_construct(FrontendConfig, raw.get("frontend")), + fixed_point=_construct(FixedPointConfig, raw.get("fixed_point")), + ) + config.validate() + return config diff --git a/src/galileo_rx/diagnostics/__init__.py b/src/galileo_rx/diagnostics/__init__.py new file mode 100644 index 0000000..43aea21 --- /dev/null +++ b/src/galileo_rx/diagnostics/__init__.py @@ -0,0 +1,2 @@ +"""Optional plots and machine-readable reports.""" + diff --git a/src/galileo_rx/diagnostics/plots.py b/src/galileo_rx/diagnostics/plots.py new file mode 100644 index 0000000..2be1c29 --- /dev/null +++ b/src/galileo_rx/diagnostics/plots.py @@ -0,0 +1,96 @@ +"""Headless-safe diagnostics; matplotlib is imported only on demand.""" + +from __future__ import annotations + +from typing import Any + +import numpy as np + + +def acquisition_map(power: np.ndarray, doppler_bins_hz: np.ndarray, title: str = "Acquisition map") -> Any: + import matplotlib.pyplot as plt + + figure, axis = plt.subplots() + image = axis.imshow(power, aspect="auto", origin="lower", extent=[0, power.shape[1], doppler_bins_hz[0], doppler_bins_hz[-1]]) + axis.set(xlabel="Code phase (samples)", ylabel="Doppler (Hz)", title=title) + figure.colorbar(image, ax=axis, label="Correlation power") + return figure + + +def acquisition_profiles(power: np.ndarray, doppler_bins_hz: np.ndarray) -> Any: + import matplotlib.pyplot as plt + + doppler_index, code_index = np.unravel_index(int(np.argmax(power)), power.shape) + figure, axes = plt.subplots(1, 2) + axes[0].plot(power[doppler_index]) + axes[0].set(xlabel="Code phase (samples)", ylabel="Power") + axes[1].plot(doppler_bins_hz, power[:, code_index]) + axes[1].set(xlabel="Doppler (Hz)", ylabel="Power") + return figure + + +def acquisition_peak_neighborhood(power: np.ndarray, samples_per_chip: float, span_chips: float = 2.0) -> Any: + """Circular peak neighborhood including the BOC half-chip region.""" + import matplotlib.pyplot as plt + + doppler_index, code_index = np.unravel_index(int(np.argmax(power)), power.shape) + radius = max(1, int(np.ceil(span_chips * samples_per_chip))) + offsets = np.arange(-radius, radius + 1) + values = power[doppler_index, (code_index + offsets) % power.shape[1]] + figure, axis = plt.subplots() + axis.plot(offsets / samples_per_chip, values / np.max(values), marker=".") + axis.axvline(-0.5, color="tab:red", linestyle="--", alpha=0.5) + axis.axvline(0.5, color="tab:red", linestyle="--", alpha=0.5) + axis.set(xlabel="Offset from peak (chips)", ylabel="Normalized power", title="Peak and BOC side-peak neighborhood") + return figure + + +def prompt_constellation(measurements: list[Any], ignored_epochs: int = 0) -> Any: + import matplotlib.pyplot as plt + + selected = measurements[ignored_epochs:] + figure, axis = plt.subplots() + axis.scatter([item.prompt_i for item in selected], [item.prompt_q for item in selected], s=5, alpha=0.5) + axis.set(xlabel="Prompt I", ylabel="Prompt Q", title="Prompt correlator constellation") + axis.set_aspect("equal", adjustable="datalim") + return figure + + +def tracking_diagnostics(measurements: list[Any]) -> Any: + import matplotlib.pyplot as plt + + time_s = [item.time_s for item in measurements] + figure, axes = plt.subplots(4, 2, sharex=True) + series = [ + ("Prompt I/Q", [item.prompt_i for item in measurements], [item.prompt_q for item in measurements]), + ("Early/Prompt/Late magnitudes", [item.early_magnitude for item in measurements], [np.hypot(item.prompt_i, item.prompt_q) for item in measurements], [item.late_magnitude for item in measurements]), + ("PLL (rad)", [item.pll_error_rad for item in measurements], None), + ("FLL (Hz)", [item.fll_error_hz for item in measurements], None), + ("DLL (chips)", [item.dll_error_chips for item in measurements], None), + ("Carrier frequency (Hz)", [item.carrier_frequency_hz for item in measurements], None), + ("C/N0 (dB-Hz)", [np.nan if item.cn0_db_hz is None else item.cn0_db_hz for item in measurements], None), + ("Lock metrics", [item.carrier_lock_metric for item in measurements], [item.code_lock_metric for item in measurements]), + ] + for axis, item in zip(axes.flat, series): + title, first, *additional = item + axis.plot(time_s, first) + for second in additional: + if second is not None: + axis.plot(time_s, second) + axis.set_title(title) + axes[-1, 0].set_xlabel("Time (s)") + axes[-1, 1].set_xlabel("Time (s)") + figure.tight_layout() + return figure + + +def fixed_error(reference: np.ndarray, fixed: np.ndarray, overflow_indices: np.ndarray | None = None) -> Any: + import matplotlib.pyplot as plt + + figure, axis = plt.subplots() + axis.plot(np.asarray(fixed) - np.asarray(reference), label="fixed - float") + if overflow_indices is not None and overflow_indices.size: + axis.scatter(overflow_indices, np.zeros_like(overflow_indices), marker="x", label="overflow") + axis.set(xlabel="Sample", ylabel="Error", title="Fixed-point error") + axis.legend() + return figure diff --git a/src/galileo_rx/diagnostics/reports.py b/src/galileo_rx/diagnostics/reports.py new file mode 100644 index 0000000..5208514 --- /dev/null +++ b/src/galileo_rx/diagnostics/reports.py @@ -0,0 +1,32 @@ +"""Diagnostics export without a plotting dependency.""" + +from __future__ import annotations + +import csv +import json +from dataclasses import asdict, is_dataclass +from pathlib import Path +from typing import Any + +import numpy as np + + +def export_json(path: str | Path, value: Any) -> None: + payload = asdict(value) if is_dataclass(value) else value + Path(path).write_text(json.dumps(payload, indent=2, default=str), encoding="utf-8") + + +def export_tracking_csv(path: str | Path, measurements: list[Any]) -> None: + if not measurements: + Path(path).write_text("", encoding="utf-8") + return + rows = [asdict(item) for item in measurements] + with Path(path).open("w", newline="", encoding="utf-8") as stream: + writer = csv.DictWriter(stream, fieldnames=list(rows[0])) + writer.writeheader() + writer.writerows(rows) + + +def export_numpy(path: str | Path, **arrays: np.ndarray) -> None: + np.savez(Path(path), **arrays) + diff --git a/src/galileo_rx/fixed_point/__init__.py b/src/galileo_rx/fixed_point/__init__.py new file mode 100644 index 0000000..1a2967c --- /dev/null +++ b/src/galileo_rx/fixed_point/__init__.py @@ -0,0 +1,7 @@ +"""Bit-true signed fixed-point models.""" + +from .formats import FixedFormat, OverflowMode, RoundingMode +from .fixed_fft import FixedRadix2Fft +from .quantizer import Quantizer + +__all__ = ["FixedFormat", "OverflowMode", "RoundingMode", "Quantizer", "FixedRadix2Fft"] diff --git a/src/galileo_rx/fixed_point/bittrue_pipeline.py b/src/galileo_rx/fixed_point/bittrue_pipeline.py new file mode 100644 index 0000000..fd65923 --- /dev/null +++ b/src/galileo_rx/fixed_point/bittrue_pipeline.py @@ -0,0 +1,65 @@ +"""Numerical comparison and word-length sweep utilities.""" + +from __future__ import annotations + +from dataclasses import dataclass, asdict + +import numpy as np +import numpy.typing as npt + +from .fixed_acquisition import FixedPcpsAcquisition +from .formats import FixedFormat + + +@dataclass(slots=True) +class NumericComparison: + absolute_error_mean: float + relative_error_mean: float + rms_error: float + peak_error: float + acquisition_decision_agreement: bool | None = None + doppler_bin_agreement: bool | None = None + code_phase_agreement: bool | None = None + overflow_count: int = 0 + + def to_dict(self) -> dict[str, float | bool | None]: + return asdict(self) + + +def compare_arrays(reference: npt.ArrayLike, fixed: npt.ArrayLike, overflow_count: int = 0) -> NumericComparison: + reference_array = np.asarray(reference, dtype=np.float64) + fixed_array = np.asarray(fixed, dtype=np.float64) + error = fixed_array - reference_array + absolute = np.abs(error) + relative = absolute / np.maximum(np.abs(reference_array), np.finfo(float).eps) + return NumericComparison(float(np.mean(absolute)), float(np.mean(relative)), float(np.sqrt(np.mean(error**2))), float(np.max(absolute)), overflow_count=overflow_count) + + +def compare_acquisition(reference_power: npt.ArrayLike, fixed_grid, threshold: float) -> NumericComparison: + comparison = compare_arrays(reference_power, fixed_grid.power, fixed_grid.overflow_count) + reference_peak = np.unravel_index(int(np.argmax(reference_power)), np.asarray(reference_power).shape) + reference_metric = float(np.max(reference_power) / max(np.mean(reference_power), np.finfo(float).tiny)) + fixed_metric = float(np.max(fixed_grid.power) / max(np.mean(fixed_grid.power), np.finfo(float).tiny)) + comparison.acquisition_decision_agreement = bool((reference_metric >= threshold) == (fixed_metric >= threshold)) + comparison.doppler_bin_agreement = bool(reference_peak[0] == fixed_grid.peak_doppler_index) + comparison.code_phase_agreement = bool(reference_peak[1] == fixed_grid.peak_code_index) + return comparison + + +def sweep_acquisition_word_lengths(samples: npt.ArrayLike, replica: npt.ArrayLike, sampling_frequency_hz: float, doppler_bins_hz: npt.ArrayLike, bit_widths: list[int]) -> list[dict[str, float | int | bool | None]]: + array = np.asarray(samples, dtype=np.complex128) + code = np.asarray(replica) + time_s = np.arange(array.size) / sampling_frequency_hz + bins = np.asarray(doppler_bins_hz) + reference = np.asarray([ + np.abs(np.fft.ifft(np.fft.fft(array * np.exp(-2j * np.pi * doppler * time_s)) * np.conjugate(np.fft.fft(code)))) ** 2 + for doppler in bins + ]) + reports = [] + for bits in bit_widths: + model = FixedPcpsAcquisition(FixedFormat(bits, bits - 2), FixedFormat(bits + 8, bits), FixedFormat(48, 16, signed=False)) + grid = model.search(array, code, sampling_frequency_hz, bins) + report = compare_acquisition(reference, grid, 2.5).to_dict() + report["input_bits"] = bits + reports.append(report) + return reports diff --git a/src/galileo_rx/fixed_point/fixed_acquisition.py b/src/galileo_rx/fixed_point/fixed_acquisition.py new file mode 100644 index 0000000..ffa0e69 --- /dev/null +++ b/src/galileo_rx/fixed_point/fixed_acquisition.py @@ -0,0 +1,69 @@ +"""Quantized PCPS boundary model with explicit FFT scaling.""" + +from __future__ import annotations + +from dataclasses import dataclass + +import numpy as np +import numpy.typing as npt + +from .formats import FixedFormat, OverflowMode, RoundingMode +from .quantizer import Quantizer, dequantize_complex, quantize_complex + + +@dataclass(slots=True) +class FixedAcquisitionGrid: + power: npt.NDArray[np.float64] + peak_doppler_index: int + peak_code_index: int + overflow_count: int + + +class FixedPcpsAcquisition: + """Bit-true I/O/product/accumulator model around a normalized FFT primitive. + + The transform primitive models an FFT IP configured with deterministic 1/N + scaling. Vendor-specific butterfly truncation is intentionally delegated to + the cycle/RTL FFT model selected during implementation. + """ + + def __init__( + self, + sample_format: FixedFormat = FixedFormat(10, 8), + fft_format: FixedFormat = FixedFormat(20, 12), + power_format: FixedFormat = FixedFormat(48, 16, signed=False), + overflow: OverflowMode | str = OverflowMode.SATURATE, + rounding: RoundingMode | str = RoundingMode.NEAREST, + ) -> None: + self.input_q = Quantizer(sample_format, overflow, rounding) + self.fft_q = Quantizer(fft_format, overflow, rounding) + self.power_q = Quantizer(power_format, overflow, rounding) + self.sample_format = sample_format + self.fft_format = fft_format + + def search(self, samples: npt.ArrayLike, local_replica: npt.ArrayLike, sampling_frequency_hz: float, doppler_bins_hz: npt.ArrayLike) -> FixedAcquisitionGrid: + array = np.asarray(samples, dtype=np.complex128) + replica = np.asarray(local_replica, dtype=np.float64) + if array.size != replica.size: + raise ValueError("fixed acquisition samples and replica must have equal length") + in_r, in_i = quantize_complex(array, self.input_q) + quantized_samples = dequantize_complex(in_r, in_i, self.sample_format) + code_i = self.input_q.quantize(replica) + code = self.input_q.dequantize(code_i) + code_spectrum = np.conjugate(np.fft.fft(code) / array.size) + time_s = np.arange(array.size) / sampling_frequency_hz + bins = np.asarray(doppler_bins_hz, dtype=np.float64) + power = np.empty((bins.size, array.size), dtype=np.float64) + for index, doppler_hz in enumerate(bins): + mixed = quantized_samples * np.exp(-2j * np.pi * doppler_hz * time_s) + spectrum = np.fft.fft(mixed) / array.size + sr, si = quantize_complex(spectrum, self.fft_q) + spectrum_q = dequantize_complex(sr, si, self.fft_format) + product = spectrum_q * code_spectrum + pr, pi = quantize_complex(product, self.fft_q) + correlation = np.fft.ifft(dequantize_complex(pr, pi, self.fft_format)) * array.size + power[index] = self.power_q.dequantize(self.power_q.quantize(np.abs(correlation) ** 2)) + peak = np.unravel_index(int(np.argmax(power)), power.shape) + overflow_count = self.input_q.statistics.overflow_count + self.fft_q.statistics.overflow_count + self.power_q.statistics.overflow_count + return FixedAcquisitionGrid(power, int(peak[0]), int(peak[1]), overflow_count) + diff --git a/src/galileo_rx/fixed_point/fixed_correlator.py b/src/galileo_rx/fixed_point/fixed_correlator.py new file mode 100644 index 0000000..468368f --- /dev/null +++ b/src/galileo_rx/fixed_point/fixed_correlator.py @@ -0,0 +1,62 @@ +"""Integer mixer and correlator accumulation model.""" + +from __future__ import annotations + +from dataclasses import dataclass + +import numpy as np +import numpy.typing as npt + +from .fixed_nco import FixedNco +from .fixed_mixer import complex_mix_down +from .formats import FixedFormat, OverflowMode, RoundingMode +from .quantizer import Quantizer, quantize_complex + + +@dataclass(slots=True) +class FixedCorrelationResult: + prompt_real: int + prompt_imag: int + fractional_bits: int + overflow_count: int + + @property + def complex_value(self) -> complex: + return complex(self.prompt_real, self.prompt_imag) / (1 << self.fractional_bits) + + +class FixedCorrelator: + def __init__( + self, + sampling_frequency_hz: float, + carrier_frequency_hz: float, + sample_format: FixedFormat = FixedFormat(8, 7), + nco_format: FixedFormat = FixedFormat(16, 15), + accumulator_format: FixedFormat = FixedFormat(40, 22), + overflow: OverflowMode | str = OverflowMode.SATURATE, + rounding: RoundingMode | str = RoundingMode.NEAREST, + ) -> None: + self.sample_quantizer = Quantizer(sample_format, overflow, rounding) + self.nco = FixedNco(sampling_frequency_hz, carrier_frequency_hz, output_format=nco_format) + self.accumulator_quantizer = Quantizer(accumulator_format, overflow, rounding) + self.sample_format = sample_format + self.nco_format = nco_format + self.accumulator_format = accumulator_format + + def correlate_prompt(self, samples: npt.ArrayLike, replica: npt.ArrayLike) -> FixedCorrelationResult: + array = np.asarray(samples, dtype=np.complex128) + local = np.asarray(replica, dtype=np.int64) + if array.size != local.size or not set(np.unique(local).tolist()) <= {-1, 1}: + raise ValueError("replica must be a same-length +/-1 sequence") + sample_real, sample_imag = quantize_complex(array, self.sample_quantizer) + cosine, sine = self.nco.generate(array.size) + mixer_format = FixedFormat( + min(62, self.sample_format.total_bits + self.nco_format.total_bits + 1), + self.sample_format.fractional_bits + self.nco_format.fractional_bits, + ) + mixed = complex_mix_down(sample_real, sample_imag, cosine, sine, self.sample_format, self.nco_format, mixer_format) + real_sum = int(np.sum(mixed.real * local, dtype=object)) + imag_sum = int(np.sum(mixed.imag * local, dtype=object)) + real_q = int(self.accumulator_quantizer.requantize_integer([real_sum], mixer_format.fractional_bits)[0]) + imag_q = int(self.accumulator_quantizer.requantize_integer([imag_sum], mixer_format.fractional_bits)[0]) + return FixedCorrelationResult(real_q, imag_q, self.accumulator_format.fractional_bits, self.accumulator_quantizer.statistics.overflow_count) diff --git a/src/galileo_rx/fixed_point/fixed_fft.py b/src/galileo_rx/fixed_point/fixed_fft.py new file mode 100644 index 0000000..631a9dd --- /dev/null +++ b/src/galileo_rx/fixed_point/fixed_fft.py @@ -0,0 +1,100 @@ +"""Radix-2 stage-quantized FFT/IFFT oracle for RTL verification.""" + +from __future__ import annotations + +from dataclasses import dataclass + +import numpy as np +import numpy.typing as npt + +from .formats import FixedFormat, OverflowMode, RoundingMode +from .quantizer import Quantizer, dequantize_complex, quantize_complex + + +@dataclass(slots=True) +class FixedFftResult: + real: npt.NDArray[np.int64] + imag: npt.NDArray[np.int64] + fixed_format: FixedFormat + overflow_count: int + + def dequantize(self) -> npt.NDArray[np.complex128]: + return dequantize_complex(self.real, self.imag, self.fixed_format) + + +class FixedRadix2Fft: + """Decimation-in-time FFT with one-bit scaling at every stage. + + Forward output equals ``numpy.fft.fft(x) / N`` apart from declared + coefficient and butterfly quantization. The inverse uses the conjugation + identity, so it has NumPy IFFT scaling. + """ + + def __init__( + self, + data_format: FixedFormat = FixedFormat(20, 15), + twiddle_format: FixedFormat = FixedFormat(16, 15), + overflow: OverflowMode | str = OverflowMode.SATURATE, + rounding: RoundingMode | str = RoundingMode.CONVERGENT, + ) -> None: + self.data_format = data_format + self.twiddle_format = twiddle_format + self.overflow = overflow + self.rounding = rounding + self.data_quantizer = Quantizer(data_format, overflow, rounding) + self.twiddle_quantizer = Quantizer(twiddle_format, overflow, rounding) + + @staticmethod + def _bit_reversed_indices(length: int) -> npt.NDArray[np.int64]: + bits = length.bit_length() - 1 + return np.asarray([int(f"{index:0{bits}b}"[::-1], 2) for index in range(length)], dtype=np.int64) + + def _forward_integers(self, real: npt.NDArray[np.int64], imag: npt.NDArray[np.int64]) -> FixedFftResult: + length = real.size + if length == 0 or length & (length - 1): + raise ValueError("fixed radix-2 FFT length must be a nonzero power of two") + order = self._bit_reversed_indices(length) + out_real = real[order].astype(np.int64, copy=True) + out_imag = imag[order].astype(np.int64, copy=True) + butterfly_q = Quantizer(self.data_format, self.overflow, self.rounding) + size = 2 + while size <= length: + half = size // 2 + angle = -2.0 * np.pi * np.arange(half) / size + twiddle_real = self.twiddle_quantizer.quantize(np.cos(angle)) + twiddle_imag = self.twiddle_quantizer.quantize(np.sin(angle)) + product_fraction = self.data_format.fractional_bits + self.twiddle_format.fractional_bits + for first in range(0, length, size): + upper = slice(first, first + half) + lower = slice(first + half, first + size) + u_real = out_real[upper].copy() + u_imag = out_imag[upper].copy() + lower_real = out_real[lower].copy() + lower_imag = out_imag[lower].copy() + t_real = butterfly_q.requantize_integer(lower_real * twiddle_real - lower_imag * twiddle_imag, product_fraction) + t_imag = butterfly_q.requantize_integer(lower_real * twiddle_imag + lower_imag * twiddle_real, product_fraction) + # One-bit scale per stage bounds growth; source fractional+1 + # makes the integer requantizer perform a rounded divide by two. + out_real[upper] = butterfly_q.requantize_integer(u_real + t_real, self.data_format.fractional_bits + 1) + out_imag[upper] = butterfly_q.requantize_integer(u_imag + t_imag, self.data_format.fractional_bits + 1) + out_real[lower] = butterfly_q.requantize_integer(u_real - t_real, self.data_format.fractional_bits + 1) + out_imag[lower] = butterfly_q.requantize_integer(u_imag - t_imag, self.data_format.fractional_bits + 1) + size *= 2 + # Q1.(W-1) maps the mathematical +1 twiddle to its maximum positive + # code at table-build time; that coefficient approximation is not a + # runtime datapath overflow. + overflow_count = ( + self.data_quantizer.statistics.overflow_count + + butterfly_q.statistics.overflow_count + ) + return FixedFftResult(out_real, out_imag, self.data_format, overflow_count) + + def forward(self, values: npt.ArrayLike) -> FixedFftResult: + real, imag = quantize_complex(values, self.data_quantizer) + return self._forward_integers(real, imag) + + def inverse(self, values: npt.ArrayLike) -> FixedFftResult: + array = np.asarray(values, dtype=np.complex128) + real, imag = quantize_complex(np.conjugate(array), self.data_quantizer) + forward = self._forward_integers(real, imag) + return FixedFftResult(forward.real, -forward.imag, forward.fixed_format, forward.overflow_count) diff --git a/src/galileo_rx/fixed_point/fixed_loop_filter.py b/src/galileo_rx/fixed_point/fixed_loop_filter.py new file mode 100644 index 0000000..ec46540 --- /dev/null +++ b/src/galileo_rx/fixed_point/fixed_loop_filter.py @@ -0,0 +1,59 @@ +"""Bit-true tracking loop filter states and coefficients.""" + +from __future__ import annotations + +from dataclasses import dataclass, field + +from .formats import FixedFormat, OverflowMode, RoundingMode +from .quantizer import Quantizer +from galileo_rx.tracking.loop_filters import second_order_natural_frequency_rad_s + + +@dataclass(slots=True) +class FixedSecondOrderLoopFilter: + noise_bandwidth_hz: float + integration_time_s: float + damping_ratio: float = 0.707 + error_format: FixedFormat = FixedFormat(24, 18) + coefficient_format: FixedFormat = FixedFormat(24, 16) + state_format: FixedFormat = FixedFormat(32, 20) + overflow: OverflowMode | str = OverflowMode.SATURATE + rounding: RoundingMode | str = RoundingMode.CONVERGENT + integrator_integer: int = 0 + overflow_count: int = 0 + _error_q: Quantizer = field(init=False, repr=False) + _coefficient_q: Quantizer = field(init=False, repr=False) + _state_q: Quantizer = field(init=False, repr=False) + proportional_gain_integer: int = field(init=False) + integral_step_gain_integer: int = field(init=False) + + def __post_init__(self) -> None: + if self.integration_time_s <= 0: + raise ValueError("integration_time_s must be positive") + self._error_q = Quantizer(self.error_format, self.overflow, self.rounding) + self._coefficient_q = Quantizer(self.coefficient_format, self.overflow, self.rounding) + self._state_q = Quantizer(self.state_format, self.overflow, self.rounding) + wn = second_order_natural_frequency_rad_s(self.noise_bandwidth_hz, self.damping_ratio) + self.proportional_gain_integer = int(self._coefficient_q.quantize([2 * self.damping_ratio * wn])[0]) + self.integral_step_gain_integer = int(self._coefficient_q.quantize([wn**2 * self.integration_time_s])[0]) + + def update(self, error: float) -> float: + error_integer = int(self._error_q.quantize([error])[0]) + product_fraction = self.error_format.fractional_bits + self.coefficient_format.fractional_bits + integral_delta = int(self._state_q.requantize_integer([error_integer * self.integral_step_gain_integer], product_fraction)[0]) + self.integrator_integer = int(self._state_q.requantize_integer( + [self.integrator_integer + integral_delta], self.state_format.fractional_bits + )[0]) + proportional = int(self._state_q.requantize_integer( + [error_integer * self.proportional_gain_integer], product_fraction + )[0]) + output_integer = int(self._state_q.requantize_integer( + [proportional + self.integrator_integer], self.state_format.fractional_bits + )[0]) + self.overflow_count = ( + self._error_q.statistics.overflow_count + + self._coefficient_q.statistics.overflow_count + + self._state_q.statistics.overflow_count + ) + return output_integer / self.state_format.scale + diff --git a/src/galileo_rx/fixed_point/fixed_mixer.py b/src/galileo_rx/fixed_point/fixed_mixer.py new file mode 100644 index 0000000..b963cdf --- /dev/null +++ b/src/galileo_rx/fixed_point/fixed_mixer.py @@ -0,0 +1,48 @@ +"""Standalone bit-true complex mixer primitive.""" + +from __future__ import annotations + +from dataclasses import dataclass + +import numpy as np +import numpy.typing as npt + +from .formats import FixedFormat, OverflowMode, RoundingMode +from .quantizer import Quantizer + + +@dataclass(slots=True) +class FixedComplex: + real: npt.NDArray[np.int64] + imag: npt.NDArray[np.int64] + fixed_format: FixedFormat + overflow_count: int + + def dequantize(self) -> npt.NDArray[np.complex128]: + return (self.real.astype(np.float64) + 1j * self.imag.astype(np.float64)) / self.fixed_format.scale + + +def complex_mix_down( + sample_real: npt.ArrayLike, + sample_imag: npt.ArrayLike, + carrier_cos: npt.ArrayLike, + carrier_sin: npt.ArrayLike, + sample_format: FixedFormat, + carrier_format: FixedFormat, + output_format: FixedFormat, + overflow: OverflowMode | str = OverflowMode.SATURATE, + rounding: RoundingMode | str = RoundingMode.NEAREST, +) -> FixedComplex: + """Compute ``(I+jQ)*(cos-j*sin)`` from integer operands.""" + i = np.asarray(sample_real, dtype=np.int64) + q = np.asarray(sample_imag, dtype=np.int64) + c = np.asarray(carrier_cos, dtype=np.int64) + s = np.asarray(carrier_sin, dtype=np.int64) + if not (i.shape == q.shape == c.shape == s.shape): + raise ValueError("fixed mixer operands must have equal shapes") + product_fractional_bits = sample_format.fractional_bits + carrier_format.fractional_bits + quantizer = Quantizer(output_format, overflow, rounding) + real = quantizer.requantize_integer(i * c + q * s, product_fractional_bits) + imag = quantizer.requantize_integer(q * c - i * s, product_fractional_bits) + return FixedComplex(real, imag, output_format, quantizer.statistics.overflow_count) + diff --git a/src/galileo_rx/fixed_point/fixed_nco.py b/src/galileo_rx/fixed_point/fixed_nco.py new file mode 100644 index 0000000..7d6943b --- /dev/null +++ b/src/galileo_rx/fixed_point/fixed_nco.py @@ -0,0 +1,44 @@ +"""Bit-true phase word and quantized carrier LUT model.""" + +from __future__ import annotations + +from dataclasses import dataclass, field + +import numpy as np +import numpy.typing as npt + +from .formats import FixedFormat +from .quantizer import Quantizer + + +@dataclass(slots=True) +class FixedNco: + sampling_frequency_hz: float + frequency_hz: float + phase_width: int = 32 + lut_bits: int = 10 + output_format: FixedFormat = FixedFormat(16, 15) + phase_word: int = 0 + _cos_lut: npt.NDArray[np.int64] = field(init=False, repr=False) + _sin_lut: npt.NDArray[np.int64] = field(init=False, repr=False) + + def __post_init__(self) -> None: + if self.sampling_frequency_hz <= 0 or self.lut_bits > self.phase_width: + raise ValueError("invalid fixed NCO configuration") + phase = 2 * np.pi * np.arange(1 << self.lut_bits) / (1 << self.lut_bits) + quantizer = Quantizer(self.output_format) + self._cos_lut = quantizer.quantize(np.cos(phase)) + self._sin_lut = quantizer.quantize(np.sin(phase)) + + @property + def frequency_control_word(self) -> int: + return int(round(self.frequency_hz / self.sampling_frequency_hz * (1 << self.phase_width))) + + def generate(self, sample_count: int) -> tuple[npt.NDArray[np.int64], npt.NDArray[np.int64]]: + modulus = 1 << self.phase_width + fcw = self.frequency_control_word + words = np.asarray([(self.phase_word + index * fcw) % modulus for index in range(sample_count)], dtype=np.uint64) + address = words >> (self.phase_width - self.lut_bits) + self.phase_word = (self.phase_word + sample_count * fcw) % modulus + return self._cos_lut[address], self._sin_lut[address] + diff --git a/src/galileo_rx/fixed_point/formats.py b/src/galileo_rx/fixed_point/formats.py new file mode 100644 index 0000000..0f01756 --- /dev/null +++ b/src/galileo_rx/fixed_point/formats.py @@ -0,0 +1,62 @@ +"""Fixed-point format declarations.""" + +from dataclasses import dataclass +from enum import Enum + + +class OverflowMode(str, Enum): + SATURATE = "saturate" + WRAP = "wrap" + + +class RoundingMode(str, Enum): + NEAREST = "nearest" + TRUNCATE = "truncate" + CONVERGENT = "convergent" + + +@dataclass(frozen=True, slots=True) +class FixedFormat: + total_bits: int + fractional_bits: int + signed: bool = True + + def __post_init__(self) -> None: + if self.total_bits < 1 or self.fractional_bits < 0 or self.fractional_bits >= self.total_bits: + raise ValueError("fixed format requires total_bits >= 1 and 0 <= fractional_bits < total_bits") + + @property + def minimum_integer(self) -> int: + return -(1 << (self.total_bits - 1)) if self.signed else 0 + + @property + def maximum_integer(self) -> int: + return (1 << (self.total_bits - int(self.signed))) - 1 + + @property + def scale(self) -> int: + return 1 << self.fractional_bits + + @property + def lsb(self) -> float: + return 1.0 / self.scale + + +STARTING_WORD_LENGTHS: dict[str, FixedFormat] = { + "input_samples": FixedFormat(8, 7), + "mixer_sine_cosine": FixedFormat(16, 15), + "mixer_output": FixedFormat(18, 15), + "fft_input": FixedFormat(18, 15), + "fft_twiddle": FixedFormat(16, 15), + "fft_stage_output": FixedFormat(20, 15), + "correlation_product": FixedFormat(36, 30), + "ifft_output": FixedFormat(28, 15), + "coherent_accumulator": FixedFormat(40, 15), + "noncoherent_accumulator": FixedFormat(56, 20, signed=False), + "carrier_phase_accumulator": FixedFormat(32, 0, signed=False), + "code_phase_accumulator": FixedFormat(48, 32, signed=False), + "loop_filter_state": FixedFormat(32, 20), + "frequency_control_word": FixedFormat(32, 0), + "discriminator_output": FixedFormat(24, 18), +} + diff --git a/src/galileo_rx/fixed_point/quantizer.py b/src/galileo_rx/fixed_point/quantizer.py new file mode 100644 index 0000000..95f8e1a --- /dev/null +++ b/src/galileo_rx/fixed_point/quantizer.py @@ -0,0 +1,71 @@ +"""Two's-complement quantization with observable overflow and error.""" + +from __future__ import annotations + +from dataclasses import dataclass + +import numpy as np +import numpy.typing as npt + +from .formats import FixedFormat, OverflowMode, RoundingMode + + +@dataclass(slots=True) +class QuantizationStatistics: + sample_count: int = 0 + overflow_count: int = 0 + squared_error_sum: float = 0.0 + peak_error: float = 0.0 + + @property + def rms_error(self) -> float: + return float(np.sqrt(self.squared_error_sum / self.sample_count)) if self.sample_count else 0.0 + + +class Quantizer: + def __init__(self, fixed_format: FixedFormat, overflow: OverflowMode | str = OverflowMode.SATURATE, rounding: RoundingMode | str = RoundingMode.NEAREST) -> None: + self.format = fixed_format + self.overflow = OverflowMode(overflow) + self.rounding = RoundingMode(rounding) + self.statistics = QuantizationStatistics() + + def _round(self, scaled: np.ndarray) -> np.ndarray: + if self.rounding == RoundingMode.NEAREST: + return np.floor(scaled + 0.5) + if self.rounding == RoundingMode.TRUNCATE: + return np.trunc(scaled) + return np.rint(scaled) # IEEE ties-to-even is convergent rounding. + + def quantize(self, values: npt.ArrayLike) -> npt.NDArray[np.int64]: + array = np.asarray(values, dtype=np.float64) + rounded = self._round(array * self.format.scale).astype(np.int64) + overflow_mask = (rounded < self.format.minimum_integer) | (rounded > self.format.maximum_integer) + self.statistics.overflow_count += int(np.count_nonzero(overflow_mask)) + if self.overflow == OverflowMode.SATURATE: + quantized = np.clip(rounded, self.format.minimum_integer, self.format.maximum_integer) + else: + modulus = 1 << self.format.total_bits + quantized = (rounded - self.format.minimum_integer) % modulus + self.format.minimum_integer + restored = quantized.astype(np.float64) / self.format.scale + error = restored - array + self.statistics.sample_count += array.size + self.statistics.squared_error_sum += float(np.sum(error**2)) + self.statistics.peak_error = max(self.statistics.peak_error, float(np.max(np.abs(error))) if error.size else 0.0) + return quantized.astype(np.int64) + + def dequantize(self, integers: npt.ArrayLike) -> npt.NDArray[np.float64]: + return np.asarray(integers, dtype=np.float64) / self.format.scale + + def requantize_integer(self, integers: npt.ArrayLike, source_fractional_bits: int) -> npt.NDArray[np.int64]: + values = np.asarray(integers, dtype=np.float64) / float(1 << source_fractional_bits) + return self.quantize(values) + + +def quantize_complex(values: npt.ArrayLike, quantizer: Quantizer) -> tuple[npt.NDArray[np.int64], npt.NDArray[np.int64]]: + array = np.asarray(values, dtype=np.complex128) + return quantizer.quantize(array.real), quantizer.quantize(array.imag) + + +def dequantize_complex(real: npt.ArrayLike, imag: npt.ArrayLike, fixed_format: FixedFormat) -> npt.NDArray[np.complex128]: + return (np.asarray(real, dtype=np.float64) + 1j * np.asarray(imag, dtype=np.float64)) / fixed_format.scale + diff --git a/src/galileo_rx/frontend/__init__.py b/src/galileo_rx/frontend/__init__.py new file mode 100644 index 0000000..10b8793 --- /dev/null +++ b/src/galileo_rx/frontend/__init__.py @@ -0,0 +1,7 @@ +"""Streaming digital front-end blocks.""" + +from .frontend_chain import FrontendChain +from .mixer import PhaseAccumulatorNco + +__all__ = ["FrontendChain", "PhaseAccumulatorNco"] + diff --git a/src/galileo_rx/frontend/agc.py b/src/galileo_rx/frontend/agc.py new file mode 100644 index 0000000..35ef7e4 --- /dev/null +++ b/src/galileo_rx/frontend/agc.py @@ -0,0 +1,24 @@ +"""Block RMS normalization with bounded gain.""" + +import numpy as np +import numpy.typing as npt + + +class BlockAgc: + def __init__(self, target_rms: float = 0.5, smoothing: float = 0.9, min_gain: float = 1e-3, max_gain: float = 1e3) -> None: + if target_rms <= 0 or not 0 <= smoothing < 1: + raise ValueError("invalid AGC parameters") + self.target_rms = target_rms + self.smoothing = smoothing + self.min_gain = min_gain + self.max_gain = max_gain + self.gain = 1.0 + + def process(self, samples: npt.NDArray[np.generic]) -> npt.NDArray[np.complex128]: + array = np.asarray(samples, dtype=np.complex128) + rms = float(np.sqrt(np.mean(np.abs(array) ** 2))) if array.size else 0.0 + desired = self.target_rms / max(rms, 1e-15) + desired = float(np.clip(desired, self.min_gain, self.max_gain)) + self.gain = self.smoothing * self.gain + (1.0 - self.smoothing) * desired + return array * self.gain + diff --git a/src/galileo_rx/frontend/dc_blocker.py b/src/galileo_rx/frontend/dc_blocker.py new file mode 100644 index 0000000..1fb66b5 --- /dev/null +++ b/src/galileo_rx/frontend/dc_blocker.py @@ -0,0 +1,25 @@ +"""First-order streaming DC blocker.""" + +from __future__ import annotations + +import numpy as np +import numpy.typing as npt + + +class DcBlocker: + def __init__(self, alpha: float = 0.999) -> None: + if not 0 <= alpha < 1: + raise ValueError("DC blocker alpha must be in [0, 1)") + self.alpha = alpha + self.previous_input = 0j + self.previous_output = 0j + + def process(self, samples: npt.NDArray[np.generic]) -> npt.NDArray[np.complex128]: + output = np.empty(samples.size, dtype=np.complex128) + for index, value in enumerate(np.asarray(samples, dtype=np.complex128)): + current = value - self.previous_input + self.alpha * self.previous_output + output[index] = current + self.previous_input = value + self.previous_output = current + return output + diff --git a/src/galileo_rx/frontend/decimator.py b/src/galileo_rx/frontend/decimator.py new file mode 100644 index 0000000..fba24b2 --- /dev/null +++ b/src/galileo_rx/frontend/decimator.py @@ -0,0 +1,29 @@ +"""Stateful FIR and integer decimation.""" + +from __future__ import annotations + +import numpy as np +import numpy.typing as npt +from scipy.signal import lfilter + + +class FirDecimator: + def __init__(self, taps: list[float] | npt.NDArray[np.float64] | None = None, factor: int = 1) -> None: + if factor < 1: + raise ValueError("decimation factor must be >= 1") + self.taps = np.asarray(taps if taps is not None and len(taps) else [1.0], dtype=np.float64) + self.factor = factor + self._state = np.zeros(max(0, self.taps.size - 1), dtype=np.complex128) + self._decimation_phase = 0 + + def process(self, samples: npt.NDArray[np.generic]) -> npt.NDArray[np.complex128]: + array = np.asarray(samples, dtype=np.complex128) + if self.taps.size == 1: + filtered = array * self.taps[0] + else: + filtered, self._state = lfilter(self.taps, [1.0], array, zi=self._state) + start = (-self._decimation_phase) % self.factor + result = filtered[start::self.factor] + self._decimation_phase = (self._decimation_phase + array.size) % self.factor + return result + diff --git a/src/galileo_rx/frontend/frontend_chain.py b/src/galileo_rx/frontend/frontend_chain.py new file mode 100644 index 0000000..7d5d9f3 --- /dev/null +++ b/src/galileo_rx/frontend/frontend_chain.py @@ -0,0 +1,42 @@ +"""Composable streaming RF-to-complex-baseband chain.""" + +from __future__ import annotations + +import numpy as np +import numpy.typing as npt + +from galileo_rx.config import FrontendConfig, RfConfig +from .agc import BlockAgc +from .dc_blocker import DcBlocker +from .decimator import FirDecimator +from .mixer import ComplexMixer, PhaseAccumulatorNco + + +class FrontendChain: + def __init__(self, rf: RfConfig, config: FrontendConfig) -> None: + self.rf = rf + self.config = config + self.dc = DcBlocker(config.dc_alpha) if config.remove_dc else None + self.agc = BlockAgc(config.agc_target_rms) if config.agc_enabled else None + self.mixer = ComplexMixer( + PhaseAccumulatorNco(rf.sampling_frequency_hz, rf.intermediate_frequency_hz, config.nco_phase_width, config.nco_lut_bits) + ) + self.decimator = FirDecimator(config.fir_taps, config.decimation) + + @property + def output_sampling_frequency_hz(self) -> float: + return self.rf.sampling_frequency_hz / self.config.decimation + + def process(self, samples: npt.NDArray[np.generic]) -> npt.NDArray[np.complex128]: + array = np.asarray(samples) + if np.issubdtype(array.dtype, np.integer): + array = array.astype(np.float64) / float(1 << (self.rf.sample_bit_width - 1)) + array = array.astype(np.complex128) + if self.dc is not None: + array = self.dc.process(array) + if self.agc is not None: + array = self.agc.process(array) + if self.rf.input_is_real_if or self.rf.intermediate_frequency_hz != 0: + array = self.mixer.process(array, downconvert=True) + return self.decimator.process(array) + diff --git a/src/galileo_rx/frontend/mixer.py b/src/galileo_rx/frontend/mixer.py new file mode 100644 index 0000000..7cbd37d --- /dev/null +++ b/src/galileo_rx/frontend/mixer.py @@ -0,0 +1,66 @@ +"""Floating and LUT phase-accumulator carrier NCO.""" + +from __future__ import annotations + +from dataclasses import dataclass, field + +import numpy as np +import numpy.typing as npt + + +@dataclass(slots=True) +class PhaseAccumulatorNco: + sampling_frequency_hz: float + frequency_hz: float + phase_width: int = 32 + lut_bits: int = 12 + phase_word: int = 0 + _lut: npt.NDArray[np.complex128] = field(init=False, repr=False) + + def __post_init__(self) -> None: + if self.sampling_frequency_hz <= 0 or not 8 <= self.phase_width <= 64: + raise ValueError("invalid NCO sampling frequency or phase width") + if not 4 <= self.lut_bits <= min(self.phase_width, 20): + raise ValueError("invalid LUT address width") + size = 1 << self.lut_bits + self._lut = np.exp(2j * np.pi * np.arange(size) / size) + + @property + def modulus(self) -> int: + return 1 << self.phase_width + + @property + def frequency_control_word(self) -> int: + return int(round(self.frequency_hz / self.sampling_frequency_hz * self.modulus)) + + @property + def actual_frequency_hz(self) -> float: + return self.frequency_control_word * self.sampling_frequency_hz / self.modulus + + def set_frequency(self, frequency_hz: float) -> None: + self.frequency_hz = frequency_hz + + def generate(self, sample_count: int, conjugate: bool = False, use_lut: bool = False) -> npt.NDArray[np.complex128]: + if sample_count < 0: + raise ValueError("sample_count must be nonnegative") + fcw = self.frequency_control_word + words = (self.phase_word + np.arange(sample_count, dtype=object) * fcw) + if use_lut: + shift = self.phase_width - self.lut_bits + addresses = np.asarray([(int(word) % self.modulus) >> shift for word in words], dtype=np.int64) + values = self._lut[addresses] + else: + phases = np.asarray([int(word) % self.modulus for word in words], dtype=np.float64) / self.modulus + values = np.exp(2j * np.pi * phases) + self.phase_word = int((self.phase_word + sample_count * fcw) % self.modulus) + return np.conjugate(values) if conjugate else values + + +class ComplexMixer: + def __init__(self, nco: PhaseAccumulatorNco, use_lut: bool = False) -> None: + self.nco = nco + self.use_lut = use_lut + + def process(self, samples: npt.NDArray[np.generic], downconvert: bool = True) -> npt.NDArray[np.complex128]: + array = np.asarray(samples, dtype=np.complex128) + return array * self.nco.generate(array.size, conjugate=downconvert, use_lut=self.use_lut) diff --git a/src/galileo_rx/io/__init__.py b/src/galileo_rx/io/__init__.py new file mode 100644 index 0000000..5244b0c --- /dev/null +++ b/src/galileo_rx/io/__init__.py @@ -0,0 +1,14 @@ +"""Sample file I/O.""" + +from .sample_reader import SampleReader, read_samples +from .sample_writer import write_samples +from .signalsim_reader import SignalSimReader, SignalSimSampleFormat, SignalSimSampleSpec + +__all__ = [ + "SampleReader", + "SignalSimReader", + "SignalSimSampleFormat", + "SignalSimSampleSpec", + "read_samples", + "write_samples", +] diff --git a/src/galileo_rx/io/sample_reader.py b/src/galileo_rx/io/sample_reader.py new file mode 100644 index 0000000..f1a32ee --- /dev/null +++ b/src/galileo_rx/io/sample_reader.py @@ -0,0 +1,35 @@ +"""Block-streaming raw sample input.""" + +from __future__ import annotations + +from pathlib import Path +from typing import Iterator + +import numpy as np +import numpy.typing as npt + + +def _dtype(sample_format: str, endianness: str) -> np.dtype: + mapping = {"complex128": "c16", "float64": "f8", "complex64": "c8", "float32": "f4", "int8": "i1", "int16": "i2"} + if sample_format not in mapping: + raise ValueError(f"unsupported sample format {sample_format!r}") + prefix = "<" if endianness == "little" else ">" + return np.dtype(prefix + mapping[sample_format]) + + +def read_samples(path: str | Path, sample_format: str = "complex128", endianness: str = "little", count: int = -1, offset_samples: int = 0) -> npt.NDArray[np.generic]: + dtype = _dtype(sample_format, endianness) + return np.fromfile(Path(path), dtype=dtype, count=count, offset=offset_samples * dtype.itemsize) + + +class SampleReader: + def __init__(self, path: str | Path, sample_format: str = "complex128", endianness: str = "little") -> None: + self.path = Path(path) + self.dtype = _dtype(sample_format, endianness) + + def blocks(self, block_samples: int) -> Iterator[npt.NDArray[np.generic]]: + if block_samples <= 0: + raise ValueError("block_samples must be positive") + with self.path.open("rb") as stream: + while block := np.fromfile(stream, dtype=self.dtype, count=block_samples): + yield block diff --git a/src/galileo_rx/io/sample_writer.py b/src/galileo_rx/io/sample_writer.py new file mode 100644 index 0000000..3c349c8 --- /dev/null +++ b/src/galileo_rx/io/sample_writer.py @@ -0,0 +1,13 @@ +"""Raw sample output.""" + +from pathlib import Path + +import numpy as np +import numpy.typing as npt + + +def write_samples(path: str | Path, samples: npt.NDArray[np.generic], endianness: str = "little") -> None: + array = np.asarray(samples) + byte_order = "<" if endianness == "little" else ">" + array.astype(array.dtype.newbyteorder(byte_order), copy=False).tofile(Path(path)) + diff --git a/src/galileo_rx/io/signalsim_reader.py b/src/galileo_rx/io/signalsim_reader.py new file mode 100644 index 0000000..6434b55 --- /dev/null +++ b/src/galileo_rx/io/signalsim_reader.py @@ -0,0 +1,154 @@ +"""Strict adapters for globsky/SignalSim complex-IQ files. + +All decoded samples are promoted to ``complex128``. ``scale_counts_per_unit`` +is explicit: use 1.0 for raw ADC counts, 25.0 for IQ8 physical amplitude at +AGC gain 1, 3277.0 for IQ16, or the actual final AGC-adjusted scale. +""" + +from __future__ import annotations + +from dataclasses import dataclass +from enum import Enum +from pathlib import Path +from typing import Iterator, Literal + +import numpy as np +import numpy.typing as npt + + +class SignalSimSampleFormat(str, Enum): + IQ8 = "IQ8" + IQ16 = "IQ16" + IQ4 = "IQ4" + IQ2 = "IQ2" + FLOAT32_IQ = "FLOAT32_IQ" + FLOAT64_IQ = "FLOAT64_IQ" + + +@dataclass(frozen=True, slots=True) +class SignalSimSampleSpec: + sample_format: SignalSimSampleFormat | str = SignalSimSampleFormat.IQ8 + byte_order: Literal["little", "big"] = "little" + iq_order: Literal["IQ", "QI"] = "IQ" + scale_counts_per_unit: float = 1.0 + + def __post_init__(self) -> None: + object.__setattr__(self, "sample_format", SignalSimSampleFormat(self.sample_format)) + if self.scale_counts_per_unit <= 0.0 or not np.isfinite(self.scale_counts_per_unit): + raise ValueError("scale_counts_per_unit must be finite and positive") + if self.sample_format == SignalSimSampleFormat.IQ16 and self.byte_order != "little": + # This is allowed for hand-crafted/converted data, but is not native SignalSim. + pass + + +def _decode_sign_magnitude(values: np.ndarray, sign_mask: int, magnitude_mask: int) -> np.ndarray: + magnitude = (values & magnitude_mask).astype(np.float64) + return np.where((values & sign_mask) != 0, -magnitude, magnitude) + + +class SignalSimReader: + """Random-access and block-streaming SignalSim sample reader.""" + + def __init__(self, path: str | Path, spec: SignalSimSampleSpec | None = None, *, memory_map: bool = False) -> None: + self.path = Path(path) + self.spec = spec or SignalSimSampleSpec() + self.memory_map = memory_map + if not self.path.is_file(): + raise FileNotFoundError(self.path) + + @property + def sample_count(self) -> int: + byte_count = self.path.stat().st_size + fmt = self.spec.sample_format + divisor = { + SignalSimSampleFormat.IQ8: 2, + SignalSimSampleFormat.IQ16: 4, + SignalSimSampleFormat.IQ4: 1, + SignalSimSampleFormat.FLOAT32_IQ: 8, + SignalSimSampleFormat.FLOAT64_IQ: 16, + }.get(fmt) + if fmt == SignalSimSampleFormat.IQ2: + return byte_count * 2 + assert divisor is not None + if byte_count % divisor: + raise ValueError(f"truncated {fmt.value} file: {byte_count} bytes is not a whole complex sample") + return byte_count // divisor + + def _raw_bytes(self) -> npt.NDArray[np.uint8]: + if self.memory_map: + return np.memmap(self.path, dtype=np.uint8, mode="r") + return np.fromfile(self.path, dtype=np.uint8) + + def read(self, count: int = -1, offset_samples: int = 0, *, allow_truncated: bool = False) -> npt.NDArray[np.complex128]: + available = self.sample_count + if offset_samples < 0 or offset_samples > available: + raise ValueError(f"offset_samples must be within 0..{available}") + requested = available - offset_samples if count < 0 else count + if requested < 0: + raise ValueError("count must be -1 or nonnegative") + remaining = available - offset_samples + if requested > remaining: + if not allow_truncated: + raise EOFError(f"requested {requested} samples at offset {offset_samples}, only {remaining} remain") + requested = remaining + if requested == 0: + return np.empty(0, dtype=np.complex128) + + fmt = self.spec.sample_format + if fmt == SignalSimSampleFormat.IQ2: + decoded = self._decode_iq2(offset_samples, requested) + elif fmt == SignalSimSampleFormat.IQ4: + raw = self._raw_bytes()[offset_samples : offset_samples + requested] + i_values = _decode_sign_magnitude(raw >> 4, 0x8, 0x7) + q_values = _decode_sign_magnitude(raw & 0xF, 0x8, 0x7) + decoded = i_values + 1j * q_values + else: + scalar_dtype = { + SignalSimSampleFormat.IQ8: np.dtype("i1"), + SignalSimSampleFormat.IQ16: np.dtype(("<" if self.spec.byte_order == "little" else ">") + "i2"), + SignalSimSampleFormat.FLOAT32_IQ: np.dtype(("<" if self.spec.byte_order == "little" else ">") + "f4"), + SignalSimSampleFormat.FLOAT64_IQ: np.dtype(("<" if self.spec.byte_order == "little" else ">") + "f8"), + }[fmt] + scalar_offset = offset_samples * 2 + if self.memory_map: + scalars = np.memmap(self.path, dtype=scalar_dtype, mode="r", offset=scalar_offset * scalar_dtype.itemsize, shape=(requested * 2,)) + else: + scalars = np.fromfile(self.path, dtype=scalar_dtype, count=requested * 2, offset=scalar_offset * scalar_dtype.itemsize) + first = scalars[0::2].astype(np.float64) + second = scalars[1::2].astype(np.float64) + decoded = first + 1j * second + if self.spec.iq_order == "QI": + decoded = decoded.imag + 1j * decoded.real + return np.asarray(decoded / np.float64(self.spec.scale_counts_per_unit), dtype=np.complex128) + + def _decode_iq2(self, offset_samples: int, count: int) -> npt.NDArray[np.complex128]: + first_byte = offset_samples // 2 + last_sample = offset_samples + count + last_byte = (last_sample + 1) // 2 + raw = self._raw_bytes()[first_byte:last_byte] + output = np.empty(raw.size * 2, dtype=np.complex128) + # Each 2-bit sign/magnitude value has levels 0 and +/-1. Samples 0/1 + # occupy the low/high nibbles respectively (I then Q within a nibble). + for lane, shift in enumerate((0, 4)): + nibble = raw >> shift + i_values = _decode_sign_magnitude(nibble, 0x2, 0x1) + q_values = _decode_sign_magnitude(nibble, 0x8, 0x4) / 4.0 + output[lane::2] = i_values + 1j * q_values + begin = offset_samples & 1 + return output[begin : begin + count] + + def blocks(self, block_samples: int, *, offset_samples: int = 0, count: int = -1) -> Iterator[npt.NDArray[np.complex128]]: + if block_samples <= 0: + raise ValueError("block_samples must be positive") + remaining = self.sample_count - offset_samples if count < 0 else count + cursor = offset_samples + while remaining > 0: + block_count = min(block_samples, remaining) + block = self.read(block_count, cursor, allow_truncated=True) + if block.size == 0: + break + yield block + cursor += block.size + remaining -= block.size + if block.size < block_count: + break diff --git a/src/galileo_rx/rtl_model/__init__.py b/src/galileo_rx/rtl_model/__init__.py new file mode 100644 index 0000000..56e9ef3 --- /dev/null +++ b/src/galileo_rx/rtl_model/__init__.py @@ -0,0 +1,6 @@ +"""Cycle-oriented interfaces and hardware scheduling estimates.""" + +from .cycle_model import AcquisitionArchitectureEstimate, TrackingScheduler + +__all__ = ["AcquisitionArchitectureEstimate", "TrackingScheduler"] + diff --git a/src/galileo_rx/rtl_model/architecture.md b/src/galileo_rx/rtl_model/architecture.md new file mode 100644 index 0000000..625f398 --- /dev/null +++ b/src/galileo_rx/rtl_model/architecture.md @@ -0,0 +1,71 @@ +# Receiver RTL module contract + +Widths below are proposed starting points and must be confirmed by the sweep. +Every stream transfers only on `valid && ready`; `last` marks an integration or +FFT frame. Configuration registers are stable during a frame. Arithmetic data +saturates and raises a sticky overflow flag unless natural NCO wrap is stated. + +| Module | Input → output | Width / binary point | Latency & throughput | State / memory | Reset and verification | +|---|---|---|---|---|---| +| `sample_input` | ADC/file words → signed I/Q stream | 8–16 integer or Q1.(W-1) | 1, one sample/clock | optional CDC FIFO | clear valid/FIFO; replay exported vectors | +| `dc_blocker` | I/Q → high-pass I/Q | 18/Q15 internal | 2–4, one/clock | previous x/y per component | zero state; impulse/DC tests | +| `agc_or_scaler` | I/Q, gain → scaled I/Q | gain 18/Q16, out 18/Q15 | 2, one/clock | gain/RMS window | unity gain; float/fixed block comparison | +| `ddc_nco` | signed FCW, phase load → cos/sin | phase 32 unsigned, LUT 16/Q15 | 1–3, one/clock | phase accumulator, LUT BRAM | programmed phase; FCW/continuity tests | +| `complex_mixer` | sample, cos/sin → baseband | 8×16, out 18/Q15 | 3–5, one/clock | pipeline only | clear valid; tone/sign test | +| `fir_decimator` | baseband → filtered/decimated | coeff 18/Q17, accum 36+ | tap dependent | delay line/coeff ROM/phase | clear delay/phase; SciPy impulse comparison | +| `sample_buffer` | stream → framed random read | 18-bit I + 18-bit Q | one write/clock, read architecture dependent | `M*N_s` complex words, ping-pong | pointers zero; boundary/wrap tests | +| `code_rom` | PRN/component/chip addr → +/-1 | 1 sign bit | 1 | validated code ROM only | no invented defaults; checksum against provider | +| `code_nco` | FCW/phase → chip address/fraction | 48, 32 fractional | 1, one/sample | phase and epoch counter | phase load; noninteger-rate test | +| `boc_subcarrier_nco` | code fraction → sign | phase fraction MSB | combinational/1 | none or phase state | defined sine-phase polarity test | +| `fft_controller` | frame/config → FFT commands | address `ceil(log2 N)` | control dependent | frame/bin/PRN counters | idle reset; transaction assertions | +| `streaming_fft` | complex frame → spectrum | 18/Q15 in, 20/Q15 stage, configurable shifts | IP-specific `C_FFT`, initiation one/clock | twiddle ROM, delay/transpose RAM | frame reset only; impulse/tone/random bit vectors | +| `complex_multiplier` | spectra → product | 20/Q15 × 16/Q15, 36/Q30 full | 3–6, one/clock | pipeline | clear valid; exhaustive small-width test | +| `code_fft_memory` | PRN/address → conjugated FFT | 20/Q15 complex | 1–2 | `P*N*40` bits or banked subset | contents retained; CRC and software comparison | +| `correlation_ifft` | product frame → correlation | 20/Q15 → 28/Q15 | IP-specific | FFT RAM/twiddles | scaling-vector test | +| `magnitude_squared` | complex → unsigned power | 28/Q15 → 56/Q30, then configured 48/Q16 | 4, one/clock | pipeline | saturation sticky; corner tests | +| `noncoherent_accumulator` | power/address → sum | unsigned 56/Q20 | read-modify-write 2–3 | `D*N_s` words per active PRN/lane | clear at search; coherent/noncoherent vectors | +| `peak_search` | power stream → top/second/noise | 56-bit power, wide mean accumulator | one scan, one/clock | top values, guard FIFO/circular rescan | clear per map; wraparound guard tests | +| `acquisition_controller` | command → result stream | register/control | search latency | PRN/bin/epoch/hypothesis FSM | idle/abort; end-to-end generated vectors | +| `tracking_correlator_bank` | wiped sample, five signs → products | 18/Q15 sample, sign code | 2–5, channel/sample throughput parameter | pipeline | valid reset; vector/cycle correlator equality | +| `accumulate_and_dump` | tap products → five sums | 40/Q15 complex | one/sample, dump at epoch | ten accumulators/channel | zero on dump/reset; exact integer sums | +| `tracking_discriminators` | tap sums → PLL/FLL/DLL | input 40/Q15, output 24/Q18 | LUT/CORDIC dependent | previous prompt per channel | zero history; signs/units/corner quadrants | +| `loop_filter` | errors/config → corrections | 32/Q20 state, 24/Q18 coeff | 3–10 per update | integrators/channel | zero or software load; coefficient/step vectors | +| `carrier_nco` | correction/FCW → carrier | phase 32 unsigned | one/sample | phase/FCW/channel | natural wrap; continuity and pull-in | +| `tracking_channel_scheduler` | sample + state RAM → lane jobs | IDs/addresses | must meet scheduling inequality | active bitmap, round-robin pointer | idle; assertions for deadline/no collision | +| `channel_state_ram` | scheduler read/write | implementation record ~512 bits/channel | dual-port 1–2 | all NCO/loop/lock/secondary state | configurable preserve/clear; context-switch test | +| `measurement_output` | epoch state → host stream | packed 32-bit words | burst per epoch | small FIFO | clear FIFO; schema/golden CSV comparison | + +`fir_decimator` is bypassable. `ddc_nco` can expose `(x,y,z,valid,ready)` instead +of LUT output for a later CORDIC without changing mixer control. FFT RAM banking, +scaling schedule, and vendor IP latency are deliberately parameters, not hidden +assumptions. + +For side-peak/unambiguous extensions, the acquisition controller accepts a +replica-strategy identifier and the tracking bank already supplies VEVL. CBOC +adds a modulation generator/combiner behind the same sign-replica interface. + +## External-vector handoff contract + +The SignalSim quick vector is the first external RTL oracle. The generated +manifest contains raw IQ8 hex, sample timestamps, search limits, coherent and +noncoherent counts, FFT length, carrier/code FCWs, acquired code phase and +Doppler, E1B/E1C dump lengths, and E1C secondary phase. Symbolic keys become +APB fields once the register address map is frozen. + +The software handoff must program two independent quantities: + +```text +carrier_nco_frequency = configured_IF_center + acquired_Doppler +code_aiding_Doppler = carrier_nco_frequency - configured_IF_center +``` + +Using the full carrier NCO frequency for code aiding was observed to drive the +code NCO about 1330 Hz fast at 2.046 MHz IF and lose lock after one epoch. RTL +and firmware assertions should check that the aiding value lies within the +configured Doppler search range, not the sampled IF range. + +The E1B channel uses 16,368-sample (2 ms) pull-in dumps at 8.184 MHz so its +BPSK-squared FLL has ±125 Hz unambiguous range. Two dumps are paired for a raw +4 ms symbol. E1C uses 32,736-sample dumps plus a 25-state secondary counter. +These measured modes must be representable by `MAX_INTEGRATION_SAMPLES`, the +channel state RAM record, the scheduler, and measurement output. diff --git a/src/galileo_rx/rtl_model/cycle_model.py b/src/galileo_rx/rtl_model/cycle_model.py new file mode 100644 index 0000000..d5640b5 --- /dev/null +++ b/src/galileo_rx/rtl_model/cycle_model.py @@ -0,0 +1,74 @@ +"""Architecture sizing formulas and lossless scheduling checks.""" + +from __future__ import annotations + +from dataclasses import dataclass +from math import ceil, log2 + + +@dataclass(frozen=True, slots=True) +class AcquisitionArchitectureEstimate: + sampling_frequency_hz: float + coherent_integration_s: float + noncoherent_accumulations: int + number_of_prns: int + number_of_doppler_bins: int + fft_length: int + clock_frequency_hz: float + num_doppler_lanes: int = 1 + fft_cycles_per_transform: int | None = None + + @property + def samples_per_coherent_interval(self) -> int: + return int(round(self.sampling_frequency_hz * self.coherent_integration_s)) + + @property + def fft_operations_per_prn(self) -> int: + # One local-code FFT may be precomputed; every bin/accumulation needs a + # sample FFT and correlation IFFT. + return 2 * self.number_of_doppler_bins * self.noncoherent_accumulations + + @property + def sample_buffer_complex_words(self) -> int: + return self.samples_per_coherent_interval * self.noncoherent_accumulations + + @property + def code_fft_complex_words(self) -> int: + return self.number_of_prns * self.fft_length + + @property + def complex_pointwise_multiplications(self) -> int: + return self.number_of_prns * self.number_of_doppler_bins * self.noncoherent_accumulations * self.fft_length + + @property + def acquisition_time_s(self) -> float: + fft_cycles = self.fft_cycles_per_transform or (self.fft_length + int(log2(self.fft_length)) + 16) + bin_groups = ceil(self.number_of_doppler_bins / self.num_doppler_lanes) + cycles = self.number_of_prns * bin_groups * self.noncoherent_accumulations * (2 * fft_cycles + self.fft_length) + return cycles / self.clock_frequency_hz + + +@dataclass(frozen=True, slots=True) +class TrackingScheduler: + sampling_frequency_hz: float + clock_frequency_hz: float + num_tracking_channels: int + num_correlator_lanes: int + cycles_per_channel_sample: int + + @property + def available_cycles_per_input_sample(self) -> float: + return self.clock_frequency_hz / self.sampling_frequency_hz + + @property + def required_cycles_per_input_sample(self) -> int: + return ceil(self.num_tracking_channels / self.num_correlator_lanes) * self.cycles_per_channel_sample + + @property + def schedulable_without_loss(self) -> bool: + return self.required_cycles_per_input_sample <= self.available_cycles_per_input_sample + + @property + def utilization(self) -> float: + return self.required_cycles_per_input_sample / self.available_cycles_per_input_sample + diff --git a/src/galileo_rx/rtl_model/interfaces.py b/src/galileo_rx/rtl_model/interfaces.py new file mode 100644 index 0000000..0693647 --- /dev/null +++ b/src/galileo_rx/rtl_model/interfaces.py @@ -0,0 +1,34 @@ +"""Vendor-neutral valid/ready transaction types.""" + +from __future__ import annotations + +from dataclasses import dataclass + + +@dataclass(slots=True) +class StreamTransaction: + data: int | complex + valid: bool = True + ready: bool = True + first: bool = False + last: bool = False + channel_id: int = 0 + user: int = 0 + + @property + def transferred(self) -> bool: + return self.valid and self.ready + + +@dataclass(slots=True) +class CorrelatorTransaction: + sample_i: int + sample_q: int + carrier_cos: int + carrier_sin: int + code_taps: tuple[int, ...] + channel_id: int + epoch_last: bool + valid: bool = True + ready: bool = True + diff --git a/src/galileo_rx/rtl_model/vector_export.py b/src/galileo_rx/rtl_model/vector_export.py new file mode 100644 index 0000000..5f21259 --- /dev/null +++ b/src/galileo_rx/rtl_model/vector_export.py @@ -0,0 +1,76 @@ +"""Export integer transactions and manifests for HDL testbenches.""" + +from __future__ import annotations + +import json +from pathlib import Path +import csv + +import numpy as np +import numpy.typing as npt + +from galileo_rx.fixed_point.formats import FixedFormat +from galileo_rx.fixed_point.quantizer import Quantizer, quantize_complex + + +def export_complex_hex( + directory: str | Path, + stem: str, + values: npt.ArrayLike, + fixed_format: FixedFormat, +) -> dict[str, object]: + """Write two's-complement I/Q hex files plus a machine-readable manifest.""" + output_directory = Path(directory) + output_directory.mkdir(parents=True, exist_ok=True) + quantizer = Quantizer(fixed_format) + real, imag = quantize_complex(values, quantizer) + mask = (1 << fixed_format.total_bits) - 1 + digits = (fixed_format.total_bits + 3) // 4 + real_path = output_directory / f"{stem}_i.hex" + imag_path = output_directory / f"{stem}_q.hex" + real_path.write_text("\n".join(f"{int(item) & mask:0{digits}x}" for item in real) + "\n", encoding="ascii") + imag_path.write_text("\n".join(f"{int(item) & mask:0{digits}x}" for item in imag) + "\n", encoding="ascii") + manifest = { + "stem": stem, + "sample_count": int(real.size), + "total_bits": fixed_format.total_bits, + "fractional_bits": fixed_format.fractional_bits, + "signed": fixed_format.signed, + "encoding": "two_complement_hex", + "i_file": real_path.name, + "q_file": imag_path.name, + "overflow_count": quantizer.statistics.overflow_count, + } + (output_directory / f"{stem}.json").write_text(json.dumps(manifest, indent=2), encoding="utf-8") + return manifest + + +def export_timed_complex_hex( + directory: str | Path, + stem: str, + values: npt.ArrayLike, + fixed_format: FixedFormat, + sampling_frequency_hz: float, + register_values: dict[str, object], +) -> dict[str, object]: + """Export RTL samples, explicit timestamps, and configuration metadata.""" + if sampling_frequency_hz <= 0.0: + raise ValueError("sampling_frequency_hz must be positive") + output_directory = Path(directory) + manifest = export_complex_hex(output_directory, stem, values, fixed_format) + timestamp_path = output_directory / f"{stem}_timestamps.csv" + with timestamp_path.open("w", newline="", encoding="ascii") as stream: + writer = csv.writer(stream) + writer.writerow(["sample_index", "time_s"]) + for index in range(int(manifest["sample_count"])): + writer.writerow([index, f"{index / sampling_frequency_hz:.17g}"]) + manifest.update( + { + "sampling_frequency_hz": sampling_frequency_hz, + "sample_period_s": 1.0 / sampling_frequency_hz, + "timestamp_file": timestamp_path.name, + "register_values": register_values, + } + ) + (output_directory / f"{stem}.json").write_text(json.dumps(manifest, indent=2), encoding="utf-8") + return manifest diff --git a/src/galileo_rx/signal_profiles.py b/src/galileo_rx/signal_profiles.py new file mode 100644 index 0000000..af6b561 --- /dev/null +++ b/src/galileo_rx/signal_profiles.py @@ -0,0 +1,58 @@ +"""Signal definitions consumed by generic acquisition and tracking engines.""" + +from __future__ import annotations + +from dataclasses import dataclass +from typing import Literal + + +@dataclass(frozen=True, slots=True) +class ComponentProfile: + name: str + channel_type: Literal["data", "pilot"] + primary_code_length_chips: int + primary_code_period_s: float + secondary_code_length: int | None + navigation_symbol_period_s: float | None + + +@dataclass(frozen=True, slots=True) +class SignalProfile: + name: str + carrier_frequency_hz: float + code_rate_hz: float + modulation: str + boc_subcarrier_rate_hz: float + components: dict[str, ComponentProfile] + + def component(self, name: str) -> ComponentProfile: + try: + return self.components[name] + except KeyError as exc: + raise ValueError(f"component {name!r} is not supported by profile {self.name}") from exc + + +def galileo_e1_profile() -> SignalProfile: + """Galileo E1 parameters; code chips themselves come from a code provider.""" + return SignalProfile( + name="GALILEO_E1", + carrier_frequency_hz=1_575_420_000.0, + code_rate_hz=1_023_000.0, + modulation="BOC(1,1)", + boc_subcarrier_rate_hz=1_023_000.0, + components={ + "E1B": ComponentProfile("E1B", "data", 4092, 0.004, None, 0.004), + "E1C": ComponentProfile("E1C", "pilot", 4092, 0.004, 25, None), + }, + ) + + +PROFILES = {"GALILEO_E1": galileo_e1_profile} + + +def get_signal_profile(name: str) -> SignalProfile: + try: + return PROFILES[name]() + except KeyError as exc: + raise ValueError(f"unknown signal profile {name!r}; available: {sorted(PROFILES)}") from exc + diff --git a/src/galileo_rx/signals/__init__.py b/src/galileo_rx/signals/__init__.py new file mode 100644 index 0000000..375b634 --- /dev/null +++ b/src/galileo_rx/signals/__init__.py @@ -0,0 +1,7 @@ +"""Signal code, modulation, and generation.""" + +from .code_provider import CodeProvider, FileCodeProvider, SyntheticCodeProvider +from .signal_generator import SatelliteSignalConfig, SyntheticSignalGenerator + +__all__ = ["CodeProvider", "FileCodeProvider", "SyntheticCodeProvider", "SatelliteSignalConfig", "SyntheticSignalGenerator"] + diff --git a/src/galileo_rx/signals/boc.py b/src/galileo_rx/signals/boc.py new file mode 100644 index 0000000..49f40c7 --- /dev/null +++ b/src/galileo_rx/signals/boc.py @@ -0,0 +1,38 @@ +"""BOC modulation helpers with sample-continuous phase.""" + +from __future__ import annotations + +import numpy as np +import numpy.typing as npt + + +def boc_subcarrier( + sample_count: int, + sampling_frequency_hz: float, + subcarrier_frequency_hz: float, + initial_phase_cycles: float = 0.0, +) -> tuple[npt.NDArray[np.float64], float]: + """Generate sine-phased square-wave BOC subcarrier and ending phase in cycles.""" + if sample_count < 0 or sampling_frequency_hz <= 0 or subcarrier_frequency_hz <= 0: + raise ValueError("invalid BOC generator parameters") + phase = initial_phase_cycles + np.arange(sample_count, dtype=np.float64) * subcarrier_frequency_hz / sampling_frequency_hz + wave = np.where(np.mod(phase, 1.0) < 0.5, 1.0, -1.0) + ending_phase = float((initial_phase_cycles + sample_count * subcarrier_frequency_hz / sampling_frequency_hz) % 1.0) + return wave, ending_phase + + +def sample_primary_code( + code: npt.NDArray[np.int8], + sample_count: int, + sampling_frequency_hz: float, + code_rate_hz: float, + initial_code_phase_chips: float = 0.0, +) -> tuple[npt.NDArray[np.float64], float]: + """Nearest-chip code sampling supporting noninteger samples per chip.""" + if code.ndim != 1 or code.size == 0 or sampling_frequency_hz <= 0 or code_rate_hz <= 0: + raise ValueError("invalid code sampling parameters") + phases = initial_code_phase_chips + np.arange(sample_count, dtype=np.float64) * code_rate_hz / sampling_frequency_hz + values = code[np.floor(phases).astype(np.int64) % code.size].astype(np.float64) + ending_phase = float((initial_code_phase_chips + sample_count * code_rate_hz / sampling_frequency_hz) % code.size) + return values, ending_phase + diff --git a/src/galileo_rx/signals/code_provider.py b/src/galileo_rx/signals/code_provider.py new file mode 100644 index 0000000..75a8de1 --- /dev/null +++ b/src/galileo_rx/signals/code_provider.py @@ -0,0 +1,82 @@ +"""Official-table integration point and deterministic synthetic test codes.""" + +from __future__ import annotations + +from abc import ABC, abstractmethod +from pathlib import Path + +import numpy as np +import numpy.typing as npt + +from galileo_rx.signal_profiles import SignalProfile + +ChipArray = npt.NDArray[np.int8] + + +class CodeProvider(ABC): + @abstractmethod + def primary_code(self, profile: SignalProfile, component: str, prn: int) -> ChipArray: + """Return chips as +/-1 int8 values.""" + + @abstractmethod + def secondary_code(self, profile: SignalProfile, component: str, prn: int) -> ChipArray | None: + """Return one secondary-code period as +/-1, or None.""" + + +class SyntheticCodeProvider(CodeProvider): + """Deterministic random codes exclusively for simulation and verification. + + These sequences are not Galileo ICD codes and cannot acquire live signals. + """ + + @staticmethod + def _chips(length: int, profile: str, component: str, prn: int, kind: str) -> ChipArray: + seed = sum((index + 1) * ord(char) for index, char in enumerate(f"{profile}:{component}:{prn}:{kind}")) + rng = np.random.default_rng(seed & 0xFFFFFFFF) + return np.where(rng.integers(0, 2, length, dtype=np.int8) == 0, -1, 1).astype(np.int8) + + def primary_code(self, profile: SignalProfile, component: str, prn: int) -> ChipArray: + spec = profile.component(component) + return self._chips(spec.primary_code_length_chips, profile.name, component, prn, "primary") + + def secondary_code(self, profile: SignalProfile, component: str, prn: int) -> ChipArray | None: + length = profile.component(component).secondary_code_length + return None if length is None else self._chips(length, profile.name, component, prn, "secondary") + + +class FileCodeProvider(CodeProvider): + """Load version-controlled code tables without embedding guessed sequences. + + Files are ``__PRN.txt`` and contain exactly one + whitespace-separated row of either 0/1 or -1/+1 chips. + """ + + def __init__(self, primary_directory: str | Path, secondary_directory: str | Path) -> None: + self.primary_directory = Path(primary_directory) + self.secondary_directory = Path(secondary_directory) + + @staticmethod + def _load(path: Path, expected_length: int) -> ChipArray: + if not path.exists(): + raise FileNotFoundError(f"official code table is not installed: {path}") + raw = np.loadtxt(path, dtype=np.int8).reshape(-1) + if raw.size != expected_length: + raise ValueError(f"{path} has {raw.size} chips; expected {expected_length}") + unique = set(raw.tolist()) + if unique <= {0, 1}: + raw = 2 * raw - 1 + elif not unique <= {-1, 1}: + raise ValueError(f"{path} must contain only 0/1 or -1/+1") + return raw.astype(np.int8) + + @staticmethod + def _name(profile: SignalProfile, component: str, prn: int) -> str: + return f"{profile.name.lower()}_{component.lower()}_PRN{prn:03d}.txt" + + def primary_code(self, profile: SignalProfile, component: str, prn: int) -> ChipArray: + return self._load(self.primary_directory / self._name(profile, component, prn), profile.component(component).primary_code_length_chips) + + def secondary_code(self, profile: SignalProfile, component: str, prn: int) -> ChipArray | None: + length = profile.component(component).secondary_code_length + return None if length is None else self._load(self.secondary_directory / self._name(profile, component, prn), length) + diff --git a/src/galileo_rx/signals/galileo_e1.py b/src/galileo_rx/signals/galileo_e1.py new file mode 100644 index 0000000..9f829fb --- /dev/null +++ b/src/galileo_rx/signals/galileo_e1.py @@ -0,0 +1,31 @@ +"""Profile-driven Galileo E1 local replica generation.""" + +from __future__ import annotations + +import numpy as np +import numpy.typing as npt + +from galileo_rx.signal_profiles import SignalProfile +from .boc import boc_subcarrier, sample_primary_code +from .code_provider import CodeProvider + + +def e1_local_replica( + profile: SignalProfile, + provider: CodeProvider, + component: str, + prn: int, + sample_count: int, + sampling_frequency_hz: float, + initial_code_phase_chips: float = 0.0, + boc_enabled: bool = True, + code_rate_hz: float | None = None, +) -> npt.NDArray[np.float64]: + primary = provider.primary_code(profile, component, prn) + effective_code_rate_hz = profile.code_rate_hz if code_rate_hz is None else code_rate_hz + code, _ = sample_primary_code(primary, sample_count, sampling_frequency_hz, effective_code_rate_hz, initial_code_phase_chips) + if not boc_enabled: + return code + rate_scale = effective_code_rate_hz / profile.code_rate_hz + subcarrier, _ = boc_subcarrier(sample_count, sampling_frequency_hz, profile.boc_subcarrier_rate_hz * rate_scale, initial_code_phase_chips % 1.0) + return code * subcarrier diff --git a/src/galileo_rx/signals/signal_generator.py b/src/galileo_rx/signals/signal_generator.py new file mode 100644 index 0000000..35180da --- /dev/null +++ b/src/galileo_rx/signals/signal_generator.py @@ -0,0 +1,182 @@ +"""Streaming synthetic signal generator with exact state metadata.""" + +from __future__ import annotations + +from dataclasses import dataclass, field +from typing import Literal + +import numpy as np +import numpy.typing as npt + +from galileo_rx.signal_profiles import SignalProfile +from galileo_rx.types import GenerationTruth, SatelliteTruth +from .code_provider import CodeProvider + + +@dataclass(slots=True) +class SatelliteSignalConfig: + prn: int + component: Literal["E1B", "E1C"] = "E1C" + code_delay_chips: float = 0.0 + doppler_hz: float = 0.0 + doppler_rate_hz_s: float = 0.0 + carrier_phase_rad: float = 0.0 + amplitude: float = 1.0 + cn0_db_hz: float | None = None + navigation_bits: list[int] = field(default_factory=lambda: [1]) + navigation_bit_period_s: float = 0.004 + secondary_code_phase: int = 0 + + def validate(self, profile: SignalProfile) -> None: + profile.component(self.component) + if self.prn <= 0 or self.amplitude < 0: + raise ValueError("PRN must be positive and amplitude nonnegative") + if not self.navigation_bits or not set(self.navigation_bits) <= {-1, 1}: + raise ValueError("navigation_bits must be a nonempty +/-1 list") + + +@dataclass(slots=True) +class ChannelModelConfig: + sampling_clock_offset_ppm: float = 0.0 + carrier_frequency_offset_hz: float = 0.0 + add_awgn: bool = True + noise_std: float | None = None + clip_amplitude: float | None = None + quantization_bits: int | None = None + seed: int = 1 + + +class SyntheticSignalGenerator: + """Generate real IF or analytic IQ while preserving time across blocks.""" + + def __init__( + self, + profile: SignalProfile, + code_provider: CodeProvider, + sampling_frequency_hz: float, + intermediate_frequency_hz: float = 0.0, + output_is_real_if: bool = False, + satellites: list[SatelliteSignalConfig] | None = None, + channel: ChannelModelConfig | None = None, + ) -> None: + if sampling_frequency_hz <= 0: + raise ValueError("sampling_frequency_hz must be positive") + if output_is_real_if and not 0 < intermediate_frequency_hz < sampling_frequency_hz / 2: + raise ValueError("real IF must lie strictly between DC and Nyquist") + self.profile = profile + self.code_provider = code_provider + self.sampling_frequency_hz = sampling_frequency_hz + self.intermediate_frequency_hz = intermediate_frequency_hz + self.output_is_real_if = output_is_real_if + self.satellites = satellites or [] + self.channel = channel or ChannelModelConfig() + for satellite in self.satellites: + satellite.validate(profile) + self._sample_index = 0 + self._rng = np.random.default_rng(self.channel.seed) + + @property + def sample_index(self) -> int: + return self._sample_index + + def reset(self) -> None: + self._sample_index = 0 + self._rng = np.random.default_rng(self.channel.seed) + + @staticmethod + def _sign_sequence(sequence: npt.NDArray[np.int8], indices: npt.NDArray[np.int64]) -> npt.NDArray[np.float64]: + return sequence[np.mod(indices, sequence.size)].astype(np.float64) + + def generate(self, sample_count: int) -> tuple[npt.NDArray[np.complex128] | npt.NDArray[np.float64], GenerationTruth]: + if sample_count < 0: + raise ValueError("sample_count must be nonnegative") + start = self._sample_index + nominal_t_s = (start + np.arange(sample_count, dtype=np.float64)) / self.sampling_frequency_hz + signal_t_s = nominal_t_s * (1.0 + self.channel.sampling_clock_offset_ppm * 1e-6) + output = np.zeros(sample_count, dtype=np.complex128) + truths: list[SatelliteTruth] = [] + equivalent_noise_variance = 0.0 + + for satellite in self.satellites: + primary = self.code_provider.primary_code(self.profile, satellite.component, satellite.prn) + # Common line-of-sight dynamics scale carrier and spreading-code + # frequencies by the same fractional Doppler. Keeping this coupling + # makes carrier-aided code tracking physically self-consistent. + code_phase_chips = ( + signal_t_s * self.profile.code_rate_hz + + signal_t_s * satellite.doppler_hz * self.profile.code_rate_hz / self.profile.carrier_frequency_hz + + 0.5 * signal_t_s**2 * satellite.doppler_rate_hz_s * self.profile.code_rate_hz / self.profile.carrier_frequency_hz + - satellite.code_delay_chips + ) + chip_indices = np.floor(code_phase_chips).astype(np.int64) + spreading = self._sign_sequence(primary, chip_indices) + subcarrier_phase = code_phase_chips + subcarrier = np.where(np.mod(subcarrier_phase, 1.0) < 0.5, 1.0, -1.0) + + component_spec = self.profile.component(satellite.component) + if component_spec.channel_type == "data": + bit_indices = np.floor(signal_t_s / satellite.navigation_bit_period_s).astype(np.int64) + spreading *= self._sign_sequence(np.asarray(satellite.navigation_bits, dtype=np.int8), bit_indices) + else: + secondary = self.code_provider.secondary_code(self.profile, satellite.component, satellite.prn) + if secondary is not None: + epoch_indices = np.floor(signal_t_s / component_spec.primary_code_period_s).astype(np.int64) + spreading *= self._sign_sequence(secondary, epoch_indices + satellite.secondary_code_phase) + + phase_rad = ( + satellite.carrier_phase_rad + + 2.0 * np.pi * (self.intermediate_frequency_hz + satellite.doppler_hz + self.channel.carrier_frequency_offset_hz) * nominal_t_s + + np.pi * satellite.doppler_rate_hz_s * nominal_t_s**2 + ) + output += satellite.amplitude * spreading * subcarrier * np.exp(1j * phase_rad) + if satellite.cn0_db_hz is not None: + equivalent_noise_variance += satellite.amplitude**2 * self.sampling_frequency_hz / (10.0 ** (satellite.cn0_db_hz / 10.0)) + truths.append( + SatelliteTruth( + prn=satellite.prn, + component=satellite.component, + initial_code_delay_chips=satellite.code_delay_chips, + initial_code_delay_samples=satellite.code_delay_chips * self.sampling_frequency_hz / self.profile.code_rate_hz, + initial_doppler_hz=satellite.doppler_hz, + doppler_rate_hz_s=satellite.doppler_rate_hz_s, + initial_carrier_phase_rad=satellite.carrier_phase_rad, + amplitude=satellite.amplitude, + cn0_db_hz=satellite.cn0_db_hz, + ) + ) + + if self.channel.add_awgn and sample_count: + variance = self.channel.noise_std**2 if self.channel.noise_std is not None else equivalent_noise_variance + if variance > 0: + output += np.sqrt(variance / 2.0) * ( + self._rng.standard_normal(sample_count) + 1j * self._rng.standard_normal(sample_count) + ) + result: npt.NDArray[np.complex128] | npt.NDArray[np.float64] + if self.output_is_real_if: + result = (np.sqrt(2.0) * output.real).astype(np.float64) + else: + result = output.astype(np.complex128) + if self.channel.clip_amplitude is not None: + limit = self.channel.clip_amplitude + if np.iscomplexobj(result): + result = (np.clip(result.real, -limit, limit) + 1j * np.clip(result.imag, -limit, limit)).astype(np.complex128) + else: + result = np.clip(result, -limit, limit).astype(np.float64) + if self.channel.quantization_bits is not None: + result = quantize_normalized(result, self.channel.quantization_bits) + self._sample_index += sample_count + truth = GenerationTruth(self.sampling_frequency_hz, self.intermediate_frequency_hz, self.output_is_real_if, start, sample_count, truths) + return result, truth + + +def quantize_normalized(samples: npt.NDArray[np.generic], bits: int) -> npt.NDArray[np.generic]: + """Quantize normalized signed samples to a symmetric fractional grid.""" + if not 2 <= bits <= 32: + raise ValueError("quantization bits must be in [2, 32]") + scale = float(1 << (bits - 1)) + maximum = 1.0 - 1.0 / scale + if np.iscomplexobj(samples): + real = np.round(np.clip(samples.real, -1.0, maximum) * scale) / scale + imag = np.round(np.clip(samples.imag, -1.0, maximum) * scale) / scale + return (real + 1j * imag).astype(samples.dtype) + return (np.round(np.clip(samples, -1.0, maximum) * scale) / scale).astype(samples.dtype) diff --git a/src/galileo_rx/signals/signalsim_codes.py b/src/galileo_rx/signals/signalsim_codes.py new file mode 100644 index 0000000..14c4df0 --- /dev/null +++ b/src/galileo_rx/signals/signalsim_codes.py @@ -0,0 +1,121 @@ +"""Code provider backed by an unmodified local SignalSim checkout. + +The provider deliberately parses SignalSim's source at run time. It does not +copy, guess, or silently replace Galileo code tables. This also makes the +checkout commit part of the reproducibility boundary. +""" + +from __future__ import annotations + +from dataclasses import dataclass +from functools import cached_property +from pathlib import Path +import re + +import numpy as np + +from galileo_rx.signal_profiles import SignalProfile +from .code_provider import ChipArray, CodeProvider + + +@dataclass(frozen=True, slots=True) +class SignalSimConvention: + """Observed conventions for globsky/SignalSim commit 80b2621. + + ``code_sign`` describes table bit mapping (0 -> +1, 1 -> -1). SignalSim + additionally multiplies E1B by -DataBit; that data-channel sign is kept out + of the spreading-code provider and is reported separately. + """ + + prn_offset: int = 0 + code_phase_offset_chips: float = 0.0 + code_sign: int = 1 + boc_sign: int = 1 + doppler_sign: int = 1 + iq_order: str = "IQ" + carrier_mixing_sign: int = -1 + + +class SignalSimCodeProvider(CodeProvider): + """Load Galileo E1B/E1C codes from a local SignalSim source tree.""" + + _E1_WORDS_PER_CODE = 128 + _E1_CODE_COUNT = 100 + _E1_CHIPS = 4092 + + def __init__(self, signalsim_path: str | Path) -> None: + self.signalsim_path = Path(signalsim_path).expanduser().resolve() + self.memory_code_path = self.signalsim_path / "src" / "MemoryCode.dat" + self.pilot_bit_path = self.signalsim_path / "src" / "PilotBit.cpp" + if not self.memory_code_path.is_file(): + raise FileNotFoundError(f"SignalSim E1 code table not found: {self.memory_code_path}") + if not self.pilot_bit_path.is_file(): + raise FileNotFoundError(f"SignalSim pilot source not found: {self.pilot_bit_path}") + + @cached_property + def _e1_words(self) -> np.ndarray: + text = self.memory_code_path.read_text(encoding="utf-8") + match = re.search( + r"E1MemoryCode\s*\[\s*100\s*\*\s*128\s*\]\s*=\s*\{(?P.*?)\};", + text, + flags=re.DOTALL, + ) + if match is None: + raise ValueError(f"could not locate E1MemoryCode in {self.memory_code_path}") + words = np.asarray( + [int(token, 16) for token in re.findall(r"0x[0-9a-fA-F]+", match.group("body"))], + dtype=np.uint32, + ) + expected = self._E1_WORDS_PER_CODE * self._E1_CODE_COUNT + if words.size != expected: + raise ValueError(f"SignalSim E1 table has {words.size} words; expected {expected}") + return words.reshape(self._E1_CODE_COUNT, self._E1_WORDS_PER_CODE) + + @staticmethod + def _unpack_msb_first(words: np.ndarray) -> ChipArray: + # GetMemorySequence() divides a code into four 32-word sectors. It + # consumes 1023 MSB-first bits from each 1024-bit sector and deliberately + # skips the last padding bit before advancing to the next sector. + sectors = words.reshape(4, 32) + sector_indices = np.arange(1023, dtype=np.int64) + bits = np.concatenate( + [(sector[sector_indices >> 5] >> (31 - (sector_indices & 31))) & 1 for sector in sectors] + ) + # SignalSim's modulator maps a stored 0 to +1 and stored 1 to -1. + return np.where(bits == 0, 1, -1).astype(np.int8) + + def primary_code(self, profile: SignalProfile, component: str, prn: int) -> ChipArray: + if profile.name != "GALILEO_E1": + raise ValueError(f"SignalSim E1 provider cannot serve profile {profile.name!r}") + if not 1 <= prn <= 50: + raise ValueError("SignalSim Galileo E1 PRN must be in 1..50") + normalized = component.upper() + if normalized == "E1B": + table_index = prn - 1 + elif normalized == "E1C": + table_index = prn + 49 + else: + raise ValueError(f"SignalSim E1 provider does not support component {component!r}") + expected = profile.component(normalized).primary_code_length_chips + if expected != self._E1_CHIPS: + raise ValueError(f"profile requests {expected} E1 chips; SignalSim table contains {self._E1_CHIPS}") + return self._unpack_msb_first(self._e1_words[table_index]) + + def secondary_code(self, profile: SignalProfile, component: str, prn: int) -> ChipArray | None: + del prn # SignalSim uses one common 25-symbol E1C sequence. + normalized = component.upper() + if normalized == "E1B": + return None + if normalized != "E1C": + raise ValueError(f"SignalSim E1 provider does not support component {component!r}") + length = profile.component(normalized).secondary_code_length + text = self.pilot_bit_path.read_text(encoding="utf-8") + match = re.search(r"SecondaryCodeE1\s*\[\s*1\s*\]\s*=\s*\{\s*(0x[0-9a-fA-F]+)\s*\}", text) + if match is None: + raise ValueError(f"could not locate SecondaryCodeE1 in {self.pilot_bit_path}") + if length != 25: + raise ValueError(f"profile requests secondary length {length}; SignalSim implements 25") + word = int(match.group(1), 16) + # PilotBit.cpp addresses the word LSB first by secondary-code position. + bits = np.asarray([(word >> index) & 1 for index in range(length)], dtype=np.int8) + return np.where(bits == 0, 1, -1).astype(np.int8) diff --git a/src/galileo_rx/tracking/__init__.py b/src/galileo_rx/tracking/__init__.py new file mode 100644 index 0000000..80960ba --- /dev/null +++ b/src/galileo_rx/tracking/__init__.py @@ -0,0 +1,7 @@ +"""Stateful single- and multi-channel tracking.""" + +from .tracking_channel import TrackingChannel +from .tracking_manager import TrackingManager + +__all__ = ["TrackingChannel", "TrackingManager"] + diff --git a/src/galileo_rx/tracking/cn0_estimator.py b/src/galileo_rx/tracking/cn0_estimator.py new file mode 100644 index 0000000..85eae47 --- /dev/null +++ b/src/galileo_rx/tracking/cn0_estimator.py @@ -0,0 +1,31 @@ +"""Moment-based prompt C/N0 estimator.""" + +from __future__ import annotations + +from collections import deque + +import numpy as np + + +class Cn0Estimator: + def __init__(self, integration_time_s: float, window_epochs: int = 50, *, data_sign_insensitive: bool = False) -> None: + self.integration_time_s = integration_time_s + self.data_sign_insensitive = data_sign_insensitive + self.values: deque[complex] = deque(maxlen=window_epochs) + + def update(self, prompt: complex) -> float | None: + self.values.append(prompt) + if len(self.values) < max(5, self.values.maxlen // 4): + return None + values = np.asarray(self.values) + if self.data_sign_insensitive: + # A locked BPSK data channel lies on the I axis. Decision-directed + # polarity wipeoff retains the carrier phasor while removing data. + decisions = np.where(values.real >= 0.0, 1.0, -1.0) + values = values * decisions + mean_power = float(np.mean(np.abs(values) ** 2)) + coherent_power = abs(np.mean(values)) ** 2 + noise_power = mean_power - coherent_power + if coherent_power <= 0 or noise_power <= 0: + return None + return float(10 * np.log10(coherent_power / noise_power / self.integration_time_s)) diff --git a/src/galileo_rx/tracking/correlator.py b/src/galileo_rx/tracking/correlator.py new file mode 100644 index 0000000..cb33ad2 --- /dev/null +++ b/src/galileo_rx/tracking/correlator.py @@ -0,0 +1,75 @@ +"""Vector and sample-oriented Galileo correlator banks.""" + +from __future__ import annotations + +from dataclasses import dataclass, field + +import numpy as np +import numpy.typing as npt + +from galileo_rx.signal_profiles import SignalProfile +from galileo_rx.signals.code_provider import CodeProvider +from galileo_rx.types import CorrelatorOutputs +from .nco import CarrierNco, CodeNco + + +@dataclass(slots=True) +class CorrelatorBank: + profile: SignalProfile + provider: CodeProvider + component: str + prn: int + carrier_nco: CarrierNco + code_nco: CodeNco + early_late_spacing_chips: float + very_early_late_spacing_chips: float + _code: npt.NDArray[np.int8] = field(init=False, repr=False) + + def __post_init__(self) -> None: + self._code = self.provider.primary_code(self.profile, self.component, self.prn) + + def _replica(self, phases_chips: np.ndarray, offset_chips: float) -> np.ndarray: + tap_phase = phases_chips + offset_chips + code = self._code[np.floor(tap_phase).astype(np.int64) % self._code.size] + boc = np.where(np.mod(tap_phase, 1.0) < 0.5, 1.0, -1.0) + return code * boc + + def correlate(self, samples: npt.NDArray[np.generic], secondary_sign: int = 1) -> CorrelatorOutputs: + array = np.asarray(samples, dtype=np.complex128) + carrier_phase = self.carrier_nco.phases(array.size) + code_phase = self.code_nco.phases(array.size) + wiped = array * np.exp(-1j * carrier_phase) * secondary_sign + taps = { + "very_early": -self.very_early_late_spacing_chips, + "early": -self.early_late_spacing_chips, + "prompt": 0.0, + "late": self.early_late_spacing_chips, + "very_late": self.very_early_late_spacing_chips, + } + values = {name: complex(np.sum(wiped * self._replica(code_phase, offset))) for name, offset in taps.items()} + return CorrelatorOutputs(**values) + + +@dataclass(slots=True) +class CycleCorrelatorState: + """One-sample transaction model used as an RTL comparison oracle.""" + + accumulators: dict[str, complex] + sample_count: int = 0 + + +class SampleStreamCorrelator: + def __init__(self, bank: CorrelatorBank) -> None: + self.bank = bank + self.state = CycleCorrelatorState({name: 0j for name in ("very_early", "early", "prompt", "late", "very_late")}) + + def accept(self, sample: complex, secondary_sign: int = 1) -> None: + outputs = self.bank.correlate(np.asarray([sample]), secondary_sign) + for name in self.state.accumulators: + self.state.accumulators[name] += getattr(outputs, name) + self.state.sample_count += 1 + + def dump(self) -> CorrelatorOutputs: + result = CorrelatorOutputs(**self.state.accumulators) + self.state = CycleCorrelatorState({name: 0j for name in self.state.accumulators}) + return result diff --git a/src/galileo_rx/tracking/discriminators.py b/src/galileo_rx/tracking/discriminators.py new file mode 100644 index 0000000..ecfe083 --- /dev/null +++ b/src/galileo_rx/tracking/discriminators.py @@ -0,0 +1,51 @@ +"""Tracking discriminators with explicit output units.""" + +from __future__ import annotations + +import numpy as np + + +def pll_two_quadrant_rad(prompt: complex) -> float: + """Decision-directed carrier phase error in radians, range +/-pi/2.""" + return float(np.arctan(prompt.imag / prompt.real)) if prompt.real != 0 else float(np.sign(prompt.imag) * np.pi / 2) + + +def pll_four_quadrant_rad(prompt: complex) -> float: + """Pilot carrier phase error in radians, range +/-pi.""" + return float(np.arctan2(prompt.imag, prompt.real)) + + +def fll_phase_difference_hz(previous_prompt: complex | None, prompt: complex, integration_time_s: float) -> float: + """Cross-product/phase-difference FLL error in hertz.""" + if previous_prompt is None or integration_time_s <= 0 or previous_prompt == 0 or prompt == 0: + return 0.0 + return float(np.angle(prompt * np.conjugate(previous_prompt)) / (2.0 * np.pi * integration_time_s)) + + +def fll_bpsk_phase_difference_hz(previous_prompt: complex | None, prompt: complex, integration_time_s: float) -> float: + """BPSK-data-insensitive phase-difference FLL error in hertz. + + Squaring the inter-epoch phasor removes a possible pi-radian data-symbol + transition. The unambiguous range is consequently +/-1/(4*T). + """ + if previous_prompt is None or integration_time_s <= 0 or previous_prompt == 0 or prompt == 0: + return 0.0 + difference = prompt * np.conjugate(previous_prompt) + return float(np.angle(difference * difference) / (4.0 * np.pi * integration_time_s)) + + +def dll_normalized_envelope_chips(early: complex, late: complex, spacing_chips: float) -> float: + """Normalized E-minus-L envelope, calibrated to chip units near lock.""" + early_mag, late_mag = abs(early), abs(late) + return float(spacing_chips * (early_mag - late_mag) / max(early_mag + late_mag, np.finfo(float).tiny)) + + +def dll_noncoherent_power_chips(early: complex, late: complex, spacing_chips: float) -> float: + early_power, late_power = abs(early) ** 2, abs(late) ** 2 + return float(spacing_chips * (early_power - late_power) / max(early_power + late_power, np.finfo(float).tiny)) + + +def dll_dot_product_chips(early: complex, late: complex, prompt: complex, spacing_chips: float) -> float: + numerator = np.real((early - late) * np.conjugate(prompt)) + denominator = max(abs(prompt) ** 2, np.finfo(float).tiny) + return float(0.5 * spacing_chips * numerator / denominator) diff --git a/src/galileo_rx/tracking/lock_detector.py b/src/galileo_rx/tracking/lock_detector.py new file mode 100644 index 0000000..fb1c885 --- /dev/null +++ b/src/galileo_rx/tracking/lock_detector.py @@ -0,0 +1,39 @@ +"""Lock metrics and hysteretic failure counting.""" + +from __future__ import annotations + +from dataclasses import dataclass + +import numpy as np + +from galileo_rx.types import CorrelatorOutputs + + +@dataclass(slots=True) +class LockStatus: + carrier_metric: float + code_metric: float + locked: bool + cycle_slip: bool + side_peak_suspected: bool + + +class LockDetector: + def __init__(self, failure_limit: int = 10) -> None: + self.failure_limit = failure_limit + self.failures = 0 + self.previous_phase: float | None = None + + def update(self, correlators: CorrelatorOutputs) -> LockStatus: + prompt_power = abs(correlators.prompt) ** 2 + carrier_metric = float(abs(correlators.prompt.real) / max(abs(correlators.prompt), np.finfo(float).tiny)) + code_metric = float(prompt_power / max(0.5 * (abs(correlators.early) ** 2 + abs(correlators.late) ** 2), np.finfo(float).tiny)) + phase = float(np.angle(correlators.prompt)) + cycle_slip = self.previous_phase is not None and abs(float(np.angle(np.exp(1j * (phase - self.previous_phase))))) > 0.9 * np.pi + self.previous_phase = phase + locked = carrier_metric > 0.55 and code_metric > 0.5 + self.failures = 0 if locked else self.failures + 1 + vevl = max(abs(correlators.very_early), abs(correlators.very_late)) + side_peak = vevl > 1.25 * max(abs(correlators.prompt), np.finfo(float).tiny) + return LockStatus(carrier_metric, code_metric, locked, cycle_slip, side_peak) + diff --git a/src/galileo_rx/tracking/loop_filters.py b/src/galileo_rx/tracking/loop_filters.py new file mode 100644 index 0000000..d971692 --- /dev/null +++ b/src/galileo_rx/tracking/loop_filters.py @@ -0,0 +1,70 @@ +"""Loop filters derived from noise bandwidth and damping parameters.""" + +from __future__ import annotations + +from dataclasses import dataclass, field + + +def second_order_natural_frequency_rad_s(noise_bandwidth_hz: float, damping_ratio: float) -> float: + """Convert one-sided equivalent noise bandwidth to natural radian frequency.""" + if noise_bandwidth_hz <= 0 or damping_ratio <= 0: + raise ValueError("bandwidth and damping ratio must be positive") + return 8.0 * damping_ratio * noise_bandwidth_hz / (4.0 * damping_ratio**2 + 1.0) + + +@dataclass(slots=True) +class SecondOrderLoopFilter: + noise_bandwidth_hz: float + damping_ratio: float = 0.707 + integrator: float = 0.0 + proportional_gain: float = field(init=False) + integral_gain: float = field(init=False) + + def __post_init__(self) -> None: + wn = second_order_natural_frequency_rad_s(self.noise_bandwidth_hz, self.damping_ratio) + self.proportional_gain = 2.0 * self.damping_ratio * wn + self.integral_gain = wn**2 + + def update(self, error: float, integration_time_s: float) -> float: + if integration_time_s <= 0: + raise ValueError("integration_time_s must be positive") + self.integrator += self.integral_gain * error * integration_time_s + return self.proportional_gain * error + self.integrator + + +@dataclass(slots=True) +class ThirdOrderLoopFilter: + """Type-III filter using a repeated stable pole derived from Bn. + + The continuous correction is ``3*w*e + 3*w^2*integral(e) + + w^3*double_integral(e)``. This explicit pole placement provides a + deterministic starting point for later loop optimization. + """ + + noise_bandwidth_hz: float + damping_ratio: float = 0.707 + first_integrator: float = 0.0 + second_integrator: float = 0.0 + omega_rad_s: float = field(init=False) + + def __post_init__(self) -> None: + self.omega_rad_s = second_order_natural_frequency_rad_s(self.noise_bandwidth_hz, self.damping_ratio) + + def update(self, error: float, integration_time_s: float) -> float: + if integration_time_s <= 0: + raise ValueError("integration_time_s must be positive") + self.first_integrator += error * integration_time_s + self.second_integrator += self.first_integrator * integration_time_s + w = self.omega_rad_s + return 3.0 * w * error + 3.0 * w**2 * self.first_integrator + w**3 * self.second_integrator + + +@dataclass(slots=True) +class FirstOrderFllFilter: + noise_bandwidth_hz: float + output_hz: float = 0.0 + + def update(self, error_hz: float, integration_time_s: float) -> float: + alpha = min(1.0, 2.0 * self.noise_bandwidth_hz * integration_time_s) + self.output_hz += alpha * (error_hz - self.output_hz) + return self.output_hz diff --git a/src/galileo_rx/tracking/nco.py b/src/galileo_rx/tracking/nco.py new file mode 100644 index 0000000..9ac9232 --- /dev/null +++ b/src/galileo_rx/tracking/nco.py @@ -0,0 +1,33 @@ +"""Carrier and fractional-chip code NCO states.""" + +from __future__ import annotations + +from dataclasses import dataclass + +import numpy as np + + +@dataclass(slots=True) +class CarrierNco: + sampling_frequency_hz: float + frequency_hz: float + phase_rad: float = 0.0 + + def phases(self, sample_count: int) -> np.ndarray: + phase = self.phase_rad + 2.0 * np.pi * self.frequency_hz / self.sampling_frequency_hz * np.arange(sample_count) + self.phase_rad = float((self.phase_rad + 2.0 * np.pi * self.frequency_hz / self.sampling_frequency_hz * sample_count) % (2.0 * np.pi)) + return phase + + +@dataclass(slots=True) +class CodeNco: + sampling_frequency_hz: float + code_length_chips: int + frequency_hz: float + phase_chips: float = 0.0 + + def phases(self, sample_count: int) -> np.ndarray: + phase = self.phase_chips + self.frequency_hz / self.sampling_frequency_hz * np.arange(sample_count) + self.phase_chips = float((self.phase_chips + self.frequency_hz / self.sampling_frequency_hz * sample_count) % self.code_length_chips) + return phase + diff --git a/src/galileo_rx/tracking/symbol_sync.py b/src/galileo_rx/tracking/symbol_sync.py new file mode 100644 index 0000000..338fd32 --- /dev/null +++ b/src/galileo_rx/tracking/symbol_sync.py @@ -0,0 +1,133 @@ +"""Navigation-symbol recovery and pilot secondary-code synchronization.""" + +from __future__ import annotations + +from dataclasses import dataclass + +import numpy as np +import numpy.typing as npt + + +@dataclass(frozen=True, slots=True) +class SymbolComparison: + recovered_symbols: int + compared_symbols: int + alignment_offset_symbols: int + sign_inverted: bool + symbol_errors: int + symbol_error_rate: float + + +@dataclass(frozen=True, slots=True) +class SecondaryCodeSyncResult: + phase: int + residual_frequency_hz: float + normalized_correlation: float + compared_periods: int + sign_errors: int + + +def recover_bpsk_symbols( + prompt_values: npt.ArrayLike, + epochs_per_symbol: int, + *, + ignored_epochs: int = 0, +) -> tuple[npt.NDArray[np.int8], npt.NDArray[np.float64]]: + """Accumulate decision-directed prompt I and return +/-1 raw symbols.""" + prompts = np.asarray(prompt_values, dtype=np.complex128).reshape(-1) + if epochs_per_symbol <= 0 or ignored_epochs < 0: + raise ValueError("epochs_per_symbol must be positive and ignored_epochs nonnegative") + usable = prompts[ignored_epochs:] + symbol_count = usable.size // epochs_per_symbol + coherent_i = usable[: symbol_count * epochs_per_symbol].real.reshape(symbol_count, epochs_per_symbol).sum(axis=1) + symbols = np.where(coherent_i >= 0.0, 1, -1).astype(np.int8) + return symbols, np.asarray(coherent_i, dtype=np.float64) + + +def compare_symbol_streams( + recovered: npt.ArrayLike, + expected: npt.ArrayLike, + *, + max_alignment_offset_symbols: int, + minimum_compared_symbols: int = 1, +) -> SymbolComparison: + """Compare +/-1 streams with bounded offset and one global sign ambiguity.""" + rx = np.asarray(recovered, dtype=np.int8).reshape(-1) + truth = np.asarray(expected, dtype=np.int8).reshape(-1) + if max_alignment_offset_symbols < 0 or minimum_compared_symbols <= 0: + raise ValueError("alignment bound must be nonnegative and comparison length positive") + if not set(rx.tolist()) <= {-1, 1} or not set(truth.tolist()) <= {-1, 1}: + raise ValueError("symbol streams must contain only +/-1") + candidates: list[tuple[int, int, int, bool, int]] = [] + for offset in range(-max_alignment_offset_symbols, max_alignment_offset_symbols + 1): + rx_start = max(0, -offset) + truth_start = max(0, offset) + count = min(rx.size - rx_start, truth.size - truth_start) + if count < minimum_compared_symbols: + continue + lhs = rx[rx_start : rx_start + count] + rhs = truth[truth_start : truth_start + count] + for inverted in (False, True): + errors = int(np.count_nonzero(lhs != (-rhs if inverted else rhs))) + candidates.append((errors, -count, offset, inverted, count)) + if not candidates: + raise ValueError("streams do not overlap for the requested bounded alignment") + errors, negative_count, offset, inverted, count = min(candidates) + del negative_count + return SymbolComparison(rx.size, count, offset, inverted, errors, errors / count) + + +def synchronize_secondary_code( + prompt_values: npt.ArrayLike, + secondary_code: npt.ArrayLike, + integration_time_s: float, + *, + residual_frequency_min_hz: float = -125.0, + residual_frequency_max_hz: float = 125.0, + residual_frequency_step_hz: float = 1.0, +) -> SecondaryCodeSyncResult: + """Jointly search secondary phase and residual carrier frequency. + + The correlation is complex, so an unknown constant carrier phase does not + affect the metric. Frequency search prevents residual phase rotation from + destroying the 25-period coherent sum. + """ + prompts = np.asarray(prompt_values, dtype=np.complex128).reshape(-1) + secondary = np.asarray(secondary_code, dtype=np.int8).reshape(-1) + if prompts.size == 0 or secondary.size == 0 or integration_time_s <= 0: + raise ValueError("nonempty prompts/secondary and positive integration time are required") + if not set(secondary.tolist()) <= {-1, 1}: + raise ValueError("secondary code must contain only +/-1") + frequencies = np.arange( + residual_frequency_min_hz, + residual_frequency_max_hz + 0.5 * residual_frequency_step_hz, + residual_frequency_step_hz, + dtype=np.float64, + ) + if residual_frequency_step_hz <= 0 or frequencies.size == 0: + raise ValueError("invalid residual-frequency search") + epochs = np.arange(prompts.size, dtype=np.float64) + carrier = np.exp(-2j * np.pi * frequencies[:, None] * integration_time_s * epochs[None, :]) + derotated = carrier * prompts[None, :] + denominator = max(float(np.sum(np.abs(prompts))), np.finfo(np.float64).tiny) + best_metric = -1.0 + best_phase = 0 + best_frequency_index = 0 + best_sum = 0j + for phase in range(secondary.size): + signs = secondary[(phase + np.arange(prompts.size)) % secondary.size] + sums = derotated @ signs.astype(np.float64) + index = int(np.argmax(np.abs(sums))) + metric = float(abs(sums[index]) / denominator) + if metric > best_metric: + best_metric = metric + best_phase = phase + best_frequency_index = index + best_sum = complex(sums[index]) + best_frequency = float(frequencies[best_frequency_index]) + signs = secondary[(best_phase + np.arange(prompts.size)) % secondary.size] + corrected = prompts * np.exp(-2j * np.pi * best_frequency * integration_time_s * epochs) + corrected *= np.exp(-1j * np.angle(best_sum)) + decisions = np.where(corrected.real >= 0.0, 1, -1) + errors = int(np.count_nonzero(decisions != signs)) + return SecondaryCodeSyncResult(best_phase, best_frequency, best_metric, prompts.size, errors) diff --git a/src/galileo_rx/tracking/tracking_channel.py b/src/galileo_rx/tracking/tracking_channel.py new file mode 100644 index 0000000..5f3c03c --- /dev/null +++ b/src/galileo_rx/tracking/tracking_channel.py @@ -0,0 +1,174 @@ +"""Independent Galileo component tracking channel state machine.""" + +from __future__ import annotations + +import numpy as np +import numpy.typing as npt + +from galileo_rx.config import TrackingConfig +from galileo_rx.signal_profiles import SignalProfile +from galileo_rx.signals.code_provider import CodeProvider +from galileo_rx.types import AcquisitionResult, CorrelatorOutputs, TrackingMeasurement, TrackingState +from .cn0_estimator import Cn0Estimator +from .correlator import CorrelatorBank +from .discriminators import ( + dll_normalized_envelope_chips, + fll_bpsk_phase_difference_hz, + fll_phase_difference_hz, + pll_four_quadrant_rad, + pll_two_quadrant_rad, +) +from .lock_detector import LockDetector +from .loop_filters import FirstOrderFllFilter, SecondOrderLoopFilter, ThirdOrderLoopFilter +from .nco import CarrierNco, CodeNco + + +class TrackingChannel: + def __init__( + self, + profile: SignalProfile, + provider: CodeProvider, + sampling_frequency_hz: float, + config: TrackingConfig, + acquisition: AcquisitionResult, + start_sample_index: int = 0, + secondary_code_phase_at_start: int | None = None, + ) -> None: + config.validate() + self.profile = profile + self.provider = provider + self.sampling_frequency_hz = sampling_frequency_hz + self.config = config + self.acquisition = acquisition + self.component_spec = profile.component(acquisition.component) + self.integration_samples = int(round(config.integration_ms * 1e-3 * sampling_frequency_hz)) + if not np.isclose(self.integration_samples, config.integration_ms * 1e-3 * sampling_frequency_hz, atol=1e-6): + raise ValueError("tracking integration is not an integer number of samples") + initial_code_phase = ( + -acquisition.code_phase_chips + start_sample_index * profile.code_rate_hz / sampling_frequency_hz + ) % self.component_spec.primary_code_length_chips + initial_carrier_phase = 2.0 * np.pi * acquisition.carrier_frequency_hz * start_sample_index / sampling_frequency_hz + self.carrier_nco = CarrierNco(sampling_frequency_hz, acquisition.carrier_frequency_hz, initial_carrier_phase % (2 * np.pi)) + initial_code_frequency_hz = profile.code_rate_hz * ( + 1.0 + acquisition.doppler_hz / profile.carrier_frequency_hz + ) + self.code_nco = CodeNco( + sampling_frequency_hz, + self.component_spec.primary_code_length_chips, + initial_code_frequency_hz, + initial_code_phase, + ) + self.correlator = CorrelatorBank( + profile, provider, acquisition.component, acquisition.prn, self.carrier_nco, self.code_nco, + config.early_late_spacing_chips, config.very_early_late_spacing_chips, + ) + self.pll_filter = ThirdOrderLoopFilter(config.pll_noise_bandwidth_hz, config.damping_ratio) if config.pll_order == 3 else SecondOrderLoopFilter(config.pll_noise_bandwidth_hz, config.damping_ratio) + self.dll_filter = SecondOrderLoopFilter(config.dll_noise_bandwidth_hz, config.damping_ratio) + self.fll_filter = FirstOrderFllFilter(config.fll_noise_bandwidth_hz) + self.lock_detector = LockDetector(config.loss_of_lock_epochs) + self.cn0_estimator = Cn0Estimator( + config.integration_ms * 1e-3, + data_sign_insensitive=self.component_spec.channel_type == "data", + ) + self.state = TrackingState.ACQUIRED + self.epoch = 0 + self.previous_prompt: complex | None = None + self.measurements: list[TrackingMeasurement] = [] + self.last_correlators = CorrelatorOutputs() + self.nominal_carrier_hz = acquisition.carrier_frequency_hz + # Acquisition reports the NCO frequency as IF center plus Doppler. Code + # aiding must use range-rate Doppler only; feeding the IF itself into + # f_code/f_carrier would be a MHz-scale unit-boundary error. + self.carrier_center_hz = acquisition.carrier_frequency_hz - acquisition.doppler_hz + self._pll_reference_frequency_hz = acquisition.carrier_frequency_hz + self._pll_active = False + self.secondary_epoch_offset = ( + int(secondary_code_phase_at_start) + if secondary_code_phase_at_start is not None + else int(np.floor(start_sample_index / (self.component_spec.primary_code_period_s * sampling_frequency_hz))) + ) + + def _secondary_sign(self) -> int: + if self.component_spec.channel_type != "pilot" or self.config.secondary_code_mode == "none": + return 1 + secondary = self.provider.secondary_code(self.profile, self.acquisition.component, self.acquisition.prn) + if secondary is None: + return 1 + return int(secondary[(self.secondary_epoch_offset + self.epoch) % secondary.size]) + + def process_epoch(self, samples: npt.NDArray[np.generic]) -> TrackingMeasurement: + if len(samples) != self.integration_samples: + raise ValueError(f"tracking epoch requires {self.integration_samples} samples") + dt_s = self.config.integration_ms * 1e-3 + correlators = self.correlator.correlate(samples, self._secondary_sign()) + self.last_correlators = correlators + pll_error = pll_two_quadrant_rad(correlators.prompt) if self.component_spec.channel_type == "data" else pll_four_quadrant_rad(correlators.prompt) + fll_error = ( + fll_bpsk_phase_difference_hz(self.previous_prompt, correlators.prompt, dt_s) + if self.component_spec.channel_type == "data" + else fll_phase_difference_hz(self.previous_prompt, correlators.prompt, dt_s) + ) + dll_error = dll_normalized_envelope_chips(correlators.early, correlators.late, self.config.early_late_spacing_chips) + elapsed_ms = (self.epoch + 1) * self.config.integration_ms + if self.state == TrackingState.ACQUIRED: + self.state = TrackingState.FLL_PULL_IN if self.config.use_fll_assist else TrackingState.PLL_TRACK + use_fll = self.config.use_fll_assist and elapsed_ms <= self.config.pull_in_duration_ms + if use_fll: + correction_hz = self.fll_filter.update(fll_error, dt_s) + self.carrier_nco.frequency_hz += correction_hz + self.state = TrackingState.FLL_PULL_IN + else: + if not self._pll_active: + self._pll_reference_frequency_hz = self.carrier_nco.frequency_hz + self._pll_active = True + correction_hz = self.pll_filter.update(pll_error, dt_s) / (2.0 * np.pi) + self.carrier_nco.frequency_hz = self._pll_reference_frequency_hz + correction_hz + self.state = TrackingState.PLL_TRACK + code_correction_hz = self.dll_filter.update(dll_error, dt_s) + carrier_doppler_hz = self.carrier_nco.frequency_hz - self.carrier_center_hz + aiding_hz = ( + carrier_doppler_hz / self.profile.carrier_frequency_hz * self.profile.code_rate_hz + if self.config.carrier_aiding + else 0.0 + ) + # Positive E-L means the local phase must be retarded for the phase + # convention used by CodeNco, hence the negative actuator sign. + self.code_nco.frequency_hz = self.profile.code_rate_hz + aiding_hz - code_correction_hz + cn0 = self.cn0_estimator.update(correlators.prompt) + lock = self.lock_detector.update(correlators) + reacquire = self.lock_detector.failures >= self.config.loss_of_lock_epochs + if reacquire: + self.state = TrackingState.REACQUISITION + elif cn0 is not None and cn0 < self.config.weak_signal_cn0_db_hz: + self.state = TrackingState.WEAK_SIGNAL + measurement = TrackingMeasurement( + epoch=self.epoch, + time_s=(self.epoch + 1) * dt_s, + state=self.state, + prompt_i=float(correlators.prompt.real), + prompt_q=float(correlators.prompt.imag), + early_magnitude=float(abs(correlators.early)), + late_magnitude=float(abs(correlators.late)), + pll_error_rad=pll_error, + fll_error_hz=fll_error, + dll_error_chips=dll_error, + carrier_frequency_hz=self.carrier_nco.frequency_hz, + code_frequency_hz=self.code_nco.frequency_hz, + carrier_phase_rad=self.carrier_nco.phase_rad, + code_phase_chips=self.code_nco.phase_chips, + cn0_db_hz=cn0, + carrier_lock_metric=lock.carrier_metric, + code_lock_metric=lock.code_metric, + cycle_slip=lock.cycle_slip, + side_peak_suspected=lock.side_peak_suspected, + reacquisition_requested=reacquire, + ) + self.previous_prompt = correlators.prompt + self.measurements.append(measurement) + self.epoch += 1 + return measurement + + def process(self, samples: npt.NDArray[np.generic]) -> list[TrackingMeasurement]: + array = np.asarray(samples) + epochs = array.size // self.integration_samples + return [self.process_epoch(array[index * self.integration_samples : (index + 1) * self.integration_samples]) for index in range(epochs)] diff --git a/src/galileo_rx/tracking/tracking_manager.py b/src/galileo_rx/tracking/tracking_manager.py new file mode 100644 index 0000000..9e2a2d3 --- /dev/null +++ b/src/galileo_rx/tracking/tracking_manager.py @@ -0,0 +1,30 @@ +"""Multi-channel scheduler with separate E1B/E1C logical channels.""" + +from __future__ import annotations + +import numpy.typing as npt + +from galileo_rx.config import TrackingConfig +from galileo_rx.signal_profiles import SignalProfile +from galileo_rx.signals.code_provider import CodeProvider +from galileo_rx.types import AcquisitionResult, TrackingMeasurement +from .tracking_channel import TrackingChannel + + +class TrackingManager: + def __init__(self, profile: SignalProfile, provider: CodeProvider, sampling_frequency_hz: float, config: TrackingConfig) -> None: + self.profile = profile + self.provider = provider + self.sampling_frequency_hz = sampling_frequency_hz + self.config = config + self.channels: dict[tuple[int, str], TrackingChannel] = {} + + def add_channel(self, acquisition: AcquisitionResult, start_sample_index: int = 0) -> TrackingChannel: + key = (acquisition.prn, acquisition.component) + channel = TrackingChannel(self.profile, self.provider, self.sampling_frequency_hz, self.config, acquisition, start_sample_index) + self.channels[key] = channel + return channel + + def process_epoch(self, samples: npt.NDArray, keys: list[tuple[int, str]] | None = None) -> dict[tuple[int, str], TrackingMeasurement]: + selected = keys if keys is not None else list(self.channels) + return {key: self.channels[key].process_epoch(samples) for key in selected} diff --git a/src/galileo_rx/types.py b/src/galileo_rx/types.py new file mode 100644 index 0000000..c16297e --- /dev/null +++ b/src/galileo_rx/types.py @@ -0,0 +1,102 @@ +"""Shared, unit-explicit data transfer objects.""" + +from __future__ import annotations + +from dataclasses import dataclass, field +from enum import Enum +from typing import Any + +import numpy as np +import numpy.typing as npt + +ComplexArray = npt.NDArray[np.complexfloating[Any, Any]] +FloatArray = npt.NDArray[np.floating[Any]] + + +class TrackingState(str, Enum): + IDLE = "IDLE" + ACQUIRED = "ACQUIRED" + FLL_PULL_IN = "FLL_PULL_IN" + FLL_PLL_TRANSITION = "FLL_PLL_TRANSITION" + PLL_TRACK = "PLL_TRACK" + WEAK_SIGNAL = "WEAK_SIGNAL" + LOSS_OF_LOCK = "LOSS_OF_LOCK" + REACQUISITION = "REACQUISITION" + + +@dataclass(slots=True) +class AcquisitionResult: + detected: bool + prn: int + component: str + code_phase_samples: float + code_phase_chips: float + doppler_hz: float + carrier_frequency_hz: float + peak_power: float + second_peak_power: float + detection_metric: float + estimated_cn0_db_hz: float | None + coherent_integration_ms: float + noncoherent_accumulations: int + raw_code_phase_samples: int = 0 + raw_doppler_hz: float = 0.0 + metrics: dict[str, float] = field(default_factory=dict) + side_peak_suspected: bool = False + + +@dataclass(slots=True) +class CorrelatorOutputs: + very_early: complex = 0j + early: complex = 0j + prompt: complex = 0j + late: complex = 0j + very_late: complex = 0j + + +@dataclass(slots=True) +class TrackingMeasurement: + epoch: int + time_s: float + state: TrackingState + prompt_i: float + prompt_q: float + early_magnitude: float + late_magnitude: float + pll_error_rad: float + fll_error_hz: float + dll_error_chips: float + carrier_frequency_hz: float + code_frequency_hz: float + carrier_phase_rad: float + code_phase_chips: float + cn0_db_hz: float | None + carrier_lock_metric: float + code_lock_metric: float + cycle_slip: bool = False + side_peak_suspected: bool = False + reacquisition_requested: bool = False + + +@dataclass(slots=True) +class SatelliteTruth: + prn: int + component: str + initial_code_delay_chips: float + initial_code_delay_samples: float + initial_doppler_hz: float + doppler_rate_hz_s: float + initial_carrier_phase_rad: float + amplitude: float + cn0_db_hz: float | None + + +@dataclass(slots=True) +class GenerationTruth: + sampling_frequency_hz: float + intermediate_frequency_hz: float + input_is_real_if: bool + start_sample: int + sample_count: int + satellites: list[SatelliteTruth] + diff --git a/src/galileo_rx/verification/__init__.py b/src/galileo_rx/verification/__init__.py new file mode 100644 index 0000000..6186e04 --- /dev/null +++ b/src/galileo_rx/verification/__init__.py @@ -0,0 +1 @@ +"""External-vector verification flows.""" diff --git a/src/galileo_rx/verification/signalsim_validation.py b/src/galileo_rx/verification/signalsim_validation.py new file mode 100644 index 0000000..b4008ae --- /dev/null +++ b/src/galileo_rx/verification/signalsim_validation.py @@ -0,0 +1,591 @@ +"""Executable end-to-end validation against a local globsky/SignalSim tree.""" + +from __future__ import annotations + +from dataclasses import asdict, replace +from hashlib import sha256 +import json +import math +from pathlib import Path +import subprocess +import time +from typing import Any + +import numpy as np +import yaml + +from galileo_rx.acquisition.acquisition_manager import AcquisitionManager +from galileo_rx.config import AcquisitionConfig, TrackingConfig +from galileo_rx.diagnostics.plots import ( + acquisition_map, + acquisition_peak_neighborhood, + acquisition_profiles, + prompt_constellation, + tracking_diagnostics, +) +from galileo_rx.diagnostics.reports import export_tracking_csv +from galileo_rx.fixed_point.fixed_acquisition import FixedPcpsAcquisition +from galileo_rx.fixed_point.formats import FixedFormat +from galileo_rx.io.signalsim_reader import SignalSimReader, SignalSimSampleSpec +from galileo_rx.rtl_model.vector_export import export_timed_complex_hex +from galileo_rx.signal_profiles import galileo_e1_profile +from galileo_rx.signals.galileo_e1 import e1_local_replica +from galileo_rx.signals.signalsim_codes import SignalSimCodeProvider +from galileo_rx.tracking.correlator import CorrelatorBank +from galileo_rx.tracking.nco import CarrierNco, CodeNco +from galileo_rx.tracking.symbol_sync import recover_bpsk_symbols, synchronize_secondary_code +from galileo_rx.tracking.tracking_channel import TrackingChannel + + +def locate_signalsim(start: str | Path) -> Path: + start_path = Path(start).resolve() + roots = [start_path, *start_path.parents[:3], Path.home() / "Desktop", Path.home() / "projects", Path.home() / "src"] + names = ("SignalSim", "signalsim", "signal-sim") + candidates: list[Path] = [] + for root in roots: + for name in names: + candidates.extend((root / name, root / "signalsim" / name)) + for candidate in candidates: + if (candidate / "IFdataGen" / "CMakeLists.txt").is_file() and (candidate / "src" / "PrnGenerate.cpp").is_file(): + return candidate.resolve() + raise FileNotFoundError("could not locate a SignalSim source tree from the workspace or common project directories") + + +def _git(source: Path, *args: str) -> str: + return subprocess.check_output(["git", "-C", str(source), *args], text=True).strip() + + +def _hash_file(path: Path) -> str: + digest = sha256() + with path.open("rb") as stream: + for block in iter(lambda: stream.read(1024 * 1024), b""): + digest.update(block) + return digest.hexdigest() + + +def _save_figure(figure: Any, path: Path) -> None: + figure.savefig(path, dpi=140, bbox_inches="tight") + import matplotlib.pyplot as plt + plt.close(figure) + + +def _tracking_summary(measurements: list[Any], if_hz: float, expected_doppler_hz: float) -> dict[str, Any]: + tail_count = min(200, len(measurements)) + tail = measurements[-tail_count:] + doppler = np.asarray([item.carrier_frequency_hz - if_hz for item in tail], dtype=np.float64) + dll = np.asarray([item.dll_error_chips for item in tail], dtype=np.float64) + prompt = np.asarray([complex(item.prompt_i, item.prompt_q) for item in tail], dtype=np.complex128) + return { + "epoch_count": len(measurements), + "tail_epoch_count": tail_count, + "final_state": measurements[-1].state.value, + "reacquisition_epoch_count": sum(item.reacquisition_requested for item in measurements), + "loss_of_lock_flag_count": sum(item.state.value in {"LOSS_OF_LOCK", "REACQUISITION"} for item in measurements), + "estimated_doppler_hz": float(np.mean(doppler)), + "doppler_error_hz": float(np.mean(doppler) - expected_doppler_hz), + "doppler_jitter_hz_rms": float(np.std(doppler)), + "dll_error_chips_rms": float(np.sqrt(np.mean(dll * dll))), + "mean_prompt_magnitude": float(np.mean(np.abs(prompt))), + "mean_carrier_lock_metric": float(np.mean([item.carrier_lock_metric for item in tail])), + "mean_code_lock_metric": float(np.mean([item.code_lock_metric for item in tail])), + "median_cn0_db_hz": float(np.nanmedian([np.nan if item.cn0_db_hz is None else item.cn0_db_hz for item in tail])), + } + + +def validate_signalsim(source_path: str | Path, config_path: str | Path, output_dir: str | Path, *, mode: str | None = None) -> tuple[dict[str, Any], bool]: + source = Path(source_path).resolve() + config_file = Path(config_path).resolve() + project_root = config_file.parent.parent + cfg = yaml.safe_load(config_file.read_text(encoding="utf-8")) + selected_mode = mode or cfg.get("mode", "quick") + if selected_mode not in {"quick", "full"}: + raise ValueError("SignalSim validation mode must be quick or full") + out = Path(output_dir).resolve() + out.mkdir(parents=True, exist_ok=True) + vector_cfg = cfg["vector"] + samples_path = project_root / vector_cfg["samples"] + if not samples_path.is_file(): + generator = project_root / "tools" / "generate_signalsim_vectors.py" + subprocess.run([str(generator), "--signalsim-path", str(source), "--project-root", str(project_root)], check=True) + fs = float(vector_cfg["sampling_frequency_hz"]) + if_hz = float(vector_cfg["intermediate_frequency_hz"]) + expected_doppler_hz = float(vector_cfg["expected_doppler_hz"]) + prn = int(vector_cfg["prn"]) + reader = SignalSimReader(samples_path, SignalSimSampleSpec(vector_cfg["sample_format"]), memory_map=True) + samples = reader.read() + profile = galileo_e1_profile() + provider = SignalSimCodeProvider(source) + acq_cfg = AcquisitionConfig(**cfg["acquisition"], parallelism="doppler_vectorized") + manager = AcquisitionManager(profile, provider, fs, acq_cfg) + acquisition_samples = manager.engine.coherent_samples * acq_cfg.noncoherent_accumulations + acquisition: dict[str, Any] = {} + grids: dict[str, Any] = {} + for component in ("E1B", "E1C"): + started = time.perf_counter() + result, grid = manager.acquire_one(samples[:acquisition_samples], component, prn, if_hz) + elapsed = time.perf_counter() - started + item = asdict(result) + item.update({ + "expected_prn": prn, + "expected_doppler_hz": expected_doppler_hz, + "raw_doppler_error_hz": result.raw_doppler_hz - expected_doppler_hz, + "interpolated_doppler_error_hz": result.doppler_hz - expected_doppler_hz, + "expected_code_phase_samples": vector_cfg.get("expected_code_phase_samples"), + "code_phase_error_samples": None, + "processing_time_s": elapsed, + "overflow_count": 0, + }) + acquisition[component] = item + grids[component] = grid + _save_figure(acquisition_map(grid.power, grid.doppler_bins_hz, f"SignalSim {component} PRN {prn}"), out / f"acquisition_map_{component.lower()}.png") + _save_figure(acquisition_profiles(grid.power, grid.doppler_bins_hz), out / f"acquisition_profiles_{component.lower()}.png") + _save_figure(acquisition_peak_neighborhood(grid.power, fs / profile.code_rate_hz), out / f"acquisition_peak_neighborhood_{component.lower()}.png") + + e1b_result = manager.acquire_one(samples[:acquisition_samples], "E1B", prn, if_hz)[0] + primary_samples = int(round(fs * profile.component("E1B").primary_code_period_s)) + boundary_start = int(round(e1b_result.code_phase_samples + math.ceil((acquisition_samples - e1b_result.code_phase_samples) / primary_samples) * primary_samples)) + tracking_cfg = cfg["tracking"] + e1b_channel = TrackingChannel( + profile, + provider, + fs, + TrackingConfig( + integration_ms=float(tracking_cfg["e1b_integration_ms"]), + pull_in_duration_ms=float(tracking_cfg["e1b_pull_in_ms"]), + pll_noise_bandwidth_hz=float(tracking_cfg["pll_noise_bandwidth_hz"]), + fll_noise_bandwidth_hz=float(tracking_cfg["fll_noise_bandwidth_hz"]), + dll_noise_bandwidth_hz=float(tracking_cfg["dll_noise_bandwidth_hz"]), + secondary_code_mode="none", + loss_of_lock_epochs=40, + ), + e1b_result, + boundary_start, + ) + e1b_measurements = e1b_channel.process(samples[boundary_start:]) + e1b_summary = _tracking_summary(e1b_measurements, if_hz, expected_doppler_hz) + export_tracking_csv(out / "tracking_e1b.csv", e1b_measurements) + _save_figure(tracking_diagnostics(e1b_measurements), out / "tracking_e1b.png") + _save_figure(prompt_constellation(e1b_measurements, ignored_epochs=150), out / "prompt_constellation_e1b.png") + + ignored_epochs = int(round(0.300 / (float(tracking_cfg["e1b_integration_ms"]) * 1e-3))) + prompt_e1b = np.asarray([complex(item.prompt_i, item.prompt_q) for item in e1b_measurements]) + symbols, soft_symbols = recover_bpsk_symbols(prompt_e1b, 2, ignored_epochs=ignored_epochs) + sync_bits = np.asarray([0, 1, 0, 1, 1, 0, 0, 0, 0, 0], dtype=np.int8) + sync_signs = (2 * sync_bits - 1).astype(np.int8) + sync_matches: list[dict[str, Any]] = [] + for inversion in (1, -1): + for index in range(max(0, symbols.size - sync_signs.size + 1)): + errors = int(np.count_nonzero(inversion * symbols[index : index + 10] != sync_signs)) + if errors == 0: + sync_matches.append({"symbol_index": index, "sign_inverted": inversion == -1, "errors": errors}) + symbol_report = { + "status": "raw_symbols_recovered_page_decoding_not_implemented", + "comparison_scope": "known_10_symbol_INAV_sync_words_only", + "recovered_symbols": int(symbols.size), + "compared_symbols": len(sync_matches) * 10, + "initial_ignored_tracking_epochs": ignored_epochs, + "initial_ignored_time_s": ignored_epochs * float(tracking_cfg["e1b_integration_ms"]) * 1e-3, + "bounded_alignment": "code boundary from PCPS; sync search within remaining 1.876 s", + "sync_matches": sync_matches, + "symbol_errors": 0 if sync_matches else None, + "symbol_error_rate": 0.0 if sync_matches else None, + "median_soft_symbol_magnitude": float(np.median(np.abs(soft_symbols))), + "frame_or_page_sync": len(sync_matches) >= 2, + "fec_decoding": "not_implemented", + "crc_validation": "not_implemented", + } + + e1c_result = manager.acquire_one(samples[:acquisition_samples], "E1C", prn, if_hz)[0] + e1c_boundary = int(round(e1c_result.code_phase_samples + math.ceil((acquisition_samples - e1c_result.code_phase_samples) / primary_samples) * primary_samples)) + open_epoch_count = min(100, (samples.size - e1c_boundary) // primary_samples) + carrier = CarrierNco(fs, e1c_result.carrier_frequency_hz, 2 * np.pi * e1c_result.carrier_frequency_hz * e1c_boundary / fs % (2 * np.pi)) + code = CodeNco( + fs, + profile.component("E1C").primary_code_length_chips, + profile.code_rate_hz * (1 + e1c_result.doppler_hz / profile.carrier_frequency_hz), + (-e1c_result.code_phase_chips + e1c_boundary * profile.code_rate_hz / fs) % 4092, + ) + bank = CorrelatorBank(profile, provider, "E1C", prn, carrier, code, 0.25, 0.75) + open_prompts = np.asarray([ + bank.correlate(samples[e1c_boundary + epoch * primary_samples : e1c_boundary + (epoch + 1) * primary_samples]).prompt + for epoch in range(open_epoch_count) + ], dtype=np.complex128) + secondary = provider.secondary_code(profile, "E1C", prn) + assert secondary is not None + sync = synchronize_secondary_code(open_prompts, secondary, 0.004, residual_frequency_step_hz=0.5) + epochs = np.arange(min(25, open_prompts.size), dtype=np.float64) + corrected = open_prompts[: epochs.size] * np.exp(-2j * np.pi * sync.residual_frequency_hz * 0.004 * epochs) + wipe = secondary[(sync.phase + np.arange(epochs.size)) % secondary.size] + wiped_gain_db = float(10 * np.log10(abs(np.sum(corrected * wipe)) ** 2 / (epochs.size * np.mean(np.abs(corrected) ** 2)))) + unwiped_gain_db = float(10 * np.log10(max(abs(np.sum(corrected)) ** 2, np.finfo(np.float64).tiny) / (epochs.size * np.mean(np.abs(corrected) ** 2)))) + adjusted = replace( + e1c_result, + doppler_hz=e1c_result.doppler_hz + sync.residual_frequency_hz, + carrier_frequency_hz=e1c_result.carrier_frequency_hz + sync.residual_frequency_hz, + ) + e1c_channel = TrackingChannel( + profile, + provider, + fs, + TrackingConfig( + integration_ms=float(tracking_cfg["e1c_integration_ms"]), + pull_in_duration_ms=float(tracking_cfg["e1c_pull_in_ms"]), + pll_noise_bandwidth_hz=float(tracking_cfg["pll_noise_bandwidth_hz"]), + fll_noise_bandwidth_hz=float(tracking_cfg["fll_noise_bandwidth_hz"]), + dll_noise_bandwidth_hz=float(tracking_cfg["dll_noise_bandwidth_hz"]), + secondary_code_mode="wipeoff", + loss_of_lock_epochs=20, + ), + adjusted, + e1c_boundary, + secondary_code_phase_at_start=sync.phase, + ) + e1c_measurements = e1c_channel.process(samples[e1c_boundary:]) + e1c_summary = _tracking_summary(e1c_measurements, if_hz, expected_doppler_hz) + export_tracking_csv(out / "tracking_e1c.csv", e1c_measurements) + _save_figure(tracking_diagnostics(e1c_measurements), out / "tracking_e1c.png") + _save_figure(prompt_constellation(e1c_measurements, ignored_epochs=75), out / "prompt_constellation_e1c.png") + secondary_report = asdict(sync) | { + "sequence_source": str(provider.pilot_bit_path), + "sequence_classification": "SignalSim_implemented_sequence_not_independently_certified_against_ICD", + "wiped_25_period_coherent_gain_db": wiped_gain_db, + "unwiped_25_period_coherent_gain_db": unwiped_gain_db, + "wipeoff_gain_improvement_db": wiped_gain_db - unwiped_gain_db, + } + + # Bit-true boundary comparison on the same external IQ8 coherent block. + # The floating reference remains float64/complex128; only the explicit + # input/FFT/power boundaries are quantized. + fixed_samples = samples[:primary_samples] / np.float64(128.0) + fixed_bins_hz = np.arange(1500.0, 2125.0 + 0.5 * 125.0, 125.0, dtype=np.float64) + fixed_replica = e1_local_replica( + profile, + provider, + "E1C", + prn, + primary_samples, + fs, + code_rate_hz=profile.code_rate_hz * (1.0 + 1750.0 / profile.carrier_frequency_hz), + ) + fixed_grid = FixedPcpsAcquisition( + FixedFormat(10, 8), + FixedFormat(32, 20), + FixedFormat(64, 32, signed=False), + ).search(fixed_samples, fixed_replica, fs, if_hz + fixed_bins_hz) + time_axis_s = np.arange(primary_samples, dtype=np.float64) / fs + reference_power = np.asarray([ + np.abs( + np.fft.ifft( + np.fft.fft(fixed_samples * np.exp(-2j * np.pi * (if_hz + doppler_hz) * time_axis_s)) + * np.conjugate(np.fft.fft(fixed_replica)) + ) + ) ** 2 + for doppler_hz in fixed_bins_hz + ], dtype=np.float64) + reference_peak = np.unravel_index(int(np.argmax(reference_power)), reference_power.shape) + reference_normalized = reference_power / np.max(reference_power) + fixed_normalized = fixed_grid.power / np.max(fixed_grid.power) + fixed_error = fixed_normalized - reference_normalized + fixed_report = { + "reference_dtype": "complex128/float64", + "input_format": {"total_bits": 10, "fractional_bits": 8}, + "fft_boundary_format": {"total_bits": 32, "fractional_bits": 20}, + "power_format": {"total_bits": 64, "fractional_bits": 32, "signed": False}, + "reference_doppler_bin_hz": float(fixed_bins_hz[reference_peak[0]]), + "fixed_doppler_bin_hz": float(fixed_bins_hz[fixed_grid.peak_doppler_index]), + "reference_code_phase_samples": int(reference_peak[1]), + "fixed_code_phase_samples": fixed_grid.peak_code_index, + "doppler_bin_agreement": bool(fixed_grid.peak_doppler_index == reference_peak[0]), + "code_phase_agreement": bool(fixed_grid.peak_code_index == reference_peak[1]), + "acquisition_decision_agreement": bool((np.max(reference_power) / np.mean(reference_power) >= 2.5) == (np.max(fixed_grid.power) / np.mean(fixed_grid.power) >= 2.5)), + "normalized_absolute_error_mean": float(np.mean(np.abs(fixed_error))), + "normalized_rms_error": float(np.sqrt(np.mean(fixed_error * fixed_error))), + "normalized_peak_error": float(np.max(np.abs(fixed_error))), + "overflow_count": fixed_grid.overflow_count, + } + + carrier_fcw = int(round((if_hz + expected_doppler_hz) / fs * 2**32)) & 0xFFFFFFFF + code_fcw = int(round(profile.code_rate_hz * (1 + expected_doppler_hz / profile.carrier_frequency_hz) / fs * 2**48)) + rtl_registers = { + "SAMPLE_WIDTH": 8, + "SAMPLE_FRACTIONAL_BITS": 0, + "INPUT_REPRESENTATION": "COMPLEX_IQ", + "IQ_ORDER": "IQ", + "SAMPLING_FREQUENCY_HZ": fs, + "INTERMEDIATE_FREQUENCY_HZ": if_hz, + "PRN": prn, + "COMPONENT": "E1C", + "ACQ_DOPPLER_MIN_HZ": acq_cfg.doppler_min_hz, + "ACQ_DOPPLER_MAX_HZ": acq_cfg.doppler_max_hz, + "ACQ_DOPPLER_STEP_HZ": acq_cfg.doppler_step_hz, + "ACQ_COHERENT_SAMPLES": manager.engine.coherent_samples, + "ACQ_NONCOHERENT_COUNT": acq_cfg.noncoherent_accumulations, + "ACQ_FFT_LENGTH": manager.engine.coherent_samples, + "TRACK_E1B_INTEGRATION_SAMPLES": int(round(fs * float(tracking_cfg["e1b_integration_ms"]) * 1e-3)), + "TRACK_E1C_INTEGRATION_SAMPLES": primary_samples, + "CARRIER_NCO_PHASE_WIDTH": 32, + "CARRIER_NCO_FCW": carrier_fcw, + "CODE_NCO_PHASE_WIDTH": 48, + "CODE_NCO_FCW": code_fcw, + "E1C_SECONDARY_PHASE": sync.phase, + "ACQ_TO_TRACK_CODE_PHASE_SAMPLES": acquisition["E1C"]["code_phase_samples"], + "ACQ_TO_TRACK_DOPPLER_HZ": expected_doppler_hz, + "NOTE": "Symbolic names; APB addresses remain to be assigned by the RTL IP register map", + } + rtl_manifest = export_timed_complex_hex( + out / "rtl_vectors", + "signalsim_acquisition_input_iq8", + samples[:acquisition_samples], + FixedFormat(8, 0), + fs, + rtl_registers, + ) + + criteria = cfg["pass_criteria"] + acquisition_pass = all( + acquisition[component]["detected"] + and acquisition[component]["prn"] == prn + and abs(acquisition[component]["raw_doppler_error_hz"]) <= criteria["maximum_raw_doppler_error_hz"] + for component in ("E1B", "E1C") + ) + def tracking_pass(summary: dict[str, Any]) -> bool: + return ( + summary["final_state"] == "PLL_TRACK" + and summary["reacquisition_epoch_count"] == 0 + and abs(summary["doppler_error_hz"]) <= criteria["maximum_tracking_doppler_error_hz"] + and summary["doppler_jitter_hz_rms"] <= criteria["maximum_tracking_doppler_jitter_hz"] + and summary["dll_error_chips_rms"] <= criteria["maximum_dll_rms_chips"] + ) + full_vector_report: dict[str, Any] = {} + full_vector_pass = True + if selected_mode == "full": + definitions = { + "nominal_cn0_single_prn": {1: 1828.0}, + "negative_doppler": {27: -2637.0}, + "multiple_prns": {1: 1828.0, 4: 2171.0, 19: -367.0, 21: -712.0, 27: -2637.0}, + } + generator = project_root / "tools" / "generate_signalsim_vectors.py" + for vector_name, expected_by_prn in definitions.items(): + metadata_path = project_root / "verification" / "vectors" / "signalsim" / vector_name / "metadata.yaml" + if not metadata_path.is_file(): + subprocess.run([str(generator), "--signalsim-path", str(source), "--project-root", str(project_root), "--vector", vector_name], check=True) + metadata = yaml.safe_load(metadata_path.read_text(encoding="utf-8")) + path = project_root / metadata["output"] + vector_samples = SignalSimReader(path, SignalSimSampleSpec("IQ8"), memory_map=True).read(acquisition_samples) + broad_cfg = AcquisitionConfig( + doppler_min_hz=-4000.0, + doppler_max_hz=3000.0, + doppler_step_hz=250.0, + coherent_integration_ms=4.0, + noncoherent_accumulations=5, + detection_threshold=2.5, + zero_padding_mode="none", + parallelism="doppler_vectorized", + ) + broad_manager = AcquisitionManager(profile, provider, fs, broad_cfg) + vector_results: dict[int, Any] = {} + for vector_prn, vector_truth_hz in expected_by_prn.items(): + vector_result, _ = broad_manager.acquire_one(vector_samples, "E1C", vector_prn, if_hz) + item = asdict(vector_result) | { + "expected_doppler_hz": vector_truth_hz, + "raw_doppler_error_hz": vector_result.raw_doppler_hz - vector_truth_hz, + } + item["pass"] = bool(vector_result.detected and abs(item["raw_doppler_error_hz"]) <= 250.0) + full_vector_pass &= item["pass"] + vector_results[vector_prn] = item + full_vector_report[vector_name] = { + "sha256": _hash_file(path), + "size_bytes": path.stat().st_size, + "acquisition": vector_results, + } + + # Negative-Doppler tracking is checked over the long vector. Transient + # lock-detector assertions during pull-in are reported, while the pass + # condition applies after convergence. + negative_path = project_root / yaml.safe_load( + (project_root / "verification" / "vectors" / "signalsim" / "negative_doppler" / "metadata.yaml").read_text(encoding="utf-8") + )["output"] + negative_samples = SignalSimReader(negative_path, SignalSimSampleSpec("IQ8"), memory_map=True).read() + negative_acq_manager = AcquisitionManager( + profile, + provider, + fs, + AcquisitionConfig(doppler_min_hz=-4000.0, doppler_max_hz=-1500.0, doppler_step_hz=250.0, noncoherent_accumulations=5, zero_padding_mode="none"), + ) + negative_acq, _ = negative_acq_manager.acquire_one(negative_samples[:acquisition_samples], "E1B", 27, if_hz) + negative_start = int(round(negative_acq.code_phase_samples + math.ceil((acquisition_samples - negative_acq.code_phase_samples) / primary_samples) * primary_samples)) + negative_channel = TrackingChannel( + profile, + provider, + fs, + TrackingConfig(integration_ms=2.0, pull_in_duration_ms=300.0, pll_noise_bandwidth_hz=10.0, fll_noise_bandwidth_hz=20.0, dll_noise_bandwidth_hz=1.0, secondary_code_mode="none", loss_of_lock_epochs=40), + negative_acq, + negative_start, + ) + negative_measurements = negative_channel.process(negative_samples[negative_start:]) + negative_summary = _tracking_summary(negative_measurements, if_hz, -2637.0) + post_pull_in = negative_measurements[500:] + negative_summary["post_pull_in_reacquisition_epoch_count"] = sum(item.reacquisition_requested for item in post_pull_in) + negative_tracking_pass = bool( + negative_summary["final_state"] == "PLL_TRACK" + and negative_summary["post_pull_in_reacquisition_epoch_count"] == 0 + and abs(negative_summary["doppler_error_hz"]) <= criteria["maximum_tracking_doppler_error_hz"] + and negative_summary["doppler_jitter_hz_rms"] <= criteria["maximum_tracking_doppler_jitter_hz"] + and negative_summary["dll_error_chips_rms"] <= criteria["maximum_dll_rms_chips"] + ) + negative_summary["pass"] = negative_tracking_pass + full_vector_report["negative_doppler"]["tracking_e1b"] = negative_summary + full_vector_pass &= negative_tracking_pass + + # Nominal-C/N0 uses the pilot because secondary wipeoff removes the + # 100 ms overlay transition from the carrier loop. + nominal_path = project_root / yaml.safe_load( + (project_root / "verification" / "vectors" / "signalsim" / "nominal_cn0_single_prn" / "metadata.yaml").read_text(encoding="utf-8") + )["output"] + nominal_samples = SignalSimReader(nominal_path, SignalSimSampleSpec("IQ8"), memory_map=True).read() + nominal_acq_manager = AcquisitionManager( + profile, + provider, + fs, + AcquisitionConfig(doppler_min_hz=1000.0, doppler_max_hz=2500.0, doppler_step_hz=250.0, noncoherent_accumulations=5, zero_padding_mode="none"), + ) + nominal_acq, _ = nominal_acq_manager.acquire_one(nominal_samples[:acquisition_samples], "E1C", 1, if_hz) + nominal_start = int(round(nominal_acq.code_phase_samples + math.ceil((acquisition_samples - nominal_acq.code_phase_samples) / primary_samples) * primary_samples)) + nominal_open_count = min(100, (nominal_samples.size - nominal_start) // primary_samples) + nominal_carrier = CarrierNco(fs, nominal_acq.carrier_frequency_hz, 2 * np.pi * nominal_acq.carrier_frequency_hz * nominal_start / fs % (2 * np.pi)) + nominal_code = CodeNco( + fs, + 4092, + profile.code_rate_hz * (1 + nominal_acq.doppler_hz / profile.carrier_frequency_hz), + (-nominal_acq.code_phase_chips + nominal_start * profile.code_rate_hz / fs) % 4092, + ) + nominal_bank = CorrelatorBank(profile, provider, "E1C", 1, nominal_carrier, nominal_code, 0.25, 0.75) + nominal_prompts = np.asarray([ + nominal_bank.correlate(nominal_samples[nominal_start + epoch * primary_samples : nominal_start + (epoch + 1) * primary_samples]).prompt + for epoch in range(nominal_open_count) + ], dtype=np.complex128) + nominal_sync = synchronize_secondary_code(nominal_prompts, secondary, 0.004, residual_frequency_step_hz=0.5) + nominal_adjusted = replace( + nominal_acq, + doppler_hz=nominal_acq.doppler_hz + nominal_sync.residual_frequency_hz, + carrier_frequency_hz=nominal_acq.carrier_frequency_hz + nominal_sync.residual_frequency_hz, + ) + nominal_channel = TrackingChannel( + profile, + provider, + fs, + TrackingConfig(integration_ms=4.0, pull_in_duration_ms=200.0, pll_noise_bandwidth_hz=10.0, fll_noise_bandwidth_hz=10.0, dll_noise_bandwidth_hz=1.0, secondary_code_mode="wipeoff", loss_of_lock_epochs=20), + nominal_adjusted, + nominal_start, + secondary_code_phase_at_start=nominal_sync.phase, + ) + nominal_measurements = nominal_channel.process(nominal_samples[nominal_start:]) + nominal_summary = _tracking_summary(nominal_measurements, if_hz, 1828.0) + nominal_summary["secondary_sync"] = asdict(nominal_sync) + nominal_summary["post_pull_in_reacquisition_epoch_count"] = sum(item.reacquisition_requested for item in nominal_measurements[75:]) + nominal_tracking_pass = bool( + nominal_summary["final_state"] == "PLL_TRACK" + and nominal_summary["post_pull_in_reacquisition_epoch_count"] == 0 + and abs(nominal_summary["doppler_error_hz"]) <= criteria["maximum_tracking_doppler_error_hz"] + and nominal_summary["doppler_jitter_hz_rms"] <= criteria["maximum_tracking_doppler_jitter_hz"] + and nominal_summary["dll_error_chips_rms"] <= criteria["maximum_dll_rms_chips"] + and nominal_sync.normalized_correlation >= criteria["minimum_secondary_correlation"] + and nominal_sync.sign_errors == 0 + ) + nominal_summary["pass"] = nominal_tracking_pass + full_vector_report["nominal_cn0_single_prn"]["tracking_e1c"] = nominal_summary + full_vector_pass &= nominal_tracking_pass + + passes = { + "acquisition": acquisition_pass, + "e1b_tracking": tracking_pass(e1b_summary), + "e1b_raw_symbol_sync": len(sync_matches) >= int(criteria["minimum_inav_sync_words"]), + "e1c_secondary_sync": sync.normalized_correlation >= criteria["minimum_secondary_correlation"] and sync.sign_errors <= criteria["maximum_secondary_sign_errors"], + "e1c_tracking": tracking_pass(e1c_summary), + "fixed_point_acquisition": bool( + fixed_report["doppler_bin_agreement"] + and fixed_report["code_phase_agreement"] + and fixed_report["acquisition_decision_agreement"] + and fixed_report["overflow_count"] == 0 + ), + } + if selected_mode == "full": + passes["full_vector_set"] = full_vector_pass + report = { + "simulator": { + "name": "SignalSim", + "path": str(source), + "remote": _git(source, "remote", "get-url", "origin"), + "commit": _git(source, "rev-parse", "HEAD"), + "git_status": _git(source, "status", "--short", "--branch"), + }, + "vector": { + **vector_cfg, + "path": str(samples_path), + "size_bytes": samples_path.stat().st_size, + "complex_sample_count": reader.sample_count, + "sha256": _hash_file(samples_path), + "internal_dtype": "complex128", + }, + "mode": selected_mode, + "acquisition": acquisition, + "tracking": {"E1B": e1b_summary, "E1C": e1c_summary}, + "e1b_symbols": symbol_report, + "e1c_secondary": secondary_report, + "fixed_point_acquisition": fixed_report, + "rtl_vector_manifest": rtl_manifest, + "full_vectors": full_vector_report, + "pass_criteria": criteria, + "passes": passes, + "overall_pass": all(passes.values()), + "known_failures": [ + "SignalSim E1 output cannot select E1B-only or E1C-only", + "SignalSim E1 uses BOC(1,1), not full CBOC", + "SignalSim has no native real-IF output", + "SignalSim IQ2 writer omits the output-byte assignment at this commit", + "Full I/NAV receiver-side FEC/page/CRC decoding is not implemented", + "SignalSim does not emit exact sample-side code-delay or navigation-symbol truth", + ], + } + (out / "signalsim_validation_report.json").write_text(json.dumps(report, indent=2, default=str) + "\n", encoding="utf-8") + (out / "signalsim_e1b_symbol_comparison.json").write_text(json.dumps(symbol_report, indent=2) + "\n", encoding="utf-8") + reports_root = project_root / "reports" + reports_root.mkdir(parents=True, exist_ok=True) + acquisition_report = { + "simulator": report["simulator"], + "vector": report["vector"], + "acquisition": acquisition, + "pass": acquisition_pass, + "truth_limitations": "SignalSim CLI logs rounded Doppler but does not export exact code delay", + } + (reports_root / "signalsim_acquisition_report.json").write_text(json.dumps(acquisition_report, indent=2, default=str) + "\n", encoding="utf-8") + (reports_root / "signalsim_e1b_symbol_comparison.json").write_text(json.dumps(symbol_report, indent=2) + "\n", encoding="utf-8") + markdown = [ + "# SignalSim acquisition and tracking validation", + "", + f"Overall {selected_mode}-mode result: **{'PASS' if report['overall_pass'] else 'FAIL'}**", + "", + "| Check | Result |", + "|---|---:|", + *[f"| {name} | {'PASS' if value else 'FAIL'} |" for name, value in passes.items()], + "", + f"E1B tracking Doppler: {e1b_summary['estimated_doppler_hz']:.3f} Hz (error {e1b_summary['doppler_error_hz']:+.3f} Hz).", + f"E1C tracking Doppler: {e1c_summary['estimated_doppler_hz']:.3f} Hz (error {e1c_summary['doppler_error_hz']:+.3f} Hz).", + f"E1C secondary phase: {sync.phase}; normalized correlation {sync.normalized_correlation:.4f}; sign errors {sync.sign_errors}/{sync.compared_periods}.", + f"E1B exact I/NAV sync words: {len(sync_matches)}. Full page decoding is not implemented.", + ] + (out / "signalsim_validation_report.md").write_text("\n".join(markdown) + "\n", encoding="utf-8") + acquisition_markdown = [ + "# SignalSim acquisition report", + "", + "| Component | Detected | Raw Doppler (Hz) | Truth (Hz) | Code phase (samples) | Peak/second |", + "|---|---:|---:|---:|---:|---:|", + *[ + f"| {component} | {item['detected']} | {item['raw_doppler_hz']:.1f} | {expected_doppler_hz:.1f} | {item['code_phase_samples']:.3f} | {item['detection_metric']:.3f} |" + for component, item in acquisition.items() + ], + "", + "SignalSim does not export exact code-delay truth. Agreement between independently acquired E1B and E1C code phases is used as a cross-component consistency check; no code-phase error is fabricated.", + ] + (reports_root / "signalsim_acquisition_report.md").write_text("\n".join(acquisition_markdown) + "\n", encoding="utf-8") + return report, bool(report["overall_pass"]) diff --git a/tests/conftest.py b/tests/conftest.py new file mode 100644 index 0000000..0d2ecaf --- /dev/null +++ b/tests/conftest.py @@ -0,0 +1,18 @@ +from __future__ import annotations + +from pathlib import Path + +import pytest + + +@pytest.fixture(scope="session") +def signalsim_validation_result(tmp_path_factory: pytest.TempPathFactory): + source_candidates = [Path("signalsim/SignalSim"), Path("../SignalSim"), Path("../signalsim/SignalSim")] + source = next((path.resolve() for path in source_candidates if (path / "IFdataGen" / "CMakeLists.txt").is_file()), None) + if source is None: + pytest.skip("local SignalSim checkout with IFdataGen/CMakeLists.txt is genuinely unavailable") + from galileo_rx.verification.signalsim_validation import validate_signalsim + + output = tmp_path_factory.mktemp("signalsim_validation") + report, passed = validate_signalsim(source, "configs/signalsim_validation.yaml", output, mode="full") + return report, passed, output diff --git a/tests/integration/test_acquisition.py b/tests/integration/test_acquisition.py new file mode 100644 index 0000000..562e953 --- /dev/null +++ b/tests/integration/test_acquisition.py @@ -0,0 +1,86 @@ +import numpy as np +import pytest + +from galileo_rx.acquisition.acquisition_manager import AcquisitionManager +from galileo_rx.config import AcquisitionConfig, FrontendConfig, RfConfig +from galileo_rx.frontend.frontend_chain import FrontendChain +from galileo_rx.signal_profiles import galileo_e1_profile +from galileo_rx.signals.code_provider import SyntheticCodeProvider +from galileo_rx.signals.signal_generator import ChannelModelConfig, SatelliteSignalConfig, SyntheticSignalGenerator + + +def make_signal(fs: float, delay_chips: float, doppler_hz: float, periods: int = 2, real_if: bool = False): + profile = galileo_e1_profile() + provider = SyntheticCodeProvider() + if_hz = 2.0e6 if real_if else 0.0 + generator = SyntheticSignalGenerator( + profile, + provider, + fs, + if_hz, + real_if, + [SatelliteSignalConfig(prn=5, component="E1C", code_delay_chips=delay_chips, doppler_hz=doppler_hz, cn0_db_hz=48.0)], + ChannelModelConfig(seed=22), + ) + samples, _ = generator.generate(int(round(periods * 0.004 * fs))) + if real_if: + rf = RfConfig(sample_format="float64", input_is_real_if=True, sampling_frequency_hz=fs, intermediate_frequency_hz=if_hz) + samples = FrontendChain(rf, FrontendConfig()).process(samples) + return samples, profile, provider + + +@pytest.mark.parametrize("doppler_hz", [-1250.0, 1750.0]) +def test_pcps_detects_doppler_and_code(doppler_hz: float) -> None: + fs = 4.092e6 + delay_chips = 37.0 + samples, profile, provider = make_signal(fs, delay_chips, doppler_hz) + config = AcquisitionConfig( + doppler_min_hz=-2500, + doppler_max_hz=2500, + doppler_step_hz=250, + coherent_integration_ms=4, + noncoherent_accumulations=2, + detection_threshold=2.0, + zero_padding_mode="none", + parabolic_interpolation=False, + ) + result, _ = AcquisitionManager(profile, provider, fs, config).acquire_one(samples, "E1C", 5) + assert result.detected + assert result.raw_doppler_hz == doppler_hz + assert abs(result.code_phase_chips - delay_chips) <= 0.26 + + +def test_pcps_noninteger_samples_per_chip_and_boundary() -> None: + fs = 4.5e6 + delay_chips = 4091.2 + samples, profile, provider = make_signal(fs, delay_chips, 500.0) + config = AcquisitionConfig( + doppler_min_hz=0, + doppler_max_hz=1000, + doppler_step_hz=250, + coherent_integration_ms=4, + noncoherent_accumulations=2, + detection_threshold=1.8, + zero_padding_mode="none", + parabolic_interpolation=False, + ) + result, _ = AcquisitionManager(profile, provider, fs, config).acquire_one(samples, "E1C", 5) + circular_error = min(abs(result.code_phase_chips - delay_chips), 4092 - abs(result.code_phase_chips - delay_chips)) + assert result.detected and circular_error < 0.6 + + +def test_real_if_acquisition() -> None: + fs = 8.0e6 + samples, profile, provider = make_signal(fs, 21.0, 750.0, real_if=True) + config = AcquisitionConfig( + doppler_min_hz=250, + doppler_max_hz=1250, + doppler_step_hz=250, + coherent_integration_ms=4, + noncoherent_accumulations=2, + detection_threshold=1.7, + zero_padding_mode="none", + parabolic_interpolation=False, + ) + result, _ = AcquisitionManager(profile, provider, fs, config).acquire_one(samples, "E1C", 5) + assert result.detected and result.raw_doppler_hz == 750.0 diff --git a/tests/integration/test_detection_and_lock_loss.py b/tests/integration/test_detection_and_lock_loss.py new file mode 100644 index 0000000..d0ddf89 --- /dev/null +++ b/tests/integration/test_detection_and_lock_loss.py @@ -0,0 +1,33 @@ +import numpy as np + +from galileo_rx.acquisition.acquisition_manager import AcquisitionManager +from galileo_rx.config import AcquisitionConfig, TrackingConfig +from galileo_rx.signal_profiles import galileo_e1_profile +from galileo_rx.signals.code_provider import SyntheticCodeProvider +from galileo_rx.tracking.tracking_channel import TrackingChannel +from galileo_rx.types import AcquisitionResult, TrackingState + + +def test_noise_only_does_not_pass_peak_ratio_threshold() -> None: + fs = 4.092e6 + rng = np.random.default_rng(345) + samples = rng.standard_normal(int(0.008 * fs)) + 1j * rng.standard_normal(int(0.008 * fs)) + config = AcquisitionConfig( + doppler_min_hz=-500, doppler_max_hz=500, doppler_step_hz=250, + noncoherent_accumulations=2, detection_threshold=2.5, zero_padding_mode="none", + ) + result, _ = AcquisitionManager(galileo_e1_profile(), SyntheticCodeProvider(), fs, config).acquire_one(samples, "E1C", 1) + assert not result.detected + + +def test_consecutive_failures_request_reacquisition() -> None: + fs = 4.092e6 + acquisition = AcquisitionResult( + True, 1, "E1B", 0.0, 0.0, 0.0, 0.0, 1.0, 0.1, 10.0, None, 4.0, 1 + ) + config = TrackingConfig(use_fll_assist=False, loss_of_lock_epochs=3) + channel = TrackingChannel(galileo_e1_profile(), SyntheticCodeProvider(), fs, config, acquisition) + zero_epoch = np.zeros(channel.integration_samples, dtype=np.complex128) + measurements = [channel.process_epoch(zero_epoch) for _ in range(3)] + assert measurements[-1].reacquisition_requested + assert measurements[-1].state == TrackingState.REACQUISITION diff --git a/tests/integration/test_fixed_acquisition.py b/tests/integration/test_fixed_acquisition.py new file mode 100644 index 0000000..e9f7649 --- /dev/null +++ b/tests/integration/test_fixed_acquisition.py @@ -0,0 +1,33 @@ +import numpy as np + +from galileo_rx.fixed_point.bittrue_pipeline import compare_acquisition, sweep_acquisition_word_lengths +from galileo_rx.fixed_point.fixed_acquisition import FixedPcpsAcquisition + + +def test_fixed_acquisition_peak_agrees_with_float() -> None: + rng = np.random.default_rng(4) + count = 256 + fs = 1.024e6 + replica = np.where(rng.integers(0, 2, count), 1.0, -1.0) + delay = 73 + doppler = 4000.0 + time_s = np.arange(count) / fs + samples = np.roll(replica, delay) * np.exp(2j * np.pi * doppler * time_s) + bins = np.asarray([-4000.0, 0.0, 4000.0]) + reference = np.asarray([ + np.abs(np.fft.ifft(np.fft.fft(samples * np.exp(-2j * np.pi * frequency * time_s)) * np.conjugate(np.fft.fft(replica)))) ** 2 + for frequency in bins + ]) + fixed = FixedPcpsAcquisition().search(samples, replica, fs, bins) + comparison = compare_acquisition(reference / count**2, fixed, threshold=2.5) + assert comparison.doppler_bin_agreement + assert comparison.code_phase_agreement + assert comparison.acquisition_decision_agreement + + +def test_word_length_sweep_reports_each_width() -> None: + rng = np.random.default_rng(7) + replica = np.where(rng.integers(0, 2, 64), 1.0, -1.0) + reports = sweep_acquisition_word_lengths(np.roll(replica, 9).astype(complex), replica, 1e6, np.asarray([0.0]), [6, 8]) + assert [item["input_bits"] for item in reports] == [6, 8] + assert all(item["code_phase_agreement"] for item in reports) diff --git a/tests/integration/test_long_integration.py b/tests/integration/test_long_integration.py new file mode 100644 index 0000000..cbd8c39 --- /dev/null +++ b/tests/integration/test_long_integration.py @@ -0,0 +1,57 @@ +import numpy as np + +from galileo_rx.acquisition.acquisition_manager import AcquisitionManager +from galileo_rx.config import AcquisitionConfig +from galileo_rx.signal_profiles import galileo_e1_profile +from galileo_rx.signals.code_provider import SyntheticCodeProvider +from galileo_rx.signals.signal_generator import ChannelModelConfig, SatelliteSignalConfig, SyntheticSignalGenerator + + +def test_e1c_secondary_wipeoff_for_eight_ms() -> None: + fs = 4.092e6 + profile = galileo_e1_profile() + provider = SyntheticCodeProvider() + generator = SyntheticSignalGenerator( + profile, provider, fs, + satellites=[SatelliteSignalConfig(8, "E1C", code_delay_chips=12.0, doppler_hz=500.0)], + channel=ChannelModelConfig(add_awgn=False), + ) + samples, _ = generator.generate(int(0.008 * fs)) + config = AcquisitionConfig( + doppler_min_hz=500, + doppler_max_hz=500, + doppler_step_hz=250, + coherent_integration_ms=8, + noncoherent_accumulations=1, + detection_threshold=1.5, + zero_padding_mode="none", + secondary_code_mode="wipeoff", + parabolic_interpolation=False, + ) + result, _ = AcquisitionManager(profile, provider, fs, config).acquire_one(samples, "E1C", 8) + assert result.detected and abs(result.code_phase_chips - 12.0) < 0.3 + + +def test_e1b_bit_transition_hypothesis() -> None: + fs = 4.092e6 + profile = galileo_e1_profile() + provider = SyntheticCodeProvider() + generator = SyntheticSignalGenerator( + profile, provider, fs, + satellites=[SatelliteSignalConfig(9, "E1B", code_delay_chips=20.0, navigation_bits=[1, -1])], + channel=ChannelModelConfig(add_awgn=False), + ) + samples, _ = generator.generate(int(0.008 * fs)) + config = AcquisitionConfig( + doppler_min_hz=0, + doppler_max_hz=0, + doppler_step_hz=250, + coherent_integration_ms=8, + noncoherent_accumulations=1, + detection_threshold=1.5, + zero_padding_mode="none", + bit_transition_mode="hypothesis", + parabolic_interpolation=False, + ) + result, _ = AcquisitionManager(profile, provider, fs, config).acquire_one(samples, "E1B", 9) + assert result.detected and abs(result.code_phase_chips - 20.0) < 0.3 diff --git a/tests/integration/test_signalsim_acquisition.py b/tests/integration/test_signalsim_acquisition.py new file mode 100644 index 0000000..d6a727d --- /dev/null +++ b/tests/integration/test_signalsim_acquisition.py @@ -0,0 +1,25 @@ +import pytest + + +@pytest.mark.signalsim +def test_signalsim_pcps_detects_e1b_and_e1c(signalsim_validation_result) -> None: + report, _, output = signalsim_validation_result + for component in ("E1B", "E1C"): + result = report["acquisition"][component] + assert result["detected"] + assert result["prn"] == 1 + assert abs(result["raw_doppler_error_hz"]) <= 250.0 + assert result["detection_metric"] >= 2.5 + assert result["overflow_count"] == 0 + assert (output / f"acquisition_map_{component.lower()}.png").is_file() + # SignalSim does not export code-delay truth, but the independently acquired + # E1B and E1C components share the same propagation delay. + delta = abs(report["acquisition"]["E1B"]["code_phase_samples"] - report["acquisition"]["E1C"]["code_phase_samples"]) + assert delta < 1.0 + fixed = report["fixed_point_acquisition"] + assert fixed["doppler_bin_agreement"] + assert fixed["code_phase_agreement"] + assert fixed["acquisition_decision_agreement"] + assert fixed["overflow_count"] == 0 + assert fixed["normalized_rms_error"] < 0.005 + assert report["rtl_vector_manifest"]["sample_count"] == 5 * 32736 diff --git a/tests/integration/test_signalsim_code_conventions.py b/tests/integration/test_signalsim_code_conventions.py new file mode 100644 index 0000000..6b16f26 --- /dev/null +++ b/tests/integration/test_signalsim_code_conventions.py @@ -0,0 +1,47 @@ +from __future__ import annotations + +from pathlib import Path + +import numpy as np +import pytest + +from galileo_rx.signal_profiles import galileo_e1_profile +from galileo_rx.signals.signalsim_codes import SignalSimCodeProvider + + +def _checkout() -> Path: + candidates = [Path("signalsim/SignalSim"), Path("../SignalSim"), Path("../signalsim/SignalSim")] + for candidate in candidates: + if (candidate / "src" / "MemoryCode.dat").is_file(): + return candidate.resolve() + pytest.skip("local globsky/SignalSim checkout with src/MemoryCode.dat is unavailable") + + +@pytest.mark.signalsim +def test_signalsim_e1_code_table_unpacking_and_components() -> None: + provider = SignalSimCodeProvider(_checkout()) + profile = galileo_e1_profile() + e1b = provider.primary_code(profile, "E1B", 1) + e1c = provider.primary_code(profile, "E1C", 1) + assert e1b.dtype == np.int8 and e1b.size == 4092 + assert e1c.dtype == np.int8 and e1c.size == 4092 + assert set(e1b.tolist()) == {-1, 1} + assert not np.array_equal(e1b, e1c) + # First table word is 0xf5d71013 and SignalSim reads it MSB first. + np.testing.assert_array_equal(e1b[:8], [-1, -1, -1, -1, 1, -1, 1, -1]) + # Every 32-word storage sector has one discarded padding bit. Chip 1023 + # is therefore word 32 bit 31, not word 31 bit 0. + words = provider._e1_words[0] # executable check of the external table layout + expected_chip_1023 = -1 if (int(words[32]) >> 31) & 1 else 1 + assert int(e1b[1023]) == expected_chip_1023 + + +@pytest.mark.signalsim +def test_signalsim_e1c_secondary_is_25_symbols_lsb_first() -> None: + provider = SignalSimCodeProvider(_checkout()) + secondary = provider.secondary_code(galileo_e1_profile(), "E1C", 1) + assert secondary is not None and secondary.size == 25 + # 0x9b501c positions are addressed least-significant bit first. + expected_bits = np.asarray([(0x9B501C >> index) & 1 for index in range(25)]) + np.testing.assert_array_equal(secondary, np.where(expected_bits == 0, 1, -1)) + assert provider.secondary_code(galileo_e1_profile(), "E1B", 1) is None diff --git a/tests/integration/test_signalsim_e1b_symbols.py b/tests/integration/test_signalsim_e1b_symbols.py new file mode 100644 index 0000000..9fa3ce4 --- /dev/null +++ b/tests/integration/test_signalsim_e1b_symbols.py @@ -0,0 +1,15 @@ +import pytest + + +@pytest.mark.signalsim +def test_signalsim_e1b_raw_symbols_contain_periodic_inav_sync(signalsim_validation_result) -> None: + report, _, _ = signalsim_validation_result + symbols = report["e1b_symbols"] + assert symbols["recovered_symbols"] >= 450 + assert symbols["comparison_scope"] == "known_10_symbol_INAV_sync_words_only" + assert symbols["symbol_errors"] == 0 + assert symbols["frame_or_page_sync"] + indices = [match["symbol_index"] for match in symbols["sync_matches"]] + # I/NAV even and odd parts each begin with sync, 250 symbols (1 s) apart. + assert any(right - left == 250 for left, right in zip(indices, indices[1:])) + assert symbols["fec_decoding"] == "not_implemented" diff --git a/tests/integration/test_signalsim_e1c_secondary_code.py b/tests/integration/test_signalsim_e1c_secondary_code.py new file mode 100644 index 0000000..007765e --- /dev/null +++ b/tests/integration/test_signalsim_e1c_secondary_code.py @@ -0,0 +1,13 @@ +import pytest + + +@pytest.mark.signalsim +def test_signalsim_e1c_secondary_sync_and_coherent_gain(signalsim_validation_result) -> None: + report, _, _ = signalsim_validation_result + sync = report["e1c_secondary"] + assert sync["phase"] == 10 + assert sync["normalized_correlation"] > 0.9 + assert sync["sign_errors"] == 0 + assert sync["compared_periods"] >= 100 + assert sync["wiped_25_period_coherent_gain_db"] > 10.0 + assert sync["wipeoff_gain_improvement_db"] > 10.0 diff --git a/tests/integration/test_signalsim_full_vectors.py b/tests/integration/test_signalsim_full_vectors.py new file mode 100644 index 0000000..94cf9ec --- /dev/null +++ b/tests/integration/test_signalsim_full_vectors.py @@ -0,0 +1,19 @@ +import pytest + + +@pytest.mark.signalsim +def test_signalsim_full_multi_vector_regression(signalsim_validation_result) -> None: + report, passed, _ = signalsim_validation_result + assert passed + assert report["passes"]["full_vector_set"] + vectors = report["full_vectors"] + assert vectors["nominal_cn0_single_prn"]["acquisition"][1]["pass"] + assert vectors["nominal_cn0_single_prn"]["tracking_e1c"]["pass"] + assert vectors["negative_doppler"]["acquisition"][27]["pass"] + negative_tracking = vectors["negative_doppler"]["tracking_e1b"] + assert negative_tracking["pass"] + assert negative_tracking["post_pull_in_reacquisition_epoch_count"] == 0 + assert negative_tracking["estimated_doppler_hz"] < 0.0 + multiple = vectors["multiple_prns"]["acquisition"] + assert set(multiple) == {1, 4, 19, 21, 27} + assert all(result["pass"] for result in multiple.values()) diff --git a/tests/integration/test_signalsim_reader.py b/tests/integration/test_signalsim_reader.py new file mode 100644 index 0000000..afaf068 --- /dev/null +++ b/tests/integration/test_signalsim_reader.py @@ -0,0 +1,53 @@ +from __future__ import annotations + +import numpy as np +import pytest + +from galileo_rx.io.signalsim_reader import SignalSimReader, SignalSimSampleSpec + + +def test_iq8_signed_i_then_q_and_double_precision(tmp_path) -> None: + path = tmp_path / "iq8.bin" + path.write_bytes(bytes([0x80, 0x7F, 0xFF, 0x01, 0x02, 0xFE])) + samples = SignalSimReader(path, SignalSimSampleSpec("IQ8")).read() + assert samples.dtype == np.complex128 + np.testing.assert_array_equal(samples, [-128 + 127j, -1 + 1j, 2 - 2j]) + + +def test_iq16_little_endian_scaling_and_qi_order(tmp_path) -> None: + path = tmp_path / "iq16.bin" + np.asarray([100, -200, -300, 400], dtype=" None: + path = tmp_path / "iq4.bin" + path.write_bytes(bytes([0x17, 0xA9, 0x80])) + np.testing.assert_array_equal(SignalSimReader(path, SignalSimSampleSpec("IQ4")).read(), [1 + 7j, -2 - 1j, 0 + 0j]) + + +def test_iq2_packed_order_and_offset(tmp_path) -> None: + path = tmp_path / "iq2.bin" + # sample 0: I=+1,Q=-1 -> 0xd; sample 1: I=-1,Q=+1 -> 0x7 + path.write_bytes(bytes([0x7D])) + reader = SignalSimReader(path, SignalSimSampleSpec("IQ2")) + np.testing.assert_array_equal(reader.read(), [1 - 1j, -1 + 1j]) + np.testing.assert_array_equal(reader.read(1, 1), [-1 + 1j]) + + +def test_truncation_odd_iq_and_block_streaming(tmp_path) -> None: + path = tmp_path / "odd.bin" + path.write_bytes(b"\x01\x02\x03") + reader = SignalSimReader(path, SignalSimSampleSpec("IQ8")) + with pytest.raises(ValueError, match="truncated"): + _ = reader.sample_count + + complete = tmp_path / "complete.bin" + complete.write_bytes(bytes(range(12))) + reader = SignalSimReader(complete, SignalSimSampleSpec("IQ8"), memory_map=True) + blocks = list(reader.blocks(2, offset_samples=1, count=4)) + assert [block.size for block in blocks] == [2, 2] + np.testing.assert_array_equal(np.concatenate(blocks), [2 + 3j, 4 + 5j, 6 + 7j, 8 + 9j]) + with pytest.raises(EOFError, match="only 1 remain"): + reader.read(2, 5) diff --git a/tests/integration/test_signalsim_tracking.py b/tests/integration/test_signalsim_tracking.py new file mode 100644 index 0000000..6cfbdb1 --- /dev/null +++ b/tests/integration/test_signalsim_tracking.py @@ -0,0 +1,15 @@ +import pytest + + +@pytest.mark.signalsim +def test_signalsim_e1b_and_e1c_tracking_lock(signalsim_validation_result) -> None: + report, _, output = signalsim_validation_result + for component in ("E1B", "E1C"): + result = report["tracking"][component] + assert result["final_state"] == "PLL_TRACK" + assert result["reacquisition_epoch_count"] == 0 + assert abs(result["doppler_error_hz"]) < 10.0 + assert result["doppler_jitter_hz_rms"] < 5.0 + assert result["dll_error_chips_rms"] < 0.15 + assert result["mean_code_lock_metric"] > 1.0 + assert (output / f"tracking_{component.lower()}.csv").is_file() diff --git a/tests/integration/test_tracking.py b/tests/integration/test_tracking.py new file mode 100644 index 0000000..449152d --- /dev/null +++ b/tests/integration/test_tracking.py @@ -0,0 +1,103 @@ +import numpy as np + +from galileo_rx.acquisition.acquisition_manager import AcquisitionManager +from galileo_rx.config import AcquisitionConfig, TrackingConfig +from galileo_rx.signal_profiles import galileo_e1_profile +from galileo_rx.signals.code_provider import SyntheticCodeProvider +from galileo_rx.signals.signal_generator import ChannelModelConfig, SatelliteSignalConfig, SyntheticSignalGenerator +from galileo_rx.tracking.tracking_channel import TrackingChannel +from galileo_rx.tracking.tracking_manager import TrackingManager +from galileo_rx.types import AcquisitionResult, TrackingState + + +def test_acquisition_to_tracking_and_multichannel_manager() -> None: + fs = 4.092e6 + profile = galileo_e1_profile() + provider = SyntheticCodeProvider() + satellites = [ + SatelliteSignalConfig(2, "E1C", code_delay_chips=81.0, doppler_hz=1000.0, carrier_phase_rad=0.1, cn0_db_hz=52.0), + ] + generator = SyntheticSignalGenerator(profile, provider, fs, satellites=satellites, channel=ChannelModelConfig(seed=9)) + samples, _ = generator.generate(int(0.12 * fs)) + acquisition_config = AcquisitionConfig( + doppler_min_hz=0, + doppler_max_hz=2000, + doppler_step_hz=250, + coherent_integration_ms=4, + noncoherent_accumulations=2, + detection_threshold=2.0, + zero_padding_mode="none", + parabolic_interpolation=False, + ) + acquisition, _ = AcquisitionManager(profile, provider, fs, acquisition_config).acquire_one(samples, "E1C", 2) + assert acquisition.detected + tracking_config = TrackingConfig( + integration_ms=4.0, + use_fll_assist=True, + pull_in_duration_ms=20.0, + secondary_code_mode="wipeoff", + loss_of_lock_epochs=20, + ) + manager = TrackingManager(profile, provider, fs, tracking_config) + channel = manager.add_channel(acquisition) + measurements = channel.process(samples[: 25 * channel.integration_samples]) + assert len(measurements) == 25 + assert not measurements[-1].reacquisition_requested + assert measurements[-1].state in {TrackingState.PLL_TRACK, TrackingState.WEAK_SIGNAL} + assert abs(measurements[-1].carrier_frequency_hz - 1000.0) < 100.0 + assert np.median([abs(item.dll_error_chips) for item in measurements[-10:]]) < 0.1 + + +def test_tracking_under_doppler_rate() -> None: + fs = 4.092e6 + profile = galileo_e1_profile() + provider = SyntheticCodeProvider() + generator = SyntheticSignalGenerator( + profile, + provider, + fs, + satellites=[SatelliteSignalConfig(4, "E1B", code_delay_chips=11.0, doppler_hz=-500.0, doppler_rate_hz_s=100.0)], + channel=ChannelModelConfig(add_awgn=False), + ) + samples, _ = generator.generate(int(0.08 * fs)) + acquisition_config = AcquisitionConfig( + doppler_min_hz=-1000, + doppler_max_hz=0, + doppler_step_hz=250, + coherent_integration_ms=4, + noncoherent_accumulations=1, + detection_threshold=1.5, + zero_padding_mode="none", + ) + acquisition, _ = AcquisitionManager(profile, provider, fs, acquisition_config).acquire_one(samples, "E1B", 4) + channel = TrackingChannel(profile, provider, fs, TrackingConfig(pull_in_duration_ms=40.0), acquisition) + measurements = channel.process(samples) + expected_hz = -500.0 + 100.0 * measurements[-1].time_s + assert abs(measurements[-1].carrier_frequency_hz - expected_hz) < 100.0 + + +def test_code_aiding_uses_doppler_not_nonzero_if_center() -> None: + fs = 8.184e6 + profile = galileo_e1_profile() + provider = SyntheticCodeProvider() + if_hz = 2.046e6 + doppler_hz = 1800.0 + acquisition = AcquisitionResult( + detected=True, + prn=1, + component="E1B", + code_phase_samples=0.0, + code_phase_chips=0.0, + doppler_hz=doppler_hz, + carrier_frequency_hz=if_hz + doppler_hz, + peak_power=1.0, + second_peak_power=0.1, + detection_metric=10.0, + estimated_cn0_db_hz=None, + coherent_integration_ms=4.0, + noncoherent_accumulations=1, + ) + channel = TrackingChannel(profile, provider, fs, TrackingConfig(use_fll_assist=False), acquisition) + expected_hz = profile.code_rate_hz * (1.0 + doppler_hz / profile.carrier_frequency_hz) + assert abs(channel.code_nco.frequency_hz - expected_hz) < 1e-9 + assert channel.carrier_center_hz == if_hz diff --git a/tests/regression/test_complete_receiver.py b/tests/regression/test_complete_receiver.py new file mode 100644 index 0000000..ecd4c67 --- /dev/null +++ b/tests/regression/test_complete_receiver.py @@ -0,0 +1,42 @@ +import numpy as np + +from galileo_rx.acquisition.acquisition_manager import AcquisitionManager +from galileo_rx.config import AcquisitionConfig, TrackingConfig +from galileo_rx.fixed_point.fixed_correlator import FixedCorrelator +from galileo_rx.fixed_point.formats import FixedFormat +from galileo_rx.signal_profiles import galileo_e1_profile +from galileo_rx.signals.code_provider import SyntheticCodeProvider +from galileo_rx.signals.signal_generator import ChannelModelConfig, SatelliteSignalConfig, SyntheticSignalGenerator +from galileo_rx.tracking.tracking_channel import TrackingChannel + + +def test_complete_float_and_fixed_prompt_regression() -> None: + fs = 4.092e6 + profile, provider = galileo_e1_profile(), SyntheticCodeProvider() + generator = SyntheticSignalGenerator( + profile, + provider, + fs, + satellites=[SatelliteSignalConfig(11, "E1B", code_delay_chips=24.0, doppler_hz=-750.0, carrier_phase_rad=0.05, cn0_db_hz=50.0)], + channel=ChannelModelConfig(seed=123), + ) + samples, _ = generator.generate(int(0.06 * fs)) + acquisition_config = AcquisitionConfig( + doppler_min_hz=-1500, doppler_max_hz=0, doppler_step_hz=250, + noncoherent_accumulations=2, detection_threshold=2.0, zero_padding_mode="none", parabolic_interpolation=False, + ) + acquisition, _ = AcquisitionManager(profile, provider, fs, acquisition_config).acquire_one(samples, "E1B", 11) + assert acquisition.detected and acquisition.raw_doppler_hz == -750.0 + channel = TrackingChannel(profile, provider, fs, TrackingConfig(pull_in_duration_ms=12.0), acquisition) + measurements = channel.process(samples) + assert len(measurements) == 15 and not measurements[-1].reacquisition_requested + + count = channel.integration_samples + phases = (-acquisition.code_phase_chips + np.arange(count) * profile.code_rate_hz / fs) + code = provider.primary_code(profile, "E1B", 11) + replica = code[np.floor(phases).astype(np.int64) % code.size] * np.where(np.mod(phases, 1.0) < 0.5, 1, -1) + # This vector is intentionally unnormalized AWGN, so use an input format + # with integer headroom rather than the post-AGC Q1.7 default. + fixed_prompt = FixedCorrelator(fs, acquisition.carrier_frequency_hz, sample_format=FixedFormat(12, 4)).correlate_prompt(samples[:count], replica) + float_prompt = np.sum(samples[:count] * np.exp(-2j * np.pi * acquisition.carrier_frequency_hz * np.arange(count) / fs) * replica) + assert abs(fixed_prompt.complex_value - float_prompt) / abs(float_prompt) < 0.03 diff --git a/tests/unit/test_acquisition_metrics.py b/tests/unit/test_acquisition_metrics.py new file mode 100644 index 0000000..850068f --- /dev/null +++ b/tests/unit/test_acquisition_metrics.py @@ -0,0 +1,27 @@ +import numpy as np + +from galileo_rx.acquisition.detector import parabolic_offset +from galileo_rx.acquisition.metrics import calculate_metrics, circular_guard_mask + + +def test_circular_peak_exclusion_wraparound() -> None: + mask = circular_guard_mask(10, 0, 2) + assert not mask[0] and not mask[1] and not mask[2] + assert not mask[8] and not mask[9] + assert mask[3] + + +def test_second_peak_ignores_guard() -> None: + power = np.ones(20) + power[0] = 100 + power[19] = 80 + power[8] = 10 + metrics = calculate_metrics(power, 0, 1) + assert metrics["second_peak"] == 10 + assert metrics["peak_to_second"] == 10 + + +def test_parabolic_peak_interpolation() -> None: + assert parabolic_offset(3.0, 4.0, 3.0) == 0.0 + assert parabolic_offset(2.0, 4.0, 3.0) > 0 + diff --git a/tests/unit/test_acquisition_parallelism.py b/tests/unit/test_acquisition_parallelism.py new file mode 100644 index 0000000..0278676 --- /dev/null +++ b/tests/unit/test_acquisition_parallelism.py @@ -0,0 +1,18 @@ +import numpy as np + +from galileo_rx.config import AcquisitionConfig +from galileo_rx.acquisition.fft_pcps import PcpsAcquisition +from galileo_rx.signal_profiles import galileo_e1_profile +from galileo_rx.signals.code_provider import SyntheticCodeProvider +from galileo_rx.signals.signal_generator import ChannelModelConfig, SatelliteSignalConfig, SyntheticSignalGenerator + + +def test_doppler_batched_matches_sequential() -> None: + fs = 4.092e6 + profile, provider = galileo_e1_profile(), SyntheticCodeProvider() + generator = SyntheticSignalGenerator(profile, provider, fs, satellites=[SatelliteSignalConfig(1, doppler_hz=500)], channel=ChannelModelConfig(add_awgn=False)) + samples, _ = generator.generate(int(0.004 * fs)) + common = dict(doppler_min_hz=0, doppler_max_hz=1000, doppler_step_hz=250, noncoherent_accumulations=1, zero_padding_mode="none") + sequential = PcpsAcquisition(profile, provider, fs, AcquisitionConfig(**common, parallelism="sequential")).search(samples, "E1C", 1) + batched = PcpsAcquisition(profile, provider, fs, AcquisitionConfig(**common, parallelism="batched", doppler_batch_size=3)).search(samples, "E1C", 1) + np.testing.assert_allclose(batched.power, sequential.power, rtol=1e-12, atol=1e-6) diff --git a/tests/unit/test_config.py b/tests/unit/test_config.py new file mode 100644 index 0000000..06fac3f --- /dev/null +++ b/tests/unit/test_config.py @@ -0,0 +1,20 @@ +import pytest + +from galileo_rx.config import ReceiverConfig, load_config + + +def test_default_configuration_is_valid() -> None: + ReceiverConfig().validate() + + +def test_e1c_long_integration_requires_secondary_handling() -> None: + config = ReceiverConfig() + config.acquisition.coherent_integration_ms = 8.0 + with pytest.raises(ValueError, match="secondary-code"): + config.validate() + + +def test_yaml_load() -> None: + config = load_config("configs/e1_default.yaml") + assert config.rf.sampling_frequency_hz == 16.368e6 + diff --git a/tests/unit/test_correlator.py b/tests/unit/test_correlator.py new file mode 100644 index 0000000..1f472c8 --- /dev/null +++ b/tests/unit/test_correlator.py @@ -0,0 +1,42 @@ +import numpy as np + +from galileo_rx.signal_profiles import galileo_e1_profile +from galileo_rx.signals.code_provider import SyntheticCodeProvider +from galileo_rx.signals.signal_generator import ChannelModelConfig, SatelliteSignalConfig, SyntheticSignalGenerator +from galileo_rx.tracking.correlator import CorrelatorBank, SampleStreamCorrelator +from galileo_rx.tracking.nco import CarrierNco, CodeNco + + +def make_bank(fs: float, phase: float) -> CorrelatorBank: + profile = galileo_e1_profile() + return CorrelatorBank( + profile, + SyntheticCodeProvider(), + "E1B", + 1, + CarrierNco(fs, 500.0), + CodeNco(fs, 4092, profile.code_rate_hz, phase), + 0.25, + 0.75, + ) + + +def test_vector_and_sample_stream_correlators_agree() -> None: + fs = 4.5e6 + profile = galileo_e1_profile() + generator = SyntheticSignalGenerator( + profile, + SyntheticCodeProvider(), + fs, + satellites=[SatelliteSignalConfig(1, "E1B", code_delay_chips=3.2, doppler_hz=500.0)], + channel=ChannelModelConfig(add_awgn=False), + ) + samples, _ = generator.generate(500) + vector = make_bank(fs, -3.2).correlate(samples) + stream = SampleStreamCorrelator(make_bank(fs, -3.2)) + for sample in samples: + stream.accept(sample) + cycle = stream.dump() + for tap in ("very_early", "early", "prompt", "late", "very_late"): + assert abs(getattr(vector, tap) - getattr(cycle, tap)) < 1e-8 + diff --git a/tests/unit/test_discriminators.py b/tests/unit/test_discriminators.py new file mode 100644 index 0000000..f2a031f --- /dev/null +++ b/tests/unit/test_discriminators.py @@ -0,0 +1,32 @@ +import numpy as np + +from galileo_rx.tracking.discriminators import ( + dll_noncoherent_power_chips, + dll_normalized_envelope_chips, + fll_bpsk_phase_difference_hz, + fll_phase_difference_hz, + pll_four_quadrant_rad, + pll_two_quadrant_rad, +) + + +def test_pll_discriminator_sign_and_units() -> None: + prompt = np.exp(1j * 0.2) + assert abs(pll_four_quadrant_rad(prompt) - 0.2) < 1e-12 + assert abs(pll_two_quadrant_rad(prompt) - 0.2) < 1e-12 + + +def test_fll_phase_difference_is_hz() -> None: + dt = 0.004 + assert abs(fll_phase_difference_hz(1 + 0j, np.exp(2j * np.pi * 10 * dt), dt) - 10.0) < 1e-12 + + +def test_bpsk_fll_rejects_data_sign_transition() -> None: + dt = 0.004 + prompt = -np.exp(2j * np.pi * 10 * dt) + assert abs(fll_bpsk_phase_difference_hz(1 + 0j, prompt, dt) - 10.0) < 1e-12 + + +def test_dll_sign() -> None: + assert dll_normalized_envelope_chips(2 + 0j, 1 + 0j, 0.25) > 0 + assert dll_noncoherent_power_chips(2 + 0j, 1 + 0j, 0.25) > 0 diff --git a/tests/unit/test_fixed_fft.py b/tests/unit/test_fixed_fft.py new file mode 100644 index 0000000..71555c1 --- /dev/null +++ b/tests/unit/test_fixed_fft.py @@ -0,0 +1,31 @@ +import numpy as np + +from galileo_rx.fixed_point.fixed_fft import FixedRadix2Fft +from galileo_rx.fixed_point.formats import FixedFormat + + +def test_fixed_fft_impulse_and_scaling() -> None: + values = np.zeros(16, dtype=np.complex128) + values[0] = 0.5 + model = FixedRadix2Fft(FixedFormat(20, 17)) + result = model.forward(values) + np.testing.assert_allclose(result.dequantize(), np.fft.fft(values) / values.size, atol=4 * model.data_format.lsb) + assert result.overflow_count == 0 + + +def test_fixed_fft_random_vector_and_inverse() -> None: + rng = np.random.default_rng(91) + values = 0.1 * (rng.standard_normal(32) + 1j * rng.standard_normal(32)) + model = FixedRadix2Fft(FixedFormat(24, 19)) + spectrum = model.forward(values).dequantize() + np.testing.assert_allclose(spectrum, np.fft.fft(values) / values.size, atol=2e-5) + restored = model.inverse(spectrum).dequantize() + # IFFT of the already 1/N-scaled forward spectrum is x/N. + np.testing.assert_allclose(restored, values / values.size, atol=2e-5) + + +def test_fixed_fft_rejects_non_power_of_two() -> None: + import pytest + + with pytest.raises(ValueError, match="power of two"): + FixedRadix2Fft().forward(np.ones(12)) diff --git a/tests/unit/test_fixed_point.py b/tests/unit/test_fixed_point.py new file mode 100644 index 0000000..a17e4ff --- /dev/null +++ b/tests/unit/test_fixed_point.py @@ -0,0 +1,59 @@ +import numpy as np + +from galileo_rx.fixed_point.fixed_correlator import FixedCorrelator +from galileo_rx.fixed_point.fixed_nco import FixedNco +from galileo_rx.fixed_point.fixed_loop_filter import FixedSecondOrderLoopFilter +from galileo_rx.fixed_point.formats import FixedFormat +from galileo_rx.fixed_point.quantizer import Quantizer + + +def test_saturation_and_overflow_counter() -> None: + quantizer = Quantizer(FixedFormat(4, 2), overflow="saturate", rounding="nearest") + result = quantizer.quantize([-3.0, -1.0, 0.0, 1.9, 3.0]) + np.testing.assert_array_equal(result, [-8, -4, 0, 7, 7]) + assert quantizer.statistics.overflow_count == 3 + + +def test_twos_complement_wrap() -> None: + quantizer = Quantizer(FixedFormat(4, 0), overflow="wrap", rounding="truncate") + np.testing.assert_array_equal(quantizer.quantize([8, 9, -9]), [-8, -7, 7]) + + +def test_convergent_rounding_ties_to_even() -> None: + quantizer = Quantizer(FixedFormat(8, 1), rounding="convergent") + np.testing.assert_array_equal(quantizer.quantize([0.25, 0.75, 1.25]), [0, 2, 2]) + + +def test_fixed_nco_phase_continuity_and_frequency_word() -> None: + whole = FixedNco(10e6, 1e6) + split = FixedNco(10e6, 1e6) + c1, s1 = whole.generate(50) + ca, sa = split.generate(17) + cb, sb = split.generate(33) + np.testing.assert_array_equal(c1, np.concatenate([ca, cb])) + np.testing.assert_array_equal(s1, np.concatenate([sa, sb])) + assert abs(whole.frequency_control_word * 10e6 / 2**32 - 1e6) < 10e6 / 2**33 + + +def test_fixed_correlator_close_to_float() -> None: + fs = 1e6 + count = 1000 + time_s = np.arange(count) / fs + replica = np.where(np.arange(count) % 3, 1, -1) + samples = 0.5 * replica * np.exp(2j * np.pi * 125e3 * time_s) + model = FixedCorrelator(fs, 125e3) + result = model.correlate_prompt(samples, replica) + assert abs(result.complex_value.real - 500.0) < 5.0 + assert abs(result.complex_value.imag) < 5.0 + assert result.overflow_count == 0 + + +def test_fixed_loop_filter_tracks_double_reference() -> None: + from galileo_rx.tracking.loop_filters import SecondOrderLoopFilter + + fixed = FixedSecondOrderLoopFilter(2.0, 0.004) + reference = SecondOrderLoopFilter(2.0) + fixed_output = np.asarray([fixed.update(0.02) for _ in range(100)]) + reference_output = np.asarray([reference.update(0.02, 0.004) for _ in range(100)]) + assert np.sqrt(np.mean((fixed_output - reference_output) ** 2)) < 1e-3 + assert fixed.overflow_count == 0 diff --git a/tests/unit/test_frontend.py b/tests/unit/test_frontend.py new file mode 100644 index 0000000..78f3fb7 --- /dev/null +++ b/tests/unit/test_frontend.py @@ -0,0 +1,32 @@ +import numpy as np + +from galileo_rx.config import FrontendConfig, RfConfig +from galileo_rx.frontend.frontend_chain import FrontendChain +from galileo_rx.frontend.mixer import PhaseAccumulatorNco + + +def test_nco_frequency_word_accuracy_and_block_continuity() -> None: + full = PhaseAccumulatorNco(10.0e6, 1.234567e6, phase_width=32) + blocked = PhaseAccumulatorNco(10.0e6, 1.234567e6, phase_width=32) + expected = full.generate(100) + actual = np.concatenate([blocked.generate(37), blocked.generate(63)]) + np.testing.assert_allclose(actual, expected, atol=1e-14) + assert abs(full.actual_frequency_hz - 1.234567e6) <= 10.0e6 / 2**33 + + +def test_real_if_mixer_sign_and_phase_continuity() -> None: + fs = 8.0e6 + rf = RfConfig(sample_format="float64", input_is_real_if=True, sampling_frequency_hz=fs, intermediate_frequency_hz=2.0e6) + chain = FrontendChain(rf, FrontendConfig()) + time_s = np.arange(160) / fs + real_if = np.cos(2 * np.pi * 2.0e6 * time_s) + result = np.concatenate([chain.process(real_if[:61]), chain.process(real_if[61:])]) + # A real mixer produces desired DC plus the unfiltered negative-frequency image. + assert abs(np.mean(result) - 0.5) < 0.02 + + +def test_signed_sample_conversion() -> None: + rf = RfConfig(sample_format="int8", sampling_frequency_hz=4.0e6, intermediate_frequency_hz=0.0, sample_bit_width=8) + chain = FrontendChain(rf, FrontendConfig()) + result = chain.process(np.array([-128, 0, 127], dtype=np.int8)) + np.testing.assert_allclose(result.real, [-1.0, 0.0, 127 / 128]) diff --git a/tests/unit/test_loop_filters.py b/tests/unit/test_loop_filters.py new file mode 100644 index 0000000..a9d16a2 --- /dev/null +++ b/tests/unit/test_loop_filters.py @@ -0,0 +1,23 @@ +import numpy as np + +from galileo_rx.tracking.loop_filters import SecondOrderLoopFilter, ThirdOrderLoopFilter, second_order_natural_frequency_rad_s + + +def test_loop_coefficients_are_physical_and_positive() -> None: + wn = second_order_natural_frequency_rad_s(15.0, 0.707) + loop = SecondOrderLoopFilter(15.0, 0.707) + assert wn > 0 and loop.proportional_gain > 0 and loop.integral_gain > 0 + + +def test_second_order_step_response_is_finite_and_monotonic_initially() -> None: + loop = SecondOrderLoopFilter(2.0) + output = np.asarray([loop.update(0.1, 0.004) for _ in range(100)]) + assert np.all(np.isfinite(output)) + assert output[-1] > output[0] > 0 + + +def test_third_order_constant_error_has_finite_response() -> None: + loop = ThirdOrderLoopFilter(5.0) + output = [loop.update(0.01, 0.004) for _ in range(100)] + assert np.all(np.isfinite(output)) and output[-1] > output[0] + diff --git a/tests/unit/test_rtl_model.py b/tests/unit/test_rtl_model.py new file mode 100644 index 0000000..ca63610 --- /dev/null +++ b/tests/unit/test_rtl_model.py @@ -0,0 +1,16 @@ +from galileo_rx.rtl_model.cycle_model import AcquisitionArchitectureEstimate, TrackingScheduler + + +def test_acquisition_sizing_formulas() -> None: + estimate = AcquisitionArchitectureEstimate(16.368e6, 0.004, 5, 36, 81, 65536, 200e6, 4) + assert estimate.samples_per_coherent_interval == 65472 + assert estimate.fft_operations_per_prn == 810 + assert estimate.sample_buffer_complex_words == 327360 + assert estimate.acquisition_time_s > 0 + + +def test_tracking_scheduler_condition() -> None: + good = TrackingScheduler(16.368e6, 200e6, 8, 2, 2) + bad = TrackingScheduler(16.368e6, 50e6, 16, 1, 2) + assert good.schedulable_without_loss + assert not bad.schedulable_without_loss diff --git a/tests/unit/test_signals.py b/tests/unit/test_signals.py new file mode 100644 index 0000000..79a6ed8 --- /dev/null +++ b/tests/unit/test_signals.py @@ -0,0 +1,58 @@ +import numpy as np + +from galileo_rx.signal_profiles import galileo_e1_profile +from galileo_rx.signals.boc import boc_subcarrier, sample_primary_code +from galileo_rx.signals.code_provider import SyntheticCodeProvider +from galileo_rx.signals.signal_generator import ChannelModelConfig, SatelliteSignalConfig, SyntheticSignalGenerator + + +def test_code_sampling_wrap_and_noninteger_rate() -> None: + code = np.array([1, -1, 1, 1], dtype=np.int8) + sampled, phase = sample_primary_code(code, 11, 2.5, 1.0, 3.5) + assert sampled.shape == (11,) + assert 0 <= phase < 4 + assert set(sampled) == {-1.0, 1.0} + + +def test_boc_phase_continuity_between_blocks() -> None: + whole, _ = boc_subcarrier(31, 7.3e6, 1.023e6, 0.17) + first, phase = boc_subcarrier(13, 7.3e6, 1.023e6, 0.17) + second, _ = boc_subcarrier(18, 7.3e6, 1.023e6, phase) + np.testing.assert_array_equal(whole, np.concatenate([first, second])) + + +def test_synthetic_provider_is_deterministic_and_component_specific() -> None: + profile = galileo_e1_profile() + provider = SyntheticCodeProvider() + a = provider.primary_code(profile, "E1C", 1) + np.testing.assert_array_equal(a, provider.primary_code(profile, "E1C", 1)) + assert not np.array_equal(a, provider.primary_code(profile, "E1B", 1)) + + +def test_generator_streaming_matches_single_block_without_noise() -> None: + profile = galileo_e1_profile() + provider = SyntheticCodeProvider() + satellite = SatelliteSignalConfig(prn=3, doppler_hz=1234.0, code_delay_chips=17.25) + channel = ChannelModelConfig(add_awgn=False) + whole_generator = SyntheticSignalGenerator(profile, provider, 4.5e6, satellites=[satellite], channel=channel) + block_generator = SyntheticSignalGenerator(profile, provider, 4.5e6, satellites=[satellite], channel=channel) + whole, _ = whole_generator.generate(1001) + a, _ = block_generator.generate(317) + b, _ = block_generator.generate(684) + np.testing.assert_allclose(whole, np.concatenate([a, b]), atol=2e-6) + + +def test_real_if_and_truth_metadata() -> None: + profile = galileo_e1_profile() + generator = SyntheticSignalGenerator( + profile, + SyntheticCodeProvider(), + 8.0e6, + 2.0e6, + True, + [SatelliteSignalConfig(prn=7, component="E1B", code_delay_chips=2.5)], + ChannelModelConfig(add_awgn=False), + ) + samples, truth = generator.generate(80) + assert samples.dtype == np.float64 and not np.iscomplexobj(samples) + assert truth.satellites[0].initial_code_delay_samples == 2.5 * 8.0e6 / 1.023e6 diff --git a/tests/unit/test_symbol_sync.py b/tests/unit/test_symbol_sync.py new file mode 100644 index 0000000..8c51903 --- /dev/null +++ b/tests/unit/test_symbol_sync.py @@ -0,0 +1,31 @@ +import numpy as np + +from galileo_rx.tracking.symbol_sync import ( + compare_symbol_streams, + recover_bpsk_symbols, + synchronize_secondary_code, +) + + +def test_raw_symbol_recovery_and_bounded_sign_alignment() -> None: + truth = np.asarray([1, -1, -1, 1, 1, -1], dtype=np.int8) + prompts = np.repeat(-truth, 2).astype(np.complex128) * (10 + 1j) + recovered, values = recover_bpsk_symbols(prompts, 2) + assert values.dtype == np.float64 + result = compare_symbol_streams(recovered, truth, max_alignment_offset_symbols=1) + assert result.sign_inverted + assert result.symbol_errors == 0 + + +def test_joint_secondary_phase_and_frequency_sync() -> None: + secondary = np.asarray([1, 1, -1, 1, -1], dtype=np.int8) + phase = 3 + residual_hz = 17.0 + dt = 0.004 + epochs = np.arange(40) + prompts = secondary[(phase + epochs) % secondary.size] * np.exp(1j * (0.7 + 2 * np.pi * residual_hz * dt * epochs)) + result = synchronize_secondary_code(prompts, secondary, dt, residual_frequency_min_hz=-30, residual_frequency_max_hz=30) + assert result.phase == phase + assert result.residual_frequency_hz == residual_hz + assert result.normalized_correlation > 0.999999 + assert result.sign_errors == 0 diff --git a/tests/unit/test_vector_export.py b/tests/unit/test_vector_export.py new file mode 100644 index 0000000..b90d718 --- /dev/null +++ b/tests/unit/test_vector_export.py @@ -0,0 +1,26 @@ +from pathlib import Path + +import numpy as np + +from galileo_rx.fixed_point.formats import FixedFormat +from galileo_rx.rtl_model.vector_export import export_complex_hex, export_timed_complex_hex + + +def test_exported_vector_is_twos_complement(tmp_path: Path) -> None: + manifest = export_complex_hex(tmp_path, "samples", np.asarray([-1 - 0.5j, 0.5 + 0.25j]), FixedFormat(8, 7)) + assert (tmp_path / "samples_i.hex").read_text().splitlines() == ["80", "40"] + assert (tmp_path / "samples_q.hex").read_text().splitlines() == ["c0", "20"] + assert manifest["sample_count"] == 2 + + +def test_exported_timestamps_and_register_metadata(tmp_path: Path) -> None: + manifest = export_timed_complex_hex( + tmp_path, + "timed", + np.asarray([1 + 2j, 3 + 4j]), + FixedFormat(8, 0), + 8.0, + {"ACQ_COHERENT_SAMPLES": 2}, + ) + assert (tmp_path / "timed_timestamps.csv").read_text().splitlines() == ["sample_index,time_s", "0,0", "1,0.125"] + assert manifest["register_values"]["ACQ_COHERENT_SAMPLES"] == 2 diff --git a/tools/build_signalsim.sh b/tools/build_signalsim.sh new file mode 100755 index 0000000..559709b --- /dev/null +++ b/tools/build_signalsim.sh @@ -0,0 +1,50 @@ +#!/usr/bin/env bash +set -euo pipefail + +if [[ $# -lt 1 || $# -gt 2 ]]; then + echo "usage: $0 /path/to/SignalSim [build-directory]" >&2 + exit 2 +fi + +signalsim_source=$(realpath "$1") +project_root=$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd) +build_directory=${2:-"${project_root}/build/signalsim"} + +if [[ ! -f "${signalsim_source}/IFdataGen/CMakeLists.txt" ]]; then + echo "error: ${signalsim_source} is not a SignalSim tree with IFdataGen/CMakeLists.txt" >&2 + exit 3 +fi + +for dependency in cmake c++; do + if ! command -v "${dependency}" >/dev/null 2>&1; then + echo "error: required build dependency '${dependency}' is missing" >&2 + exit 4 + fi +done + +generator=() +if command -v ninja >/dev/null 2>&1; then + generator=(-G Ninja) +fi + +echo "SignalSim source: ${signalsim_source}" +echo "Build directory: ${build_directory}" +echo "CMake: $(cmake --version | head -n 1)" +echo "Compiler: $(c++ --version | head -n 1)" +if command -v ninja >/dev/null 2>&1; then + echo "Ninja: $(ninja --version)" +else + echo "Ninja: unavailable; using CMake default generator" +fi + +cmake -S "${signalsim_source}/IFdataGen" -B "${build_directory}" "${generator[@]}" \ + -DCMAKE_BUILD_TYPE=Release -DUSE_NATIVE_OPT=OFF +cmake --build "${build_directory}" --parallel + +executable="${build_directory}/IFdataGen" +if [[ ! -x "${executable}" ]]; then + echo "error: build completed without expected executable ${executable}" >&2 + exit 5 +fi + +echo "SIGNALSIM_EXECUTABLE=${executable}" diff --git a/tools/generate_signalsim_vectors.py b/tools/generate_signalsim_vectors.py new file mode 100755 index 0000000..ae54955 --- /dev/null +++ b/tools/generate_signalsim_vectors.py @@ -0,0 +1,97 @@ +#!/usr/bin/env python3 +"""Regenerate deterministic SignalSim vectors without modifying SignalSim.""" + +from __future__ import annotations + +import argparse +import hashlib +import json +from pathlib import Path +import subprocess +import sys +from copy import deepcopy + +import yaml + + +def sha256(path: Path) -> str: + digest = hashlib.sha256() + with path.open("rb") as stream: + for block in iter(lambda: stream.read(1024 * 1024), b""): + digest.update(block) + return digest.hexdigest() + + +def main() -> int: + parser = argparse.ArgumentParser() + parser.add_argument("--signalsim-path", required=True, type=Path) + parser.add_argument("--executable", type=Path) + vector_names = ["high_cn0_single_prn", "nominal_cn0_single_prn", "negative_doppler", "multiple_prns"] + parser.add_argument("--vector", choices=[*vector_names, "all"], default="high_cn0_single_prn") + parser.add_argument("--project-root", type=Path, default=Path(__file__).resolve().parents[1]) + args = parser.parse_args() + source = args.signalsim_path.resolve() + root = args.project_root.resolve() + executable = args.executable.resolve() if args.executable else root / "build" / "signalsim" / "IFdataGen" + if not executable.is_file(): + subprocess.run([str(root / "tools" / "build_signalsim.sh"), str(source)], check=True) + template_path = root / "verification" / "vectors" / "signalsim" / "high_cn0_single_prn" / "config.json" + template = json.loads(template_path.read_text(encoding="utf-8")) + rinex = source / "EphData" / "BRDC00IGS_R_20211700000_01D_MN.rnx" + if not rinex.is_file(): + raise FileNotFoundError(f"bundled RINEX input is missing: {rinex}") + commit = subprocess.check_output(["git", "-C", str(source), "rev-parse", "HEAD"], text=True).strip() + variants = { + "high_cn0_single_prn": {"duration_s": 2.2, "cn0_db_hz": 55.0, "visible_prns": [1], "expected_doppler_hz": {1: 1828.0}}, + "nominal_cn0_single_prn": {"duration_s": 0.6, "cn0_db_hz": 50.0, "visible_prns": [1], "expected_doppler_hz": {1: 1828.0}}, + "negative_doppler": {"duration_s": 2.2, "cn0_db_hz": 55.0, "visible_prns": [27], "expected_doppler_hz": {27: -2637.0}}, + "multiple_prns": {"duration_s": 0.12, "cn0_db_hz": 55.0, "visible_prns": [1, 4, 19, 21, 27], "expected_doppler_hz": {1: 1828.0, 4: 2171.0, 19: -367.0, 21: -712.0, 27: -2637.0}}, + } + selected = vector_names if args.vector == "all" else [args.vector] + for vector_name in selected: + parameters = variants[vector_name] + vector_dir = root / "verification" / "vectors" / "signalsim" / vector_name + vector_dir.mkdir(parents=True, exist_ok=True) + config = deepcopy(template) + config["description"] = f"SignalSim validation vector: {vector_name}" + config["ephemeris"]["name"] = str(rinex) + config["trajectory"]["trajectoryList"][0]["time"] = parameters["duration_s"] + config["power"]["initPower"]["value"] = parameters["cn0_db_hz"] + visible = set(parameters["visible_prns"]) + config["output"]["config"]["maskOut"] = [{"system": "Galileo", "svid": [prn for prn in range(1, 37) if prn not in visible]}] + output_name = f"{vector_name}_iq8.bin" + config["output"]["name"] = output_name + generated_config = vector_dir / "generated_config.json" + generated_config.write_text(json.dumps(config, indent=2) + "\n", encoding="utf-8") + output = vector_dir / output_name + command = [str(executable), "-c", str(generated_config), "-o", str(output), "-t", "-st"] + completed = subprocess.run(command, check=True, text=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) + (vector_dir / "generation.log").write_text(completed.stdout, encoding="utf-8") + metadata = { + "name": vector_name, + "signalsim_path": str(source), + "signalsim_commit": commit, + "command": command, + "output": str(output.relative_to(root)), + "size_bytes": output.stat().st_size, + "sha256": sha256(output), + "complex_sample_count": output.stat().st_size // 2, + "sampling_frequency_hz": 8_184_000.0, + "intermediate_frequency_hz": 2_046_000.0, + "sample_format": "IQ8_interleaved_signed_I_then_Q", + "duration_s": parameters["duration_s"], + "prns": parameters["visible_prns"], + "components": ["E1B", "E1C"], + "expected_doppler_hz": parameters["expected_doppler_hz"], + "expected_code_delay": None, + "navigation_truth": "INavBit generated from bundled RINEX; no sample-side truth file", + "secondary_truth": "PilotBit.cpp SecondaryCodeE1, phase must be synchronized", + } + (vector_dir / "metadata.yaml").write_text(yaml.safe_dump(metadata, sort_keys=False), encoding="utf-8") + print(completed.stdout, end="") + print(yaml.safe_dump(metadata, sort_keys=False), end="") + return 0 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/verification/vectors/signalsim/high_cn0_single_prn/config.json b/verification/vectors/signalsim/high_cn0_single_prn/config.json new file mode 100644 index 0000000..65a8398 --- /dev/null +++ b/verification/vectors/signalsim/high_cn0_single_prn/config.json @@ -0,0 +1,68 @@ +{ + "version": 1.0, + "description": "SignalSim Galileo E1 combined E1B/E1C, single visible PRN 1, high C/N0", + "time": { + "type": "UTC", + "year": 2021, + "month": 6, + "day": 19, + "hour": 10, + "minute": 5, + "second": 30 + }, + "trajectory": { + "name": "static single-PRN integration baseline", + "initPosition": { + "type": "LLA", + "format": "d", + "longitude": -121.915773, + "latitude": 37.352721, + "altitude": 20 + }, + "initVelocity": { + "type": "SCU", + "speed": 0, + "course": 0 + }, + "trajectoryList": [ + { + "type": "Const", + "time": 2.2 + } + ] + }, + "ephemeris": { + "type": "RINEX", + "name": "/home/onur/Desktop/galileo/signalsim/SignalSim/EphData/BRDC00IGS_R_20211700000_01D_MN.rnx" + }, + "output": { + "type": "IFdata", + "format": "IQ8", + "sampleFreq": 8.184, + "centerFreq": 1573.374, + "name": "high_cn0_single_prn_iq8.bin", + "config": { + "elevationMask": 3, + "maskOut": [ + { + "system": "Galileo", + "svid": [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36] + } + ] + }, + "systemSelect": [ + {"system": "GPS", "signal": "L1CA", "enable": false}, + {"system": "BDS", "signal": "B1C", "enable": false}, + {"system": "Galileo", "signal": "E1", "enable": true}, + {"system": "GLONASS", "signal": "G1", "enable": false} + ] + }, + "power": { + "noiseFloor": -172, + "initPower": { + "unit": "dBHz", + "value": 55 + }, + "elevationAdjust": false + } +} diff --git a/verification/vectors/signalsim/high_cn0_single_prn/high_cn0_single_prn_iq8.bin.tag b/verification/vectors/signalsim/high_cn0_single_prn/high_cn0_single_prn_iq8.bin.tag new file mode 100644 index 0000000..1af0745 --- /dev/null +++ b/verification/vectors/signalsim/high_cn0_single_prn/high_cn0_single_prn_iq8.bin.tag @@ -0,0 +1,8 @@ +PROG = IFDataGen +TIME = 2026/07/30 19:48:58.623 +FMT = INT8X2 +F_S = 8.184000 +F_LO = 1573.374000 +IQ = 1 +BITS = 8 +SCALE = 1.0 diff --git a/verification/vectors/signalsim/high_cn0_single_prn/metadata.yaml b/verification/vectors/signalsim/high_cn0_single_prn/metadata.yaml new file mode 100644 index 0000000..bebed8a --- /dev/null +++ b/verification/vectors/signalsim/high_cn0_single_prn/metadata.yaml @@ -0,0 +1,29 @@ +name: high_cn0_single_prn +signalsim_path: /home/onur/Desktop/galileo/signalsim/SignalSim +signalsim_remote: https://github.com/globsky/SignalSim +signalsim_commit: 80b262113e77c4482ca9f5cbfef9bcada402ed28 +command: + - /home/onur/Desktop/galileo/build/signalsim/IFdataGen + - -c + - /home/onur/Desktop/galileo/verification/vectors/signalsim/high_cn0_single_prn/config.json + - -o + - /home/onur/Desktop/galileo/verification/vectors/signalsim/high_cn0_single_prn/high_cn0_single_prn_iq8.bin + - -t + - -st +output: verification/vectors/signalsim/high_cn0_single_prn/high_cn0_single_prn_iq8.bin +size_bytes: 36009600 +complex_sample_count: 18004800 +sha256: 3e72a5ad2d35ee68273b77587a66847b0fb328650b39c9e39272f0dc54e39e3c +sampling_frequency_hz: 8184000.0 +center_frequency_hz: 1573374000.0 +intermediate_frequency_hz: 2046000.0 +sample_format: IQ8_interleaved_signed_I_then_Q +duration_s: 2.2 +prn: 1 +components: [E1B, E1C] +expected_doppler_hz: 1828.0 +expected_doppler_source: SignalSim_validate_only_summary_rounded_to_integer_hz +expected_code_delay: unavailable_from_SignalSim +navigation_source: INavBit_generated_from_bundled_RINEX +secondary_source: PilotBit.cpp_SecondaryCodeE1 +sample_file_committed: false diff --git a/verification/vectors/signalsim/manifest.yaml b/verification/vectors/signalsim/manifest.yaml new file mode 100644 index 0000000..aee1b1a --- /dev/null +++ b/verification/vectors/signalsim/manifest.yaml @@ -0,0 +1,58 @@ +simulator: + name: SignalSim + remote: https://github.com/globsky/SignalSim + commit: 80b262113e77c4482ca9f5cbfef9bcada402ed28 + source_path_detected: /home/onur/Desktop/galileo/signalsim/SignalSim + +vectors: + high_cn0_single_prn: + status: generated_and_validated + config: high_cn0_single_prn/config.json + output: high_cn0_single_prn/high_cn0_single_prn_iq8.bin + representation: complex_iq + sample_format: interleaved_twos_complement_int8_iq + sample_rate_hz: 8184000 + center_frequency_hz: 1573374000 + galileo_e1_if_hz: 2046000 + duration_s: 2.2 + prn: 1 + components: [E1B, E1C] + cn0_db_hz: 55 + expected_doppler_source: SignalSim generation log + expected_doppler_hz: 1828 + expected_code_delay: unavailable_from_SignalSim_cli + navigation_source: SignalSim INavBit generated from bundled RINEX ephemeris + secondary_code_source: SignalSim PilotBit.cpp SecondaryCodeE1 + generated_file_committed: false + output_size_bytes: 36009600 + complex_sample_count: 18004800 + sha256: 3e72a5ad2d35ee68273b77587a66847b0fb328650b39c9e39272f0dc54e39e3c + python_validation: pass + + nominal_cn0_single_prn: + status: generated_acquisition_and_e1c_tracking_pass + config: nominal_cn0_single_prn/generated_config.json + output: nominal_cn0_single_prn/nominal_cn0_single_prn_iq8.bin + duration_s: 0.6 + prn: 1 + expected_doppler_hz: 1828 + sha256: ffbcb2cfedc6142ca3064514b4d2c10045abf0221462996a5fc10a49213bf88e + positive_doppler: {status: covered_by_high_cn0_geometry_if_positive} + negative_doppler: + status: generated_acquisition_and_tracking_pass + config: negative_doppler/generated_config.json + output: negative_doppler/negative_doppler_iq8.bin + duration_s: 2.2 + prn: 27 + expected_doppler_hz: -2637 + sha256: b17d2d1f180122041b2688f9a8b1facfc73ab99b521187908c88450d65ddc1ad + multiple_prns: + status: generated_acquisition_pass_all_five + config: multiple_prns/generated_config.json + output: multiple_prns/multiple_prns_iq8.bin + duration_s: 0.12 + prns: [1, 4, 19, 21, 27] + sha256: 7c6f60e63e2574a4f79034d5a6e16ae954de49502df25b0b532090517ed434d8 + e1b_only: {status: blocked_SignalSim_E1_is_combined} + e1c_only: {status: blocked_SignalSim_E1_is_combined} + e1b_e1c_combined: {status: alias_of_high_cn0_single_prn} diff --git a/verification/vectors/signalsim/multiple_prns/generated_config.json b/verification/vectors/signalsim/multiple_prns/generated_config.json new file mode 100644 index 0000000..1bef90a --- /dev/null +++ b/verification/vectors/signalsim/multiple_prns/generated_config.json @@ -0,0 +1,116 @@ +{ + "version": 1.0, + "description": "SignalSim validation vector: multiple_prns", + "time": { + "type": "UTC", + "year": 2021, + "month": 6, + "day": 19, + "hour": 10, + "minute": 5, + "second": 30 + }, + "trajectory": { + "name": "static single-PRN integration baseline", + "initPosition": { + "type": "LLA", + "format": "d", + "longitude": -121.915773, + "latitude": 37.352721, + "altitude": 20 + }, + "initVelocity": { + "type": "SCU", + "speed": 0, + "course": 0 + }, + "trajectoryList": [ + { + "type": "Const", + "time": 0.12 + } + ] + }, + "ephemeris": { + "type": "RINEX", + "name": "/home/onur/Desktop/galileo/signalsim/SignalSim/EphData/BRDC00IGS_R_20211700000_01D_MN.rnx" + }, + "output": { + "type": "IFdata", + "format": "IQ8", + "sampleFreq": 8.184, + "centerFreq": 1573.374, + "name": "multiple_prns_iq8.bin", + "config": { + "elevationMask": 3, + "maskOut": [ + { + "system": "Galileo", + "svid": [ + 2, + 3, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 20, + 22, + 23, + 24, + 25, + 26, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36 + ] + } + ] + }, + "systemSelect": [ + { + "system": "GPS", + "signal": "L1CA", + "enable": false + }, + { + "system": "BDS", + "signal": "B1C", + "enable": false + }, + { + "system": "Galileo", + "signal": "E1", + "enable": true + }, + { + "system": "GLONASS", + "signal": "G1", + "enable": false + } + ] + }, + "power": { + "noiseFloor": -172, + "initPower": { + "unit": "dBHz", + "value": 55.0 + }, + "elevationAdjust": false + } +} diff --git a/verification/vectors/signalsim/multiple_prns/generation.log b/verification/vectors/signalsim/multiple_prns/generation.log new file mode 100644 index 0000000..bc459a7 --- /dev/null +++ b/verification/vectors/signalsim/multiple_prns/generation.log @@ -0,0 +1,62 @@ + +================================================================================ + IF SIGNAL GENERATION +================================================================================ +[INFO] Loading JSON file: /home/onur/Desktop/galileo/verification/vectors/signalsim/multiple_prns/generated_config.json +[INFO] JSON file read successfully: /home/onur/Desktop/galileo/verification/vectors/signalsim/multiple_prns/generated_config.json +[INFO] Using output file from command line: /home/onur/Desktop/galileo/verification/vectors/signalsim/multiple_prns/multiple_prns_iq8.bin +[INFO] Opening output file: /home/onur/Desktop/galileo/verification/vectors/signalsim/multiple_prns/multiple_prns_iq8.bin +[INFO] Output file opened successfully. +[INFO] Creating tag file: /home/onur/Desktop/galileo/verification/vectors/signalsim/multiple_prns/multiple_prns_iq8.bin.tag +[INFO] Tag file created: /home/onur/Desktop/galileo/verification/vectors/signalsim/multiple_prns/multiple_prns_iq8.bin.tag +[INFO] OpenMP configured for SERIAL execution (1 thread) +[INFO] Generating IF data with following satellite signals: + +[INFO] Enabled Signals: + GAL : [ E1 ] + +Signals Summary Table: ++---------------+-------------+--------------+------------------------------+ +| Constellation | Visible SVs | Signals / SV | Total Signals / Visible SVs | ++---------------+-------------+--------------+------------------------------+ +| GPS | 0 | 0 | 0 | +| BeiDou | 0 | 0 | 0 | +| Galileo | 5 | 1 | 5 | +| GLONASS | 0 | 0 | 0 | ++---------------+-------------+--------------+------------------------------+ +Total Visible SVs = 5, Total channels = 5 + +Galileo E1 with IF +2046kHz: ++----+--------------+----+--------------+----+--------------+----+--------------+ +| SV | Doppler (Hz) | SV | Doppler (Hz) | SV | Doppler (Hz) | SV | Doppler (Hz) | ++----+--------------+----+--------------+----+--------------+----+--------------+ +| 01 | +1828 | 04 | +2171 | 19 | -367 | 21 | -712 | +| 27 | -2637 | | | | | | | ++----+--------------+----+--------------+----+--------------+----+--------------+ + +Total channels: 5 + +[INFO] Signal Duration: 0.12 s +[INFO] Signal Size: 1.87 MB +[INFO] Signal Data format: IQ8 +[INFO] Signal Center freq: 1573.3740 MHz +[INFO] Signal Sample rate: 8.1840 MHz + +[INFO] Starting signal generation loop... + +[==========> 20.8% ] 25/120 ms | 0.39/1.87 MB @ 30.02 MB/s | ETA: 00s +[====================> 41.7% ] 50/120 ms | 0.78/1.87 MB @ 30.02 MB/s | ETA: 00s +[======================62.5%====> ] 75/120 ms | 1.17/1.87 MB @ 30.81 MB/s | ETA: 00s +[======================83.3%==============> ] 100/120 ms | 1.56/1.87 MB @ 30.61 MB/s | ETA: 00s +[======================100.0%======================] 120/120 ms | 1.87/1.87 MB | COMPLETED + +[INFO] IF Signal generation completed! +------------------------------------------------------------------ +[INFO] Total samples: 1947792 +[INFO] Clipped samples: 1 (0.0001%) +[INFO] Final AGC gain: 1.000 +[INFO] Total time taken: 0.06 s +[INFO] Data generated: 1.86 MB +[INFO] Average rate: 30.96 MB/s +------------------------------------------------------------------ + diff --git a/verification/vectors/signalsim/multiple_prns/metadata.yaml b/verification/vectors/signalsim/multiple_prns/metadata.yaml new file mode 100644 index 0000000..bbf9434 --- /dev/null +++ b/verification/vectors/signalsim/multiple_prns/metadata.yaml @@ -0,0 +1,37 @@ +name: multiple_prns +signalsim_path: /home/onur/Desktop/galileo/signalsim/SignalSim +signalsim_commit: 80b262113e77c4482ca9f5cbfef9bcada402ed28 +command: +- /home/onur/Desktop/galileo/build/signalsim/IFdataGen +- -c +- /home/onur/Desktop/galileo/verification/vectors/signalsim/multiple_prns/generated_config.json +- -o +- /home/onur/Desktop/galileo/verification/vectors/signalsim/multiple_prns/multiple_prns_iq8.bin +- -t +- -st +output: verification/vectors/signalsim/multiple_prns/multiple_prns_iq8.bin +size_bytes: 1947792 +sha256: 7c6f60e63e2574a4f79034d5a6e16ae954de49502df25b0b532090517ed434d8 +complex_sample_count: 973896 +sampling_frequency_hz: 8184000.0 +intermediate_frequency_hz: 2046000.0 +sample_format: IQ8_interleaved_signed_I_then_Q +duration_s: 0.12 +prns: +- 1 +- 4 +- 19 +- 21 +- 27 +components: +- E1B +- E1C +expected_doppler_hz: + 1: 1828.0 + 4: 2171.0 + 19: -367.0 + 21: -712.0 + 27: -2637.0 +expected_code_delay: null +navigation_truth: INavBit generated from bundled RINEX; no sample-side truth file +secondary_truth: PilotBit.cpp SecondaryCodeE1, phase must be synchronized diff --git a/verification/vectors/signalsim/multiple_prns/multiple_prns_iq8.bin.tag b/verification/vectors/signalsim/multiple_prns/multiple_prns_iq8.bin.tag new file mode 100644 index 0000000..7e0846c --- /dev/null +++ b/verification/vectors/signalsim/multiple_prns/multiple_prns_iq8.bin.tag @@ -0,0 +1,8 @@ +PROG = IFDataGen +TIME = 2026/07/30 20:17:06.965 +FMT = INT8X2 +F_S = 8.184000 +F_LO = 1573.374000 +IQ = 1 +BITS = 8 +SCALE = 1.0 diff --git a/verification/vectors/signalsim/negative_doppler/generated_config.json b/verification/vectors/signalsim/negative_doppler/generated_config.json new file mode 100644 index 0000000..7953dd6 --- /dev/null +++ b/verification/vectors/signalsim/negative_doppler/generated_config.json @@ -0,0 +1,120 @@ +{ + "version": 1.0, + "description": "SignalSim validation vector: negative_doppler", + "time": { + "type": "UTC", + "year": 2021, + "month": 6, + "day": 19, + "hour": 10, + "minute": 5, + "second": 30 + }, + "trajectory": { + "name": "static single-PRN integration baseline", + "initPosition": { + "type": "LLA", + "format": "d", + "longitude": -121.915773, + "latitude": 37.352721, + "altitude": 20 + }, + "initVelocity": { + "type": "SCU", + "speed": 0, + "course": 0 + }, + "trajectoryList": [ + { + "type": "Const", + "time": 2.2 + } + ] + }, + "ephemeris": { + "type": "RINEX", + "name": "/home/onur/Desktop/galileo/signalsim/SignalSim/EphData/BRDC00IGS_R_20211700000_01D_MN.rnx" + }, + "output": { + "type": "IFdata", + "format": "IQ8", + "sampleFreq": 8.184, + "centerFreq": 1573.374, + "name": "negative_doppler_iq8.bin", + "config": { + "elevationMask": 3, + "maskOut": [ + { + "system": "Galileo", + "svid": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36 + ] + } + ] + }, + "systemSelect": [ + { + "system": "GPS", + "signal": "L1CA", + "enable": false + }, + { + "system": "BDS", + "signal": "B1C", + "enable": false + }, + { + "system": "Galileo", + "signal": "E1", + "enable": true + }, + { + "system": "GLONASS", + "signal": "G1", + "enable": false + } + ] + }, + "power": { + "noiseFloor": -172, + "initPower": { + "unit": "dBHz", + "value": 55.0 + }, + "elevationAdjust": false + } +} diff --git a/verification/vectors/signalsim/negative_doppler/generation.log b/verification/vectors/signalsim/negative_doppler/generation.log new file mode 100644 index 0000000..bc88048 --- /dev/null +++ b/verification/vectors/signalsim/negative_doppler/generation.log @@ -0,0 +1,145 @@ + +================================================================================ + IF SIGNAL GENERATION +================================================================================ +[INFO] Loading JSON file: /home/onur/Desktop/galileo/verification/vectors/signalsim/negative_doppler/generated_config.json +[INFO] JSON file read successfully: /home/onur/Desktop/galileo/verification/vectors/signalsim/negative_doppler/generated_config.json +[INFO] Using output file from command line: /home/onur/Desktop/galileo/verification/vectors/signalsim/negative_doppler/negative_doppler_iq8.bin +[INFO] Opening output file: /home/onur/Desktop/galileo/verification/vectors/signalsim/negative_doppler/negative_doppler_iq8.bin +[INFO] Output file opened successfully. +[INFO] Creating tag file: /home/onur/Desktop/galileo/verification/vectors/signalsim/negative_doppler/negative_doppler_iq8.bin.tag +[INFO] Tag file created: /home/onur/Desktop/galileo/verification/vectors/signalsim/negative_doppler/negative_doppler_iq8.bin.tag +[INFO] OpenMP configured for SERIAL execution (1 thread) +[INFO] Generating IF data with following satellite signals: + +[INFO] Enabled Signals: + GAL : [ E1 ] + +Signals Summary Table: ++---------------+-------------+--------------+------------------------------+ +| Constellation | Visible SVs | Signals / SV | Total Signals / Visible SVs | ++---------------+-------------+--------------+------------------------------+ +| GPS | 0 | 0 | 0 | +| BeiDou | 0 | 0 | 0 | +| Galileo | 1 | 1 | 1 | +| GLONASS | 0 | 0 | 0 | ++---------------+-------------+--------------+------------------------------+ +Total Visible SVs = 1, Total channels = 1 + +Galileo E1 with IF +2046kHz: ++----+--------------+----+--------------+----+--------------+----+--------------+ +| SV | Doppler (Hz) | SV | Doppler (Hz) | SV | Doppler (Hz) | SV | Doppler (Hz) | ++----+--------------+----+--------------+----+--------------+----+--------------+ +| 27 | -2637 | | | | | | | ++----+--------------+----+--------------+----+--------------+----+--------------+ + +Total channels: 1 + +[INFO] Signal Duration: 2.20 s +[INFO] Signal Size: 34.34 MB +[INFO] Signal Data format: IQ8 +[INFO] Signal Center freq: 1573.3740 MHz +[INFO] Signal Sample rate: 8.1840 MHz + +[INFO] Starting signal generation loop... + +[> 1.1% ] 25/2200 ms | 0.39/34.34 MB @ 48.78 MB/s | ETA: 00s +[=> 2.3% ] 50/2200 ms | 0.78/34.34 MB @ 48.78 MB/s | ETA: 00s +[=> 3.4% ] 75/2200 ms | 1.17/34.34 MB @ 46.83 MB/s | ETA: 00s +[==> 4.5% ] 100/2200 ms | 1.56/34.34 MB @ 47.30 MB/s | ETA: 00s +[==> 5.7% ] 125/2200 ms | 1.95/34.34 MB @ 47.59 MB/s | ETA: 00s +[===> 6.8% ] 150/2200 ms | 2.34/34.34 MB @ 47.78 MB/s | ETA: 00s +[===> 8.0% ] 175/2200 ms | 2.73/34.34 MB @ 48.78 MB/s | ETA: 00s +[====> 9.1% ] 200/2200 ms | 3.12/34.34 MB @ 49.55 MB/s | ETA: 00s +[=====> 10.2% ] 225/2200 ms | 3.51/34.34 MB @ 49.47 MB/s | ETA: 00s +[=====> 11.4% ] 250/2200 ms | 3.90/34.34 MB @ 50.03 MB/s | ETA: 00s +[======> 12.5% ] 275/2200 ms | 4.29/34.34 MB @ 50.50 MB/s | ETA: 00s +[======> 13.6% ] 300/2200 ms | 4.68/34.34 MB @ 50.35 MB/s | ETA: 00s +[=======> 14.8% ] 325/2200 ms | 5.07/34.34 MB @ 50.73 MB/s | ETA: 00s +[=======> 15.9% ] 350/2200 ms | 5.46/34.34 MB @ 50.12 MB/s | ETA: 00s +[========> 17.0% ] 375/2200 ms | 5.85/34.34 MB @ 50.46 MB/s | ETA: 00s +[=========> 18.2% ] 400/2200 ms | 6.24/34.34 MB @ 50.76 MB/s | ETA: 00s +[=========> 19.3% ] 425/2200 ms | 6.63/34.34 MB @ 51.03 MB/s | ETA: 00s +[==========> 20.5% ] 450/2200 ms | 7.02/34.34 MB @ 50.90 MB/s | ETA: 00s +[==========> 21.6% ] 475/2200 ms | 7.41/34.34 MB @ 51.14 MB/s | ETA: 00s +[===========> 22.7% ] 500/2200 ms | 7.80/34.34 MB @ 51.35 MB/s | ETA: 00s +[===========> 23.9% ] 525/2200 ms | 8.20/34.34 MB @ 51.22 MB/s | ETA: 00s +[============> 25.0% ] 550/2200 ms | 8.59/34.34 MB @ 51.41 MB/s | ETA: 00s +[=============> 26.1% ] 575/2200 ms | 8.98/34.34 MB @ 51.58 MB/s | ETA: 00s +[=============> 27.3% ] 600/2200 ms | 9.37/34.34 MB @ 51.74 MB/s | ETA: 00s +[==============> 28.4% ] 625/2200 ms | 9.76/34.34 MB @ 51.62 MB/s | ETA: 00s +[==============> 29.5% ] 650/2200 ms | 10.15/34.34 MB @ 51.50 MB/s | ETA: 00s +[===============> 30.7% ] 675/2200 ms | 10.54/34.34 MB @ 51.65 MB/s | ETA: 00s +[===============> 31.8% ] 700/2200 ms | 10.93/34.34 MB @ 51.79 MB/s | ETA: 00s +[================> 33.0% ] 725/2200 ms | 11.32/34.34 MB @ 51.44 MB/s | ETA: 00s +[=================> 34.1% ] 750/2200 ms | 11.71/34.34 MB @ 51.35 MB/s | ETA: 00s +[=================> 35.2% ] 775/2200 ms | 12.10/34.34 MB @ 51.48 MB/s | ETA: 00s +[==================> 36.4% ] 800/2200 ms | 12.49/34.34 MB @ 51.39 MB/s | ETA: 00s +[==================> 37.5% ] 825/2200 ms | 12.88/34.34 MB @ 51.51 MB/s | ETA: 00s +[===================> 38.6% ] 850/2200 ms | 13.27/34.34 MB @ 51.43 MB/s | ETA: 00s +[===================> 39.8% ] 875/2200 ms | 13.66/34.34 MB @ 51.35 MB/s | ETA: 00s +[====================> 40.9% ] 900/2200 ms | 14.05/34.34 MB @ 51.27 MB/s | ETA: 00s +[=====================>42.0% ] 925/2200 ms | 14.44/34.34 MB @ 51.20 MB/s | ETA: 00s +[=====================>43.2% ] 950/2200 ms | 14.83/34.34 MB @ 51.14 MB/s | ETA: 00s +[======================44.3% ] 975/2200 ms | 15.22/34.34 MB @ 51.07 MB/s | ETA: 00s +[======================45.5% ] 1000/2200 ms | 15.61/34.34 MB @ 51.18 MB/s | ETA: 00s +[======================46.6% ] 1025/2200 ms | 16.00/34.34 MB @ 51.12 MB/s | ETA: 00s +[======================47.7% ] 1050/2200 ms | 16.39/34.34 MB @ 51.22 MB/s | ETA: 00s +[======================48.9% ] 1075/2200 ms | 16.78/34.34 MB @ 51.16 MB/s | ETA: 00s +[======================50.0% ] 1100/2200 ms | 17.17/34.34 MB @ 50.95 MB/s | ETA: 00s +[======================51.1% ] 1125/2200 ms | 17.56/34.34 MB @ 50.90 MB/s | ETA: 00s +[======================52.3% ] 1150/2200 ms | 17.95/34.34 MB @ 50.85 MB/s | ETA: 00s +[======================53.4% ] 1175/2200 ms | 18.34/34.34 MB @ 50.95 MB/s | ETA: 00s +[======================54.5%> ] 1200/2200 ms | 18.73/34.34 MB @ 50.90 MB/s | ETA: 00s +[======================55.7%> ] 1225/2200 ms | 19.12/34.34 MB @ 50.99 MB/s | ETA: 00s +[======================56.8%=> ] 1250/2200 ms | 19.51/34.34 MB @ 50.95 MB/s | ETA: 00s +[======================58.0%=> ] 1275/2200 ms | 19.90/34.34 MB @ 50.90 MB/s | ETA: 00s +[======================59.1%==> ] 1300/2200 ms | 20.29/34.34 MB @ 50.86 MB/s | ETA: 00s +[======================60.2%===> ] 1325/2200 ms | 20.68/34.34 MB @ 50.94 MB/s | ETA: 00s +[======================61.4%===> ] 1350/2200 ms | 21.07/34.34 MB @ 51.02 MB/s | ETA: 00s +[======================62.5%====> ] 1375/2200 ms | 21.46/34.34 MB @ 50.98 MB/s | ETA: 00s +[======================63.6%====> ] 1400/2200 ms | 21.85/34.34 MB @ 51.06 MB/s | ETA: 00s +[======================64.8%=====> ] 1425/2200 ms | 22.24/34.34 MB @ 51.14 MB/s | ETA: 00s +[======================65.9%=====> ] 1450/2200 ms | 22.63/34.34 MB @ 51.09 MB/s | ETA: 00s +[======================67.0%======> ] 1475/2200 ms | 23.02/34.34 MB @ 51.17 MB/s | ETA: 00s +[======================68.2%=======> ] 1500/2200 ms | 23.41/34.34 MB @ 51.12 MB/s | ETA: 00s +[======================69.3%=======> ] 1525/2200 ms | 23.80/34.34 MB @ 51.19 MB/s | ETA: 00s +[======================70.5%========> ] 1550/2200 ms | 24.20/34.34 MB @ 51.26 MB/s | ETA: 00s +[======================71.6%========> ] 1575/2200 ms | 24.59/34.34 MB @ 51.22 MB/s | ETA: 00s +[======================72.7%=========> ] 1600/2200 ms | 24.98/34.34 MB @ 51.28 MB/s | ETA: 00s +[======================73.9%=========> ] 1625/2200 ms | 25.37/34.34 MB @ 51.24 MB/s | ETA: 00s +[======================75.0%==========> ] 1650/2200 ms | 25.76/34.34 MB @ 51.31 MB/s | ETA: 00s +[======================76.1%===========> ] 1675/2200 ms | 26.15/34.34 MB @ 51.27 MB/s | ETA: 00s +[======================77.3%===========> ] 1700/2200 ms | 26.54/34.34 MB @ 51.33 MB/s | ETA: 00s +[======================78.4%============> ] 1725/2200 ms | 26.93/34.34 MB @ 51.29 MB/s | ETA: 00s +[======================79.5%============> ] 1750/2200 ms | 27.32/34.34 MB @ 51.35 MB/s | ETA: 00s +[======================80.7%=============> ] 1775/2200 ms | 27.71/34.34 MB @ 51.31 MB/s | ETA: 00s +[======================81.8%=============> ] 1800/2200 ms | 28.10/34.34 MB @ 51.37 MB/s | ETA: 00s +[======================83.0%==============> ] 1825/2200 ms | 28.49/34.34 MB @ 51.33 MB/s | ETA: 00s +[======================84.1%===============> ] 1850/2200 ms | 28.88/34.34 MB @ 51.38 MB/s | ETA: 00s +[======================85.2%===============> ] 1875/2200 ms | 29.27/34.34 MB @ 51.35 MB/s | ETA: 00s +[======================86.4%================> ] 1900/2200 ms | 29.66/34.34 MB @ 51.31 MB/s | ETA: 00s +[======================87.5%================> ] 1925/2200 ms | 30.05/34.34 MB @ 51.19 MB/s | ETA: 00s +[======================88.6%=================> ] 1950/2200 ms | 30.44/34.34 MB @ 51.24 MB/s | ETA: 00s +[======================89.8%=================> ] 1975/2200 ms | 30.83/34.34 MB @ 51.30 MB/s | ETA: 00s +[======================90.9%==================> ] 2000/2200 ms | 31.22/34.34 MB @ 51.18 MB/s | ETA: 00s +[======================92.0%===================> ] 2025/2200 ms | 31.61/34.34 MB @ 51.23 MB/s | ETA: 00s +[======================93.2%===================> ] 2050/2200 ms | 32.00/34.34 MB @ 51.12 MB/s | ETA: 00s +[======================94.3%====================> ] 2075/2200 ms | 32.39/34.34 MB @ 51.09 MB/s | ETA: 00s +[======================95.5%====================> ] 2100/2200 ms | 32.78/34.34 MB @ 50.98 MB/s | ETA: 00s +[======================96.6%=====================> ] 2125/2200 ms | 33.17/34.34 MB @ 50.95 MB/s | ETA: 00s +[======================97.7%=====================> ] 2150/2200 ms | 33.56/34.34 MB @ 51.00 MB/s | ETA: 00s +[======================98.9%======================>] 2175/2200 ms | 33.95/34.34 MB @ 50.90 MB/s | ETA: 00s +[======================100.0%======================] 2200/2200 ms | 34.34/34.34 MB @ 50.80 MB/s | ETA: -- +[======================100.0%======================] 2200/2200 ms | 34.34/34.34 MB | COMPLETED + +[INFO] IF Signal generation completed! +------------------------------------------------------------------ +[INFO] Total samples: 36009600 +[INFO] Clipped samples: 10 (0.0000%) +[INFO] Final AGC gain: 1.000 +[INFO] Total time taken: 0.68 s +[INFO] Data generated: 34.34 MB +[INFO] Average rate: 50.80 MB/s +------------------------------------------------------------------ + diff --git a/verification/vectors/signalsim/negative_doppler/metadata.yaml b/verification/vectors/signalsim/negative_doppler/metadata.yaml new file mode 100644 index 0000000..a6543ce --- /dev/null +++ b/verification/vectors/signalsim/negative_doppler/metadata.yaml @@ -0,0 +1,29 @@ +name: negative_doppler +signalsim_path: /home/onur/Desktop/galileo/signalsim/SignalSim +signalsim_commit: 80b262113e77c4482ca9f5cbfef9bcada402ed28 +command: +- /home/onur/Desktop/galileo/build/signalsim/IFdataGen +- -c +- /home/onur/Desktop/galileo/verification/vectors/signalsim/negative_doppler/generated_config.json +- -o +- /home/onur/Desktop/galileo/verification/vectors/signalsim/negative_doppler/negative_doppler_iq8.bin +- -t +- -st +output: verification/vectors/signalsim/negative_doppler/negative_doppler_iq8.bin +size_bytes: 36009600 +sha256: b17d2d1f180122041b2688f9a8b1facfc73ab99b521187908c88450d65ddc1ad +complex_sample_count: 18004800 +sampling_frequency_hz: 8184000.0 +intermediate_frequency_hz: 2046000.0 +sample_format: IQ8_interleaved_signed_I_then_Q +duration_s: 2.2 +prns: +- 27 +components: +- E1B +- E1C +expected_doppler_hz: + 27: -2637.0 +expected_code_delay: null +navigation_truth: INavBit generated from bundled RINEX; no sample-side truth file +secondary_truth: PilotBit.cpp SecondaryCodeE1, phase must be synchronized diff --git a/verification/vectors/signalsim/negative_doppler/negative_doppler_iq8.bin.tag b/verification/vectors/signalsim/negative_doppler/negative_doppler_iq8.bin.tag new file mode 100644 index 0000000..c9bc476 --- /dev/null +++ b/verification/vectors/signalsim/negative_doppler/negative_doppler_iq8.bin.tag @@ -0,0 +1,8 @@ +PROG = IFDataGen +TIME = 2026/07/30 20:17:48.609 +FMT = INT8X2 +F_S = 8.184000 +F_LO = 1573.374000 +IQ = 1 +BITS = 8 +SCALE = 1.0 diff --git a/verification/vectors/signalsim/nominal_cn0_single_prn/generated_config.json b/verification/vectors/signalsim/nominal_cn0_single_prn/generated_config.json new file mode 100644 index 0000000..e48b82e --- /dev/null +++ b/verification/vectors/signalsim/nominal_cn0_single_prn/generated_config.json @@ -0,0 +1,120 @@ +{ + "version": 1.0, + "description": "SignalSim validation vector: nominal_cn0_single_prn", + "time": { + "type": "UTC", + "year": 2021, + "month": 6, + "day": 19, + "hour": 10, + "minute": 5, + "second": 30 + }, + "trajectory": { + "name": "static single-PRN integration baseline", + "initPosition": { + "type": "LLA", + "format": "d", + "longitude": -121.915773, + "latitude": 37.352721, + "altitude": 20 + }, + "initVelocity": { + "type": "SCU", + "speed": 0, + "course": 0 + }, + "trajectoryList": [ + { + "type": "Const", + "time": 0.6 + } + ] + }, + "ephemeris": { + "type": "RINEX", + "name": "/home/onur/Desktop/galileo/signalsim/SignalSim/EphData/BRDC00IGS_R_20211700000_01D_MN.rnx" + }, + "output": { + "type": "IFdata", + "format": "IQ8", + "sampleFreq": 8.184, + "centerFreq": 1573.374, + "name": "nominal_cn0_single_prn_iq8.bin", + "config": { + "elevationMask": 3, + "maskOut": [ + { + "system": "Galileo", + "svid": [ + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36 + ] + } + ] + }, + "systemSelect": [ + { + "system": "GPS", + "signal": "L1CA", + "enable": false + }, + { + "system": "BDS", + "signal": "B1C", + "enable": false + }, + { + "system": "Galileo", + "signal": "E1", + "enable": true + }, + { + "system": "GLONASS", + "signal": "G1", + "enable": false + } + ] + }, + "power": { + "noiseFloor": -172, + "initPower": { + "unit": "dBHz", + "value": 50.0 + }, + "elevationAdjust": false + } +} diff --git a/verification/vectors/signalsim/nominal_cn0_single_prn/generation.log b/verification/vectors/signalsim/nominal_cn0_single_prn/generation.log new file mode 100644 index 0000000..a77295e --- /dev/null +++ b/verification/vectors/signalsim/nominal_cn0_single_prn/generation.log @@ -0,0 +1,80 @@ + +================================================================================ + IF SIGNAL GENERATION +================================================================================ +[INFO] Loading JSON file: /home/onur/Desktop/galileo/verification/vectors/signalsim/nominal_cn0_single_prn/generated_config.json +[INFO] JSON file read successfully: /home/onur/Desktop/galileo/verification/vectors/signalsim/nominal_cn0_single_prn/generated_config.json +[INFO] Using output file from command line: /home/onur/Desktop/galileo/verification/vectors/signalsim/nominal_cn0_single_prn/nominal_cn0_single_prn_iq8.bin +[INFO] Opening output file: /home/onur/Desktop/galileo/verification/vectors/signalsim/nominal_cn0_single_prn/nominal_cn0_single_prn_iq8.bin +[INFO] Output file opened successfully. +[INFO] Creating tag file: /home/onur/Desktop/galileo/verification/vectors/signalsim/nominal_cn0_single_prn/nominal_cn0_single_prn_iq8.bin.tag +[INFO] Tag file created: /home/onur/Desktop/galileo/verification/vectors/signalsim/nominal_cn0_single_prn/nominal_cn0_single_prn_iq8.bin.tag +[INFO] OpenMP configured for SERIAL execution (1 thread) +[INFO] Generating IF data with following satellite signals: + +[INFO] Enabled Signals: + GAL : [ E1 ] + +Signals Summary Table: ++---------------+-------------+--------------+------------------------------+ +| Constellation | Visible SVs | Signals / SV | Total Signals / Visible SVs | ++---------------+-------------+--------------+------------------------------+ +| GPS | 0 | 0 | 0 | +| BeiDou | 0 | 0 | 0 | +| Galileo | 1 | 1 | 1 | +| GLONASS | 0 | 0 | 0 | ++---------------+-------------+--------------+------------------------------+ +Total Visible SVs = 1, Total channels = 1 + +Galileo E1 with IF +2046kHz: ++----+--------------+----+--------------+----+--------------+----+--------------+ +| SV | Doppler (Hz) | SV | Doppler (Hz) | SV | Doppler (Hz) | SV | Doppler (Hz) | ++----+--------------+----+--------------+----+--------------+----+--------------+ +| 01 | +1828 | | | | | | | ++----+--------------+----+--------------+----+--------------+----+--------------+ + +Total channels: 1 + +[INFO] Signal Duration: 0.60 s +[INFO] Signal Size: 9.37 MB +[INFO] Signal Data format: IQ8 +[INFO] Signal Center freq: 1573.3740 MHz +[INFO] Signal Sample rate: 8.1840 MHz + +[INFO] Starting signal generation loop... + +[==> 4.2% ] 25/600 ms | 0.39/9.37 MB @ 55.75 MB/s | ETA: 00s +[====> 8.3% ] 50/600 ms | 0.78/9.37 MB @ 52.03 MB/s | ETA: 00s +[======> 12.5% ] 75/600 ms | 1.17/9.37 MB @ 53.22 MB/s | ETA: 00s +[========> 16.7% ] 100/600 ms | 1.56/9.37 MB @ 52.03 MB/s | ETA: 00s +[==========> 20.8% ] 125/600 ms | 1.95/9.37 MB @ 51.35 MB/s | ETA: 00s +[============> 25.0% ] 150/600 ms | 2.34/9.37 MB @ 49.82 MB/s | ETA: 00s +[==============> 29.2% ] 175/600 ms | 2.73/9.37 MB @ 50.59 MB/s | ETA: 00s +[================> 33.3% ] 200/600 ms | 3.12/9.37 MB @ 51.18 MB/s | ETA: 00s +[==================> 37.5% ] 225/600 ms | 3.51/9.37 MB @ 50.90 MB/s | ETA: 00s +[====================> 41.7% ] 250/600 ms | 3.90/9.37 MB @ 50.68 MB/s | ETA: 00s +[======================45.8% ] 275/600 ms | 4.29/9.37 MB @ 50.50 MB/s | ETA: 00s +[======================50.0% ] 300/600 ms | 4.68/9.37 MB @ 50.35 MB/s | ETA: 00s +[======================54.2%> ] 325/600 ms | 5.07/9.37 MB @ 50.73 MB/s | ETA: 00s +[======================58.3%==> ] 350/600 ms | 5.46/9.37 MB @ 50.12 MB/s | ETA: 00s +[======================62.5%====> ] 375/600 ms | 5.85/9.37 MB @ 49.61 MB/s | ETA: 00s +[======================66.7%======> ] 400/600 ms | 6.24/9.37 MB @ 49.55 MB/s | ETA: 00s +[======================70.8%========> ] 425/600 ms | 6.63/9.37 MB @ 49.51 MB/s | ETA: 00s +[======================75.0%==========> ] 450/600 ms | 7.02/9.37 MB @ 49.12 MB/s | ETA: 00s +[======================79.2%============> ] 475/600 ms | 7.41/9.37 MB @ 49.10 MB/s | ETA: 00s +[======================83.3%==============> ] 500/600 ms | 7.80/9.37 MB @ 49.09 MB/s | ETA: 00s +[======================87.5%================> ] 525/600 ms | 8.20/9.37 MB @ 48.78 MB/s | ETA: 00s +[======================91.7%==================> ] 550/600 ms | 8.59/9.37 MB @ 48.50 MB/s | ETA: 00s +[======================95.8%====================> ] 575/600 ms | 8.98/9.37 MB @ 48.52 MB/s | ETA: 00s +[======================100.0%======================] 600/600 ms | 9.37/9.37 MB | COMPLETED + +[INFO] IF Signal generation completed! +------------------------------------------------------------------ +[INFO] Total samples: 9804432 +[INFO] Clipped samples: 1 (0.0000%) +[INFO] Final AGC gain: 1.000 +[INFO] Total time taken: 0.19 s +[INFO] Data generated: 9.35 MB +[INFO] Average rate: 48.45 MB/s +------------------------------------------------------------------ + diff --git a/verification/vectors/signalsim/nominal_cn0_single_prn/metadata.yaml b/verification/vectors/signalsim/nominal_cn0_single_prn/metadata.yaml new file mode 100644 index 0000000..48aeeee --- /dev/null +++ b/verification/vectors/signalsim/nominal_cn0_single_prn/metadata.yaml @@ -0,0 +1,29 @@ +name: nominal_cn0_single_prn +signalsim_path: /home/onur/Desktop/galileo/signalsim/SignalSim +signalsim_commit: 80b262113e77c4482ca9f5cbfef9bcada402ed28 +command: +- /home/onur/Desktop/galileo/build/signalsim/IFdataGen +- -c +- /home/onur/Desktop/galileo/verification/vectors/signalsim/nominal_cn0_single_prn/generated_config.json +- -o +- /home/onur/Desktop/galileo/verification/vectors/signalsim/nominal_cn0_single_prn/nominal_cn0_single_prn_iq8.bin +- -t +- -st +output: verification/vectors/signalsim/nominal_cn0_single_prn/nominal_cn0_single_prn_iq8.bin +size_bytes: 9804432 +sha256: ffbcb2cfedc6142ca3064514b4d2c10045abf0221462996a5fc10a49213bf88e +complex_sample_count: 4902216 +sampling_frequency_hz: 8184000.0 +intermediate_frequency_hz: 2046000.0 +sample_format: IQ8_interleaved_signed_I_then_Q +duration_s: 0.6 +prns: +- 1 +components: +- E1B +- E1C +expected_doppler_hz: + 1: 1828.0 +expected_code_delay: null +navigation_truth: INavBit generated from bundled RINEX; no sample-side truth file +secondary_truth: PilotBit.cpp SecondaryCodeE1, phase must be synchronized diff --git a/verification/vectors/signalsim/nominal_cn0_single_prn/nominal_cn0_single_prn_iq8.bin.tag b/verification/vectors/signalsim/nominal_cn0_single_prn/nominal_cn0_single_prn_iq8.bin.tag new file mode 100644 index 0000000..2e6082f --- /dev/null +++ b/verification/vectors/signalsim/nominal_cn0_single_prn/nominal_cn0_single_prn_iq8.bin.tag @@ -0,0 +1,8 @@ +PROG = IFDataGen +TIME = 2026/07/30 20:17:06.376 +FMT = INT8X2 +F_S = 8.184000 +F_LO = 1573.374000 +IQ = 1 +BITS = 8 +SCALE = 1.0

      *rHremE} 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

      <@9rnRxhHhv^nOWc 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

    *rHremE} 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