Main Content

dvbsapskmod

DVB-S2/S2X/SH standard-specific amplitude phase shift keying (APSK) modulation

Description

example

Y = dvbsapskmod(X,M,stdSuffix) performs APSK modulation on the input signal, X, in accordance with the digital video broadcast (DVB) 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.

example

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

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)

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

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

M = 64;
std = 's2x';
x = randi([0 M-1],1000,1);

Modulate the data according to the 64-APSK constellation for the code identifier 7/9 and plot the reference constellation.

y1 = dvbsapskmod(x,M,std,'7/9',PlotConstellation=true);

Modulate setting the code identifier to 132/180 and observe the constellation structure differences.

y2 = dvbsapskmod(x,M,std,'132/180',PlotConstellation=true);

Modulate data using 16-APSK as specified in DVB-S2 standard for normal and short frame lengths. Compute the output signal power.

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

M = 16;
std = 's2';
x = randi([0 1],1000*log2(M),1);

Set the input type to bit and modulate the data according to the 16-APSK constellation for code identifier 2/3. Use the default normal frame length.

y1 = dvbsapskmod(x,M,std,'2/3',InputType='bit');

Modulate the data using different settings, set the code-identifier to 8/9 and use a short frame length.

y2 = dvbsapskmod(x,M,std,'8/9','short',InputType='bit');

The average power of the modulated signal changes based on the code identifier. Compute the average power of the modulated signals.

y1avgPow = mean(abs(y1).^2)
y1avgPow = 0.7590
y2avgPow = mean(abs(y2).^2)
y2avgPow = 0.7716

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' 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 codeIDF values.

Constellation 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 is set to 's2' or 's2x'.

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

Dependencies

This input argument applies only when stdSuffix 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',OutputDataType='single');

Input type, specified as 'integer' or 'bit'. To use 'integer', the input signal must consist of integer values in the range [0, M – 1]. 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 to 'sh', the constellation always has unit average power.

Dependencies

This argument applies only when stdSuffix 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' value. Specify the data type of the output with OutputDataType.

'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-2 V1.1.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-S2X), European Telecommunications Standards Institute, Valbonne, France, 2015-02.

[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