gr-apollo/grc/apollo_fm_downlink_receiver.block.yml
Ryan Malloy 7d48398551 Add FM downlink mode: carrier blocks, convenience wrappers, and loopback demo
FM mode now has the same three-layer architecture as PM mode:
- fm_mod/fm_demod for carrier-level FM modulation
- fm_signal_source/fm_downlink_receiver convenience wrappers
- fm_loopback_demo.py verifying round-trip SCO voltage recovery

Includes GRC YAML for all 4 blocks and doc updates across
blocks reference, SCO guide, and signal architecture pages.
2026-02-24 10:18:42 -07:00

64 lines
1.7 KiB
YAML

id: apollo_fm_downlink_receiver
label: Apollo FM Downlink Receiver
category: '[Apollo USB]'
flags: [python]
parameters:
- id: channels
label: SCO Channels
dtype: raw
default: '[1, 5, 9]'
- id: fm_deviation_hz
label: FM Deviation (Hz)
dtype: real
default: '500000'
- id: sample_rate
label: Sample Rate
dtype: float
default: '5120000'
- id: carrier_pll_bw
label: Carrier PLL BW
dtype: float
default: '0.02'
inputs:
- label: in
domain: stream
dtype: complex
outputs:
- label: ch${n}
domain: stream
dtype: float
multiplicity: ${ len(channels) }
templates:
imports: from apollo.fm_downlink_receiver import fm_downlink_receiver
make: >-
apollo.fm_downlink_receiver.fm_downlink_receiver(
channels=${channels},
sample_rate=${sample_rate},
carrier_pll_bw=${carrier_pll_bw},
fm_deviation_hz=${fm_deviation_hz})
documentation: |-
Apollo FM Downlink Receiver -- complete FM demod chain in one block.
Demodulates an FM-modulated complex baseband signal and recovers
individual SCO analog telemetry channels. Each output port provides
a recovered 0-5V sensor voltage for the corresponding SCO channel.
Output port ordering matches the channels list:
output 0 = channels[0], output 1 = channels[1], etc.
Used in FM downlink mode (pre-launch checkout), not PM mode.
This is the receive-side counterpart to the FM Signal Source.
Parameters:
channels: List of SCO channel numbers to decode (1-9)
fm_deviation_hz: Expected carrier FM deviation in Hz (default 500 kHz)
sample_rate: Baseband sample rate (default 5.12 MHz)
carrier_pll_bw: FM carrier recovery loop bandwidth
file_format: 1