id: apollo_fm_demod label: Apollo FM Demod category: '[Apollo USB]' flags: [python] parameters: - id: carrier_pll_bw label: Carrier PLL Bandwidth dtype: real default: '0.02' - id: fm_deviation_hz label: FM Deviation (Hz) dtype: real default: '500000' - id: sample_rate label: Sample Rate dtype: real default: '5120000' inputs: - label: in domain: stream dtype: complex outputs: - label: out domain: stream dtype: float templates: imports: from apollo.fm_demod import fm_demod make: apollo.fm_demod.fm_demod(carrier_pll_bw=${carrier_pll_bw}, fm_deviation_hz=${fm_deviation_hz}, sample_rate=${sample_rate}) documentation: |- Apollo FM Demodulator Extracts frequency modulation from complex baseband signal. Uses a carrier tracking PLL followed by quadrature demodulation to recover the instantaneous frequency (composite SCO signal). Output is normalized so +/- full FM deviation maps to +/- 1.0. Parameters: carrier_pll_bw: PLL loop bandwidth in rad/sample (default 0.02) fm_deviation_hz: Expected max FM deviation in Hz (default 500 kHz) sample_rate: Input sample rate in Hz (default 5.12 MHz) file_format: 1