Main Content

ccsdsHPEWaveformGenerator

Generate CCSDS optical HPE waveform

Since R2023b

Description

The ccsdsHPEWaveformGenerator System object™ generates a Consultative Committee for Space Data Systems (CCSDS) optical high photon efficiency (HPE) waveform. The object implements the waveform specified by the CCSDS optical communications synchronization and channel coding standard CCSDS 142.0-B-1 [1].

To generate a CCSDS HPE waveform:

  1. Create the ccsdsHPEWaveformGenerator object and set its properties.

  2. Call the object with arguments, as if it were a function.

To learn more about how System objects work, see What Are System Objects?

Creation

Description

example

hpeWaveform = ccsdsHPEWaveformGenerator creates a default CCSDS optical HPE System object. This object takes CCSDS transfer frames (TFs) from the data link protocol sublayer as input to generate the CCSDS HPE waveform.

hpeWaveform = ccsdsHPEWaveformGenerator(Name=Value) sets properties using one or more optional name-value arguments. For example, ccsdsHPEWaveformGenerator(TransmissionType="beacon-and-data") sets the transmission type for TF signalling to "beacon-and-data".

Properties

expand all

Unless otherwise indicated, properties are nontunable, which means you cannot change their values after calling the object. Objects lock when you call them, and the release function unlocks them.

If a property is tunable, you can change its value at any time.

For more information on changing property values, see System Design in MATLAB Using System Objects.

Transmission type for TF signaling, specified as "telemetry" or "beacon-and-data".

This property determines the format of the input data. For more information, see the Usage section.

Data Types: string | char

Beacon length in bits, specified as a positive integer. A beacon contains alternating 1s and 0s, with the starting bit having a value of 1, and is of length BeaconLength.

Tunable: Yes

Dependencies

To enable this property, set the TransmissionType property to "beacon-and-data".

Data Types: double | uint32

Number of bytes in one TF, specified as a nonnegative integer less than or equal to 65536.

Data Types: double | uint32

Number of bits in the information block, specified as one of these values.

  • 5006, 7526, or 10046 — Use one of these values when you set the TransmissionType property to "telemetry".

  • 64, 256, or 1024 — Use one of these values when you set the TransmissionType property to "beacon-and-data".

Data Types: double | uint16

Pulse position modulation (PPM) order of the input transmission, specified as one of these values.

  • 4

  • 8

  • 16

  • 32

  • 64

  • 128

  • 256

Dependencies

To enable this property, set the TransmissionType property to "telemetry".

When you set the TransmissionType property to "beacon-and-data", PPM order of 2 is set internally.

Data Types: double | uint16

Option for channel interleaving, specified as a numeric or logical value of 0 (false) or 1 (true). Set this value to true to indicate the use of a channel interleaver in the TF signaling.

Dependencies

To enable this property, set the TransmissionType property to "beacon-and-data".

When you set the TransmissionType property to "telemetry", the object sets channel interleaving to true internally.

Data Types: logical | double

Number of rows in the channel interleaver, specified as a positive integer.

  • If you set the TransmissionType property to "telemetry", then RegisterLengthIncrement*NumRows must be a multiple of S, which must be a multiple of NumRows. Here, S = 15120 / log2(PPMOrder).

  • If you set the TransmissionType property to "beacon-and-data", RegisterLengthIncrement*NumRows must be a multiple of 128, which must be a multiple of NumRows.

Dependencies

To enable this property, you must satisfy one of these conditions.

  • Set the TransmissionType property to "telemetry".

  • Set the TransmissionType property to "beacon-and-data" and the HasChannelInterleaver property to true.

Data Types: double | uint16

Shift register length increment in the channel interleaver, specified as a positive integer.

  • If you set the TransmissionType property to "telemetry", then RegisterLengthIncrement*NumRows must be a multiple of S, where S = 15120 / log2(PPMOrder).

  • If you set the TransmissionType property to "beacon-and-data", then RegisterLengthIncrement*NumRows must be a multiple of 128.

Dependencies

To enable this property, one of these conditions must be satisfied.

  • Set the TransmissionType property to "telemetry".

  • Set the TransmissionType property to "beacon-and-data" and the HasChannelInterleaver property to true.

