Uplink word codec (uplink_word_codec.py): - UplinkSerializerEngine: (channel, value) pairs to 15-bit NRZ bit stream with configurable inter-word gap for UPRUPT timing - UplinkDeserializerEngine: two-phase state machine (acquisition + fixed framing) recovers words from NRZ bits, handles leading-zero data words - GR wrappers: uplink_word_serializer (sync_block source) and uplink_word_deserializer (basic_block sink with message output) TX source (usb_uplink_source.py): - hier_block2 wiring: word_serializer -> nrz_encoder -> FM mod (4 kHz dev) -> 70 kHz upconvert -> complex_to_real -> PM mod (1.0 rad) -> [AWGN] - Message input "words" forwards PDUs from uplink_encoder RX receiver (usb_uplink_receiver.py): - hier_block2 wiring: PM demod -> subcarrier_extract (70 kHz, 20 kHz BW) -> quadrature_demod -> matched filter -> decimate -> slicer -> deserializer - Message output "commands" emits recovered (channel, value) PDUs GRC block definitions for both source and receiver. Loopback demo (uplink_loopback_demo.py): - Encodes V16N36E, serializes with pure-Python engine, runs through GR RF chain (FM + PM + noise + demod), deserializes, compares TX vs RX words
58 lines
1.4 KiB
YAML
58 lines
1.4 KiB
YAML
id: apollo_usb_uplink_receiver
|
|
label: Apollo USB Uplink Receiver
|
|
category: '[Apollo USB]'
|
|
flags: [python]
|
|
|
|
parameters:
|
|
- id: sample_rate
|
|
label: Sample Rate (Hz)
|
|
dtype: float
|
|
default: '5120000'
|
|
- id: bit_rate
|
|
label: Uplink Bit Rate
|
|
dtype: int
|
|
default: '2000'
|
|
- id: carrier_pll_bw
|
|
label: Carrier PLL Bandwidth
|
|
dtype: float
|
|
default: '0.02'
|
|
- id: subcarrier_bw
|
|
label: Subcarrier Bandwidth (Hz)
|
|
dtype: float
|
|
default: '20000'
|
|
|
|
inputs:
|
|
- label: in
|
|
domain: stream
|
|
dtype: complex
|
|
|
|
outputs:
|
|
- label: commands
|
|
domain: message
|
|
|
|
templates:
|
|
imports: from apollo.usb_uplink_receiver import usb_uplink_receiver
|
|
make: >-
|
|
apollo.usb_uplink_receiver.usb_uplink_receiver(
|
|
sample_rate=${sample_rate},
|
|
bit_rate=${bit_rate},
|
|
carrier_pll_bw=${carrier_pll_bw},
|
|
subcarrier_bw=${subcarrier_bw})
|
|
|
|
documentation: |-
|
|
Apollo USB Uplink Receiver -- spacecraft command receiver.
|
|
|
|
Demodulates uplink commands from complex baseband:
|
|
PM demod -> 70 kHz subcarrier extract -> FM demod -> bit recovery -> word assembly
|
|
|
|
Message output:
|
|
commands -- decoded (channel, value) PDUs for AGC bridge
|
|
|
|
Parameters:
|
|
sample_rate: Input sample rate (default 5.12 MHz)
|
|
bit_rate: Expected uplink data rate (default 2000 bps)
|
|
carrier_pll_bw: PM carrier recovery loop bandwidth (default 0.02)
|
|
subcarrier_bw: 70 kHz subcarrier filter bandwidth (default 20 kHz)
|
|
|
|
file_format: 1
|