Main Content

dvbsapskmod

DVB-S2/S2X/SH standard-specific APSK modulation

Description

Y = dvbsapskmod(X,M,stdSuffix) performs amplitude phase shift keying (APSK) modulation on the input signal, X, in accordance with the Digital Video Broadcasting (DVB-S2/S2X/SH) standard identified by stdSuffix and the modulation order, M.

example

Y = dvbsapskmod(X,M,stdSuffix,codeIDF) specifies the code identifier, codeIDF, to use when selecting the modulation parameters.

example

Y = dvbsapskmod(X,M,stdSuffix,codeIDF,frameLength) specifies codeIDF and frameLength to use when selecting the modulation parameters.

Y = dvbsapskmod(___,Name=Value) specifies options using one or more name-value arguments using any of the previous syntaxes. For example, dvbsapskmod(X,M,stdSuffix,OutputDataType="double") specifies the desired output data type as double. Specify name-value pair arguments after all other input arguments.

example

Examples

collapse all

Modulate data using the DVB-S2X standard specified 32-APSK modulation scheme. Display the result in a scatter plot.

Set the modulation order and the suffix identifying the DVB-S2X standard. Create a data vector with all possible symbols.

M = 32;
stdSuffix = "s2x";
x = (0:M-1);

Modulate the data.

y = dvbsapskmod(x,M,stdSuffix);

Display the constellation using a scatter plot.

scatterplot(y)

Figure Scatter Plot contains an axes object. The axes object with title Scatter plot, xlabel In-Phase, ylabel Quadrature contains a line object which displays its values using only markers. This object represents Channel 1.

Modulate data using 16-APSK as specified in DVB-S2 standard. Plot constellation for different code identifiers.

Set the modulation order and standard suffix. Generate 1000 symbols of random data in one channel.

M = 16;
std = "s2";
x = randi([0 M-1],1000,1);

Modulate the data according to the 16-APSK constellation for the code identifier 5/6 and plot the reference constellation.

y1 = dvbsapskmod(x,M,std,"5/6",PlotConstellation=true);

Figure contains an axes object. The axes object with title DVB-S2 16(4+12)-APSK with Code Rate 5/6, UnitAveragePower=false, xlabel In-phase Amplitude, ylabel Quadrature Amplitude contains 19 objects of type line, text. One or more of the lines displays its values using only markers

Modulate setting the code identifier to 9/10 and observe the constellation structure differences.

y2 = dvbsapskmod(x,M,std,"9/10",PlotConstellation=true);

Figure contains an axes object. The axes object with title DVB-S2 16(4+12)-APSK with Code Rate 9/10, UnitAveragePower=false, xlabel In-phase Amplitude, ylabel Quadrature Amplitude contains 19 objects of type line, text. One or more of the lines displays its values using only markers

Modulate data applying 16-APSK as specified in the DVB-SH and DVB-S2 standards. Normalize the modulator output so that it has an average signal power of 1 W.

Set the modulation order and generate all possible symbols.

M = 16;
x = 0:M-1;

Modulate the data applying 16-APSK as specified in DVB-SH. Use a name-value pair to specify single data type output.