Data Types: double | uint16

Repetition factor for the input transmission, specified as one of these values.

  • 1

  • 2

  • 3

  • 4

  • 8

  • 16

  • 32

Dependencies

To enable this property, set the TransmissionType property to "telemetry".

Data Types: double | uint8

Pseudo-noise (PN) spreading factor for the input transmission, specified as one of these values.

  • 1

  • 2

  • 3

  • 4

  • 8

  • 16

  • 32

  • 64

Dependencies

To enable this property, set the TransmissionType property to "beacon-and-data".

Data Types: double | uint8

Option to indicate the end of transmission, specified as a numeric or logical value of 1 (true) or 0 (false). Set this value to true to indicate the end of transmission for the current data frames. A value of true also indicates the termination of the slicer and the convolutional interleaver.

Tunable: Yes

Data Types: logical | double

This property is read-only.

Code rate used for encoding, stored as one of these options. The possible values depend on the value of the TransmissionType property.

  • TransmissionType is "telemetry"CodeRate can be "1/3", "1/2", or "2/3", and indicates a serially concatenated pulse position modulation (SCPPM) encoder code rate.

  • TransmissionType is "beacon-and-data"CodeRate must be "1/2", and indicates a low density parity check (LDPC) encoder code rate.

Data Types: string

This property is read-only.

Number of guard slots inserted between each symbol, stored as a positive integer.

  • If you set the TransmissionType property to "telemetry", NumGuardSlots is returned as PPMOrder ∕ 4.

  • If you set the TransmissionType property to "beacon-and-data", NumGuardSlots is returned as 2.

Data Types: uint8

This property is read-only.

Number of bits per symbol, stored as a positive integer.

  • If you set the TransmissionType property to "telemetry", NumBitsPerSymbol = 5*PPMOrder ∕ 4.

  • If you set the TransmissionType property to "beacon-and-data", NumBitsPerSymbol = 4.

The property value includes the number of bits used to map each symbol and the number of guard slots inserted between each symbol.

Data Types: uint16

Usage

Description

txOut = hpeWaveform(data) generates a CCSDS telemetry (TM) optical HPE waveform for the corresponding CCSDS TFs in data, as defined in CCSDS 142.0-B-1 section 3 [1].

Note

This syntax is applicable when you set the TransmissionType property to "telemetry".

[beacon,txOut] = hpeWaveform(data) also generates a CCSDS optical HPE beacon. For more information, see CCSDS 142.0-B-1 section 4 [1].

Note

This syntax is applicable when you set the TransmissionType property to "beacon-and-data".

Input Arguments

expand all

CCSDS TFs, specified as a binary-valued column vector, containing a sequence of values in one of these formats.

  • CCSDS TM — Applicable only when you set the TransmissionType property to "telemetry". The data link protocol sublayer specifies the format to produce CCSDS TM TFs, as described in CCSDS 132.0-B-2 [2].

  • Advanced orbiting systems (AOS) — Applicable for any value of the TransmissionType property. The data link protocol sublayer specifies the format to produce AOS TFs, as described in CCSDS 732.0-B-3 [3].

  • Unified space data link protocol (USLP) — Applicable for any value of the TransmissionType property. The data link protocol sublayer specifies the format to produce USLP TFs, as described in CCSDS 732.1-B-1 [4].

The length of data must be an integer multiple of the number of bits in a TF: 8*NumBytesInTransferFrame.

Data Types: double | int8 | logical

Output Arguments

expand all

Generated CCSDS optical HPE waveform, returned as a binary-valued column vector with the same data precision as the input data.

The binary-valued column vector indicates the positions of the pulsed slots. In optical transmission, a bit value of 1 indicates pulsed slots and a bit value of 0 indicates nonpulsed slots.

Data Types: double | int8 | logical

Generated CCSDS optical HPE beacon, returned as a binary-valued column vector of alternating 1s and 0s of length BeaconLength. The generated beacon waveform has the same data precision as the input data.

Data Types: double | int8 | logical

Object Functions

To use an object function, specify the System object as the first input argument. For example, to release system resources of a System object named obj, use this syntax:

release(obj)

expand all

