gr-apollo/grc/apollo_pm_mod.block.yml
Ryan Malloy 493c21c511 Add transmit chain: 6 composable GR source blocks mirroring CuriousMarc bench
Implement the transmit/generate side as streaming GNU Radio blocks,
complementing the existing receive chain. Each block maps to a physical
instrument on CuriousMarc's Keysight bench:

  pcm_frame_source  - PCM bit stream generator (sync_block + FrameSourceEngine)
  nrz_encoder       - bits to NRZ waveform (+1/-1) with upsampling
  bpsk_subcarrier_mod - NRZ x cos(1.024 MHz) BPSK modulator
  fm_voice_subcarrier_mod - 1.25 MHz FM test tone source
  pm_mod            - phase modulator: exp(j * deviation * input)
  usb_signal_source - convenience wrapper wiring all blocks together

Includes GRC YAML definitions for all blocks under [Apollo USB] category,
49 new tests (271 total, all passing), and a loopback test that validates
the full TX->RX round trip including frame recovery with 30 dB AWGN.
2026-02-21 18:55:50 -07:00

45 lines
994 B
YAML

id: apollo_pm_mod
label: Apollo PM Mod
category: '[Apollo USB]'
flags: [python]
parameters:
- id: pm_deviation
label: PM Deviation (rad)
dtype: real
default: '0.133'
- id: sample_rate
label: Sample Rate
dtype: real
default: '5120000'
inputs:
- label: in
domain: stream
dtype: float
outputs:
- label: out
domain: stream
dtype: complex
templates:
imports: from apollo.pm_mod import pm_mod
make: apollo.pm_mod.pm_mod(pm_deviation=${pm_deviation}, sample_rate=${sample_rate})
documentation: |-
Apollo PM Modulator
Applies phase modulation to produce complex baseband signal.
Takes a composite modulating signal (sum of subcarriers) and outputs
s(t) = exp(j * pm_deviation * input(t)).
The spacecraft PM deviation is 0.133 rad (7.6 degrees) peak.
This is the transmit-side counterpart to Apollo PM Demod.
Parameters:
pm_deviation: Peak phase deviation in radians (default 0.133)
sample_rate: Sample rate in Hz (default 5.12 MHz)
file_format: 1