Initial Galileo receiver and SignalSim integration
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user