id: apollo_bpsk_subcarrier_mod label: Apollo BPSK Subcarrier Mod category: '[Apollo USB]' flags: [python] parameters: - id: subcarrier_freq label: Subcarrier Frequency (Hz) dtype: real default: '1024000' - id: sample_rate label: Sample Rate (Hz) dtype: real default: '5120000' inputs: - label: in domain: stream dtype: float outputs: - label: out domain: stream dtype: float templates: imports: from apollo.bpsk_subcarrier_mod import bpsk_subcarrier_mod make: apollo.bpsk_subcarrier_mod.bpsk_subcarrier_mod(subcarrier_freq=${subcarrier_freq}, sample_rate=${sample_rate}) documentation: |- Apollo BPSK Subcarrier Modulator Multiplies an NRZ baseband waveform (+1/-1) by a 1.024 MHz cosine to produce a BPSK-modulated subcarrier: output(t) = nrz(t) * cos(2*pi*f_sc*t). The cosine phase flips 180 degrees at each NRZ sign change, implementing bi-phase shift keying. This is the transmit-side counterpart to the Apollo BPSK Subcarrier Demod block. On the real spacecraft, the PCM encoder drives the BPSK subcarrier modulator before summing with the voice subcarrier for PM transmission. Parameters: subcarrier_freq: BPSK subcarrier frequency in Hz (default 1.024 MHz) sample_rate: Sample rate in Hz (default 5.12 MHz) file_format: 1