y1 = dvbsapskmod(x,M,"sh", ...
    OutputDataType="single"');

Modulate the data applying 16-APSK as specified in DVB-S2. Use a name-value pair to specify single data type output.

y2 = dvbsapskmod(x,M,"s2", ...
    OutputDataType="single");

Modulate the data applying 16-APSK as specified in DVB-S2. Use name-value pairs to set unit average power to true and to specify single data type output.

y3 = dvbsapskmod(x,M,"s2", ...
    UnitAveragePower=true, ...
    OutputDataType="single");

Check which signals have unit average power.

y1avgPow = mean(abs(y1).^2)
y1avgPow = single

1
y2avgPow = mean(abs(y2).^2)
y2avgPow = single

0.7752
y3avgPow = mean(abs(y3).^2)
y3avgPow = single

1.0000

Input Arguments

collapse all

Input signal, specified as a scalar, vector, or matrix. The elements of X must be binary values or integers in the range [0, M – 1], where M is the modulation order.

Note

To process the input signal as binary elements, set InputType argument value to "bit". For binary inputs, the number of rows must be an integer multiple of log2(M). A group of log2(M) bits in a column are mapped onto a symbol, with the first bit representing the MSB and the last bit representing the LSB.

Data Types: double | single | int8 | int16 | int32 | uint8 | uint16 | uint32 | logical

Modulation order, specified as a positive integer power of two. The modulation order specifies the total number of points in the signal constellation.

Data Types: double

Standard suffix for DVBS modulation variant, specified as "s2", "s2x", or "sh".

Code identifier, specified as a character vector or string. This table lists the acceptable code identifier values.

Modulation Order (M)Applicable Standard (stdSuffix)Acceptable Code Identifier (CodeIDF) Values
16

"s2" or "s2x"

"2/3", "3/4", "4/5", "5/6", "8/9", "9/10"

16

"s2x"

"26/45", "3/5", "28/45", "23/36", "25/36", "13/18", "7/9", "77/90", "100/180", "96/180", "90/180", "18/30", "20/30"

32

"s2" or "s2x"

"3/4", "4/5", "5/6", "8/9", "9/10"

32

"s2x"

"32/45", "11/15", "7/9", "2/3"

64

"s2x"

"11/15", "7/9", "4/5", "5/6", "128/180"

128

"s2x"

"3/4", "7/9"

256

"s2x"

"32/45", "3/4", "116/180", "20/30", "124/180", "22/30"

For more information, refer to Tables 9 and 10 in the DVB-S2 standard [1] and Table 17a in the DVB-S2X standard [2].

Dependencies

This input argument applies only when stdSuffix argument is set to "s2" or "s2x".

Frame length, specified as "normal" or "short". The function uses frameLength and codeIDF arguments to select the modulation parameters.

Dependencies

This input argument applies only when stdSuffix argument is set to "s2" or "s2x".

Name-Value Arguments

Specify optional pairs of arguments as Name1=Value1,...,NameN=ValueN, where Name is the argument name and Value is the corresponding value. Name-value arguments must appear after other arguments, but the order of the pairs does not matter.

Example: Y = dvbsapskmod(X,M,std,InputType="bit") sets the input type of the signal as bits.

Input type, specified as "integer" or "bit". To use "integer", the input signal must consist of integer values in the range [0, M – 1]. M is the modulation order argument value. To use "bit", the input signal must contain binary values and the number of rows must be an integer multiple of log2(M).

Data Types: char | string

Unit average power flag, specified as logical 0 (false) or 1 (true).

  • When this flag is true, the function scales the constellation to an average power of 1 watt referenced to 1 ohm.

  • When this flag is false, the function scales the constellation based on specifications in the relevant standard, as described in [1] and [2].

Note

When you set stdSuffix argument to "sh", the constellation always has unit average power.

Dependencies

This argument applies only when stdSuffix argument is set to "s2" or "s2x".

Data Types: logical

Output data type, specified as "double" or "single".

Option to plot constellation, specified as logical 0 (false) or 1 (true). To plot the constellation, set PlotConstellation to true.

Data Types: logical

Output Arguments

collapse all

Modulated signal, returned as a complex scalar, vector, or matrix. The dimensions of Y depend on the specified InputType argument value. Specify the data type of the output with OutputDataType argument.

'InputType' ValueDimensions of Output
"integer"Y has the same dimensions as input X.
"bit"The number of rows in Y equals the number of rows in X divided by log2(M).

Data Types: double | single

More About

collapse all

DVB-S2/S2X/SH

Digital video broadcasting (DVB) standards specify S2, S2X, and SH standard-specific amplitude phase shift keying (APSK) modulation. For further information on the DVB-S2/S2X/SH standards, see specified in [1], [2], and [3], respectively.

References

[1] ETSI Standard EN 302 307 V1.4.1: Digital Video Broadcasting (DVB); Second generation framing structure, channel coding and modulation systems for Broadcasting, Interactive Services, News Gathering and other broadband satellite applications (DVB-S2), European Telecommunications Standards Institute, Valbonne, France, 2005-03.

[2] ETSI Standard EN 302 307 V1.4.1: Digital Video Broadcasting (DVB); Second generation framing structure, channel coding and modulation systems for Broadcasting, Interactive Services, News Gathering and other broadband satellite applications (DVB-S2), European Telecommunications Standards Institute, Valbonne, France, 2005-03.

[3] ETSI Standard EN 302 583 V1.1.1: Digital Video Broadcasting (DVB); Framing structure, channel coding and modulation for Satellite Services to Handheld devices (SH), European Telecommunications Standards Institute, Valbonne, France, 2008-03.

Extended Capabilities

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

Version History

Introduced in R2018a

expand all