stepRun System object algorithm
releaseRelease resources and allow changes to System object property values and input characteristics
cloneCreate duplicate System object
isLockedDetermine if System object is in use
resetReset internal states of System object

Examples

collapse all

Generate a CCSDS HPE TM waveform for 10 transfer frames, each 1024 bytes in length.

rng("default")
numTF = 10;
numBytesInTF = 1024;
dataTF = randi([0 1],numBytesInTF*8*numTF,1);

Create a CCSDS HPE waveform generator System object and set its properties.

hpeWaveform = ccsdsHPEWaveformGenerator;
hpeWaveform.TransmissionType = "telemetry";
hpeWaveform.PPMOrder = 4;
hpeWaveform.NumRows = 36;
hpeWaveform.NumBytesInTransferFrame = numBytesInTF;

Generate the TM waveform.

txOut = hpeWaveform(dataTF);

Create a CCSDS HPE waveform generator System object and set the transmission type to "beacon-and-data".

hpeWavegen = ccsdsHPEWaveformGenerator;
hpeWavegen.TransmissionType = "beacon-and-data";

Set the beacon length to 4000, and generate the CCSDS HPE beacon waveform.

hpeWavegen.BeaconLength = 4000;
beacon1 = hpeWavegen([]);

Generate another beacon waveform with the properties set to these values.

  • Bytes in TFs: 2048

  • Beacon length: 8500

  • Information block size: 64

  • Channel interleaver: No

  • PN spreading factor: 2

hpeWavegen.release()
hpeWavegen.BeaconLength = 8500;
hpeWavegen.NumBytesInTransferFrame = 2048;
hpeWavegen.NumBitsInInformationBlock = 64;
hpeWavegen.HasChannelInterleaver = false;
hpeWavegen.PNSpreadFactor = 2;

Set the number of TFs to 10.

numTF = 10;

Generate random CCSDS TFs, to be input to the object.

data = randi([0 1],hpeWavegen.NumBytesInTransferFrame*8*numTF,1);

Generate the CCSDS HPE beacon waveform.

[beacon2,txOut] = hpeWavegen(data);

Generate a CCSDS HPE TM waveform in multiple instances using the IsEndOfTransmission property.

Set the number of instances to 4.

numInstances = 4;

Generate the TFs with random data.

numTF = 8;
numBytesInTF = 4000;
data = randi([0 1],numBytesInTF*8*numTF,numInstances);

Create a CCSDS HPE waveform generator System object and set its properties.

hpeWavegen = ccsdsHPEWaveformGenerator;
hpeWavegen.TransmissionType = "telemetry";
hpeWavegen.NumBytesInTransferFrame = numBytesInTF;
hpeWavegen.NumBitsInInformationBlock = 5006;
hpeWavegen.RepeatFactor = 2;
hpeWavegen.IsEndOfTransmission = false;

Generate the CCSDS HPE TM waveform in multiple instances.

txOut = cell(numInstances,1);
for itr = 1:numInstances-1
   txOut{itr} = hpeWavegen(data(:,itr));
end

% Set the IsEndOfTransmission property to true to terminate the states.
hpeWavegen.IsEndOfTransmission = true;

% Transmit the final set of data.
txOut{4} = hpeWavegen(data(:,4));
out = vertcat(txOut{:});

References

[1] CCSDS 142.0-B-1. "The Consultative Committee for Space Data Systems. Optical Communications Coding and Synchronization". Recommended Standard, Issue 1. Washington, D.C.: CCSDS, August 2019.

[2] The Consultative Committee for Space Data Systems. TM Space Data Link Protocol. Recommended Standard, Issue 2. CCSDS 132.0-B-2. Washington, D.C.: CCSDS, September 2015.

[3] The Consultative Committee for Space Data Systems. AOS Space Data Link Protocol. Recommended Standard, Issue 3. CCSDS 732.0-B-3. Washington, D.C.: CCSDS, September 2015.

[4] The Consultative Committee for Space Data Systems. Unified Space Data Link Protocol. Recommended Standard, Issue 1. CCSDS 732.1-B-1. Washington, D.C.: CCSDS, October 2018.

Extended Capabilities

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

Version History

Introduced in R2023b