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.
49 lines
1.1 KiB
YAML
49 lines
1.1 KiB
YAML
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
|