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
61 lines
1.4 KiB
YAML
61 lines
1.4 KiB
YAML
id: apollo_usb_uplink_source
|
|
label: Apollo USB Uplink Source
|
|
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: pm_deviation
|
|
label: PM Deviation (rad)
|
|
dtype: float
|
|
default: '1.0'
|
|
- id: snr_db
|
|
label: SNR (dB)
|
|
dtype: raw
|
|
default: 'None'
|
|
|
|
inputs:
|
|
- label: words
|
|
domain: message
|
|
optional: true
|
|
|
|
outputs:
|
|
- label: out
|
|
domain: stream
|
|
dtype: complex
|
|
|
|
templates:
|
|
imports: from apollo.usb_uplink_source import usb_uplink_source
|
|
make: >-
|
|
apollo.usb_uplink_source.usb_uplink_source(
|
|
sample_rate=${sample_rate},
|
|
bit_rate=${bit_rate},
|
|
pm_deviation=${pm_deviation},
|
|
snr_db=${snr_db})
|
|
|
|
documentation: |-
|
|
Apollo USB Uplink Source -- ground station command transmitter.
|
|
|
|
Generates a PM-modulated complex baseband signal carrying uplink commands
|
|
on a 70 kHz FM data subcarrier at 2 kbps NRZ.
|
|
|
|
This is the transmit-side counterpart to the USB Uplink Receiver.
|
|
|
|
Message input:
|
|
words -- (channel, value) PDUs from uplink_encoder
|
|
|
|
Parameters:
|
|
sample_rate: Output sample rate (default 5.12 MHz)
|
|
bit_rate: Uplink data rate (default 2000 bps)
|
|
pm_deviation: Peak PM deviation in radians (default 1.0)
|
|
snr_db: Add AWGN noise at this SNR (None = no noise)
|
|
|
|
file_format: 1
|