dvbsapskdemod

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

Syntax

z = dvbsapskdemod(y,M,stdSuffix)
z = dvbsapskdemod(y,M,stdSuffix,codeIDF)
z = dvbsapskdemod(y,M,stdSuffix,codeIDF,frameLength)
z = dvbsapskdemod(___,Name,Value)

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) 

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 Pair 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: 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. This table compares these algorithms.

AlgorithmAccuracyExecution Speed
Exact LLRmore accurateslower execution
Approximate LLRless accuratefaster execution

For further description of these algorithms, see Exact LLR Algorithm and Approximate LLR Algorithm.

Note

The exact LLR algorithm computes exponentials using finite precision arithmetic. Computation of exponentials with very large positive or negative magnitudes might yield:

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

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

When the output returns any of these values, try using the approximate LLR algorithm because it does not compute exponentials.

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

Introduced in R2018a