Main Content

dvbsapskdemod

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

Description

example

z = dvbsapskdemod(y,M,stdSuffix) demodulates an APSK input signal, y, that was modulated in accordance with the digital video broadcast (DVB) standard identified by stdSuffix and the modulation order, M. For a description of DVB-compliant APSK demodulation, see DVB Compliant APSK Hard Demodulation and DVB Compliant APSK Soft Demodulation.

z = dvbsapskdemod(y,M,stdSuffix,codeIDF) specifies code identifier codeIDF, to use when selecting the demodulation parameters.

z = dvbsapskdemod(y,M,stdSuffix,codeIDF,frameLength) specifies codeIDF and frameLength to use when selecting the demodulation parameters.

example

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

Examples

collapse all

Demodulate a 64-APSK signal that was modulated as specified in DVB-S2X. Compute hard decision integer output and verify that the output matches the input.

Set the modulation order and standard suffix. Generate random data.

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

Modulate the data.

y = dvbsapskmod(x,M,std);

Demodulate the received signal. Compare the demodulated data to the original data.

z = dvbsapskdemod(y,M,std);
isequal(z,x)
ans = logical
   1

Demodulate a 32-APSK signal that was modulated as specified in DVB-S2. Compute hard decision bit output and verify that the output matches the input.

Set the modulation order, standard suffix, and code identifier. Generate random bit data.

M = 32;
std = 's2';
codeIDF = '4/5';
numBitsPerSym = log2(M);
x = randi([0 1],100*numBitsPerSym,1,'uint32');

Modulate the data. Use a name-value pair to specify bit input data.

y = dvbsapskmod(x,M,std,codeIDF,'InputType','bit');

Demodulate the received signal. Compare the demodulated data to the original data.

z = dvbsapskdemod(y,M,std,'4/5','OutputType','bit', ...
    'OutputDataType','uint32');
isequal(z,x)
ans = logical
   1

Demodulate a DVB-SH compliant 16-APSK signal and calculate soft bits.

Set the modulation order and generate a random bit sequence.

M = 16;
std = 'sh';
numSym = 20000;
numBitsPerSym = log2(M);
x = randi([0 1],numSym*numBitsPerSym,1);

Modulate the data. Use a name-value pair to specify bit input data.

txSig = dvbsapskmod(x,M,std,'InputType','bit');

Pass the modulated signal through a noisy channel.

rxSig = awgn(txSig,10,'measured');

View the constellation of the received signal using a scatter plot.

scatterplot(rxSig) 

Figure Scatter Plot contains an axes object. The axes object with title Scatter plot contains an object of type line. This object represents Channel 1.

DVB-SH compliant constellations have unit average power. Demodulate the signal, computing soft bits using the approximate LLR algorithm.

z = dvbsapskdemod(rxSig,M,std,'OutputType','approxllr', ...
     'NoiseVariance',0.1);

Input Arguments

collapse all

APSK modulated signal, specified as a complex scalar, vector, or matrix. When y is a matrix, each column is treated as an independent channel.

y must be modulated in accordance with Digital Video Broadcasting (DVB) - Satellite Communications standard DVB-S2, DVB-S2X or DVB-SH. For more information, see [1], [2], and [3].

Data Types: single | double
Complex Number Support: Yes

Modulation order, specified as a 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 's2h'.

Data Types: char | string

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

Data Types: char | string

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

Dependencies

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

Data Types: char | string

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.

Before R2021a, use commas to separate each name and value, and enclose Name in quotes.

Example: y = dvbsapskdemod(x,M,stdSuffix,'InputType','bit','OutputDataType','single');

Output type, specified as the comma-separated pair consisting of OutputType and 'integer', 'bit', 'llr', or 'approxllr'. For a description of returned output, see z.

Data Types: char | string

Output data type, specified as the comma-separated pair consisting of OutputDataType and one of the indicated data types. Acceptable values for OutputDataType depend on the OutputType value.

OutputType ValueAcceptable OutputDataType Values
'integer''double', 'single', 'int8', 'int16', 'int32', 'uint8', 'uint16', or 'uint32'
'bit''double', 'single', 'int8', 'int16', 'int32', 'uint8', 'uint16', 'uint32', or 'logical'

Dependencies

This name-value pair argument applies only when OutputType is set to 'integer' or 'bit'.

Data Types: char | string

Unit average power flag, specified as the comma-separated pair consisting of UnitAveragePower and a logical scalar. 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 stdSuffix is set to 'sh', the constellation always has unit average power.

Dependencies

This name-value pair argument applies only when stdSuffix is set to 's2' or 's2x'.

Data Types: logical

Noise variance, specified as the comma-separated pair consisting of NoiseVariance and a positive scalar or vector of positive values.

  • When specified as a scalar, the same noise variance value is used on all input elements.

  • When specified as a vector, the vector length must be equal to the number of columns in the input signal.

When the noise variance or signal power result in computations involving extreme positive or negative magnitudes, see DVB Compliant APSK Soft Demodulation for algorithm selection considerations.

Dependencies

This name-value pair argument applies only when OutputType is set to 'llr' or 'approxllr'.

Data Types: double

Option to plot constellation, specified as the comma-separated pair consisting of 'PlotConstellation' and a logical scalar. To plot the constellation, set PlotConstellation to true.

Data Types: logical

Output Arguments

collapse all

Demodulated signal, returned as a scalar, vector, or matrix. The dimensions of the output vary depending on the specified OutputType value.

OutputType ValueReturn Value of dvbsapskdemodDimensions of z
'integer'Demodulated integer values from 0 to (M – 1)z has the same dimensions as input y.
'bit'Demodulated bitsThe number of rows in z is log2(sum(M)) times the number of rows in y. Each demodulated symbol is mapped to a group of log2(sum(M)) elements in a column, where the first element represents the MSB and the last element represents the LSB.
'llr'Log-likelihood ratio value for each bit
'approxllr'Approximate log-likelihood ratio value for each bit

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.

DVB Compliant APSK Hard Demodulation

The hard demodulation algorithm applies amplitude phase decoding as described in [4].

DVB Compliant APSK Soft Demodulation

For soft demodulation, two soft-decision log-likelihood ratio (LLR) algorithms are available: exact LLR and approximate LLR. The exact LLR algorithm is more accurate but has slower execution speed than the approximate LLR algorithm. For further description of these algorithms, see the Soft-Decision Demodulation topic.

Note

The exact LLR algorithm computes exponentials using finite precision arithmetic. For computations involving very large positive or negative magnitudes, the exact LLR algorithm yields:

  • Inf or -Inf if the noise variance is a very large value

  • NaN if the noise variance and signal power are both very small values

The approximate LLR algorithm does not compute exponentials. You can avoid Inf, -Inf, and NaN results by using the approximate LLR algorithm.

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.

[4] Sebesta, J. “Efficient Method for APSK Demodulation.” Selected Topics on Applied Mathematics, Circuits, Systems, and Signals (P. Pardalos, N. Mastorakis, V. Mladenov, and Z. Bojkovic, eds.). Vouliagmeni, Athens, Greece: WSEAS Press, 2009.

Extended Capabilities

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

Version History

Introduced in R2018a