Main Content

ccsdsTCIdealReceiver

Ideal receiver for CCSDS TC waveform

    Description

    bits = ccsdsTCIdealReceiver(waveform,cfg) recovers transfer frames from a Consultative Committee for Space Data Systems (CCSDS) Telecommand (TC) waveform, generated using the ccsdsTCWaveform function. Output bits is the recovered bits for the given format configuration cfg.

    example

    bits = ccsdsTCIdealReceiver(waveform,cfg,Name,Value) specifies options using one or more name-value pairs. For example, 'NoiseVariance',1e-11 specifies the noise variance of additive white Gaussian noise (AWGN) on the received waveform as 1e-11.

    Examples

    collapse all

    Recover the transfer frame from the Consultative Committee for Space Data Systems (CCSDS) Telecommand (TC) waveform.

    Create a CCSDS TC object and specify the object properties.

    cfg = ccsdsTCConfig;
    cfg.HasRandomizer = 1;
    cfg.SamplesPerSymbol = 12;
    disp(cfg)
      ccsdsTCConfig with properties:
    
                 DataFormat: "CLTU"
              ChannelCoding: "BCH"
              HasRandomizer: 1
                 Modulation: "PCM/PSK/PM"
                  PCMFormat: "NRZ-L"
            ModulationIndex: 0.4000
        SubcarrierFrequency: 16000
                 SymbolRate: 4000
           SamplesPerSymbol: 12
    
       Read-only properties:
         SubcarrierWaveform: "sine"
    

    Specify the transfer frame length and generate the CCSDS TC waveform for the transfer frame.

    transferFrameLength = 12; % Number of octets in each transfer frame
    data = randi([0 1],8*transferFrameLength,1); % bits in the transfer frame
    waveform = ccsdsTCWaveform(data,cfg);

    Recover the transfer frame from the CCSDS TC waveform

    decodedBits = ccsdsTCIdealReceiver(waveform,cfg,'DecodingMode',"error detecting");

    Check if the transfer frame is recovered successfully.

    rxBits = decodedBits{1};
    bits = rxBits((1:8*transferFrameLength)');
    isequal(bits,data)
    ans = logical
       1
    
    

    Input Arguments

    collapse all

    Received time-domain signal, consisting of complex in-phase quadrature (IQ) samples, specified as a column vector. The waveform input is a CCSDS TC waveform.

    A CCSDS TC waveform can contain one or more communications link transmission units (CLTUs). Each CLTU can contain one or more transfer frames.

    Data Types: single | double
    Complex Number Support: Yes

    Format configuration object, specified as ccsdsTCConfig object. The properties of this object determine the parameters required for CCSDS TC waveform generation and reception.

    Name-Value Arguments

    Specify optional comma-separated pairs of Name,Value arguments. Name is the argument name and Value is the corresponding value. Name must appear inside quotes. You can specify several name and value pair arguments in any order as Name1,Value1,...,NameN,ValueN.

    Example: ccsdsTCIdealReceiver(waveform,cfg,'NoiseVariance',1e-11) specifies the noise variance of AWGN on the received waveform as 1e-11.

    Noise variance of AWGN that is added to the input IQ symbols of the waveform, specified as a positive scalar.

    Dependencies

    To enable this name-value pair, set the ChannelCoding property of the cfg input to "LDPC".

    Data Types: double

    Decoding mode to decode the Bose Chaudhuri Hocquenghem (BCH) encoded codewords, specified as "error correcting" or "error detecting".

    'DecodingMode' defines the allowed number of errors in the start sequence of the CLTU. In error detecting mode, the allowed number of errors in the start sequence is zero. In error correcting mode, the allowed number of errors in the start sequence is one.

    Dependencies

    To enable this name-value pair, set the ChannelCoding property of the cfg input to "BCH".

    Data Types: char | string

    Threshold to detect the start sequence, by calculating the normalized correlation metric with the known start sequence, specified as a scalar in the range [0.5, 1]. When the computed normalized correlation metric is greater than or equal to 'DetectionThreshold', the start sequence of the CLTU is detected.

    Dependencies

    To enable this name-value pair, set the ChannelCoding property of the cfg input to "LDPC".

    Data Types: double

    Output Arguments

    collapse all

    Recovered transfer frames, returned as a cell array of column vectors. Each element of the cell array is of data type int8.

    Bits in the cell array of one or more column vectors, corresponds to the number of CLTUs present in the waveform input. Recovered transfer frames of CLTUs can contain fill bits. The fill bits removal procedure is not performed in the TC synchronization and channel coding sublayer.

    Data Types: int8 | cell

    References

    [1] CCSDS 231.0-B-3. Blue Book. Issue 3. "TC Synchronization and Channel Coding." Recommendation for Space Data System Standards. Washington, D.C.: CCSDS, September 2017.

    [2] CCSDS 401.0-B-29. Blue Book. Issue 29. "Radio Frequency and Modulation Systems - Part 1". Earth Stations and Spacecraft. Washington, D.C.: CCSDS, September 2019.

    Extended Capabilities

    C/C++ Code Generation
    Generate C and C++ code using MATLAB® Coder™.

    See Also

    Functions

    Objects

    Introduced in R2021a