gr-apollo/grc/apollo_fm_signal_source.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

61 lines
1.6 KiB
YAML

id: apollo_fm_signal_source
label: Apollo FM Signal Source
category: '[Apollo USB]'
flags: [python]
parameters:
- id: channels
label: SCO Channels
dtype: raw
default: '[1, 5, 9]'
- id: test_voltages
label: Test Voltages (dict)
dtype: raw
default: 'None'
- id: fm_deviation_hz
label: FM Deviation (Hz)
dtype: real
default: '500000'
- id: sample_rate
label: Sample Rate (Hz)
dtype: float
default: '5120000'
- id: snr_db
label: SNR (dB)
dtype: raw
default: 'None'
outputs:
- label: out
domain: stream
dtype: complex
templates:
imports: from apollo.fm_signal_source import fm_signal_source
make: >-
apollo.fm_signal_source.fm_signal_source(
channels=${channels},
test_voltages=${test_voltages},
sample_rate=${sample_rate},
fm_deviation_hz=${fm_deviation_hz},
snr_db=${snr_db})
documentation: |-
Apollo FM Signal Source -- complete FM transmit chain in one block.
Generates an FM-modulated complex baseband signal containing
SCO analog telemetry channels. Each channel encodes a DC test
voltage as an FM subcarrier tone (14.5 kHz to 165 kHz).
Used in FM downlink mode (pre-launch checkout), not PM mode.
This is the transmit-side counterpart to the FM Downlink Receiver.
Parameters:
channels: List of SCO channel numbers to generate (1-9)
test_voltages: Dict mapping channel -> DC voltage (default 2.5V)
fm_deviation_hz: Carrier FM deviation in Hz (default 500 kHz)
sample_rate: Output sample rate (default 5.12 MHz)
snr_db: Add AWGN noise at this SNR (None = no noise)
file_format: 1