MIL188 QAM Demodulator Baseband
MILSTD188110 B/C standardspecific quadrature amplitude demodulation
Libraries:
Communications Toolbox /
Modulation /
Digital Baseband Modulation /
AM
Communications Toolbox /
Modulation /
Digital Baseband Modulation /
StandardCompliant
Description
The MIL188 QAM Demodulator Baseband block demodulates the input signal using MILSTD188110 standardspecific quadrature amplitude modulation (QAM). For a description of MILSTD188 compliant demodulation, see MILSTD188110 QAM Hard Demodulation and MILSTD188110 QAM Soft Demodulation.
This icon shows the block with all ports enabled:
Examples
Demodulate Noisy MILSTD188 QAM Signal
Apply MILSTD188 QAM modulation to a signal of random data. Pass the modulated signal through an AWGN channel. Demodulate the noisy MILSTD188 QAM signal. Check the bit error rate (BER).
Run the slex_mil188_qam_demod
model with the EbN0 of the AWGN channel block set to 6 dB. The results are saved to the base workspace variable ErrorVec
in a 1by3 row vector. The first element contains the BER.
With EbN0 set to 6 dB, BER: 0.636
Change the EbN0 of the AWGN channel block to 10 dB. Run the model and observe the decrease in BER.
With EbN0 set to 10 dB, BER: 0.545
Ports
Input
In — MILSTD188 standardspecific QAM modulated signal
scalar  vector  matrix
MILSTD188 standardspecific QAM modulated signal, specified as a
scalar, vector, or matrix. When this input is a matrix, each column is
treated as an independent channel. This port is unnamed until the
Var
port is enabled.
Data Types: double
 single
Complex Number Support: Yes
Var — Noise variance
positive scalar  vector of positive values
Noise variance, specified as a positive scalar or vector of positive values. When the noise variance or signal power result in computations involving extreme positive or negative magnitudes, see MILSTD188110 QAM Soft Demodulation for demodulation decision type considerations.
Dependencies
To enable this port set the Noise variance source parameter to
Input port
.
Output
Out — Demodulated signal
scalar  vector  matrix
Demodulated signal, returned as a scalar, vector, or matrix. The dimensions of the demodulated signal depend on the specified Output type and Decision type parameter values. This port is unnamed on the block.
Output type  Decision type  Demodulated Signal Description  Dimensions of Demodulated Signal 

Integer  —  Demodulated integer values in the range [0, (M – 1)]  The output signal has the same dimensions as input signal. 
Bit  Hard decision  Demodulated bits  The number of rows in the output signal is log_{2}(M) times the number of rows in the input signal. Each demodulated symbol is mapped to a group of log_{2}(M) elements in a column, where the first element represents the MSB, and the last element represents the LSB. 
Loglikelihood
ratio  Loglikelihood ratio value for each bit  
Approximate loglikelihood
ratio  Approximate loglikelihood ratio value for each bit  
M is the value of Modulation order. 
Use Output data type to specify the output data type.
Parameters
To edit block parameters interactively, use the Property Inspector. From the Simulink^{®} Toolstrip, on the Simulation tab, in the Prepare gallery, select Property Inspector.
Modulation order — Modulation order
16
(default)  32
 64
 256
Modulation order, M, specified as
16
, 32
,
64
, or 256
. The
modulation order specifies the total number of points in the constellation
of the input signal.
Constellation scaling — Constellation scaling
As specified in
standard
(default)  Unit average power
Constellation scaling preference, specified as:
As specified in standard
– The block scales the constellation based on specifications in the relevant standard [1].Unit average power
– The block scales the constellation to an average power of 1 watt referenced to 1 ohm.
Output type — Input type
Integer
(default)  Bit
Output type, specified as Integer
or
Bit
. To use
Integer
, the input signal must consist of
integers 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 log_{2}(M), where M is the Modulation
order.
Decision type — Demodulation decision type
Hard decision
(default)  Loglikelihood ratio
 Approximate loglikelihood ratio
Demodulation decision type, specified as Hard
decision
, Loglikelihood ratio
,
or Approximate loglikelihood ratio
. See MILSTD188110 QAM Soft Demodulation for
algorithm selection considerations.
Dependencies
This parameter applies when you set Output
type to Bit
.
Noise variance source — Noise variance source
Property
(default)  Input port
Noise variance source, specified as:
Property
— Set the noise variance using the Noise variance parameter.Input port
— Set the noise variance using the Var input port.
Dependencies
This parameter applies when you set Decision type to either Loglikelihood
ratio
or Approximate loglikelihood
ratio
.
Noise variance — Noise variance
1
(default)  positive scalar  vector of positive values
Noise variance, specified as a positive scalar or vector of positive values.
When specified as a scalar, that value is used on all elements in the input signal.
When specified as a vector, the vector length must be equal to the number of columns in the input signal. Each noise variance vector element is applied to its corresponding column in the input signal.
When the noise variance or signal power result in computations involving extreme positive or negative magnitudes, see MILSTD188110 QAM Soft Demodulation for demodulation decision type considerations.
Dependencies
This parameter applies when you set Noise
variance to Property
and
Decision type to either Loglikelihood
ratio
or Approximate loglikelihood
ratio
.
Output data type — Output data type
double
(default)  ...
Output data type, specified as one of the acceptable values from this table. Acceptable Output data type values depend on the Output type and Decision type parameter values.
Output type  Decision type  Output data type Options 

Integer  Not applicable  double ,
single ,
int8 ,
uint8 ,
int16 ,
uint16 ,
int32 , or
uint32 
Bit  Hard decision  double ,
single ,
int8 ,
uint8 ,
int16 ,
uint16 ,
int32 ,
uint32 , or
logical 
Loglikelihood ratio or
Approximate loglikelihood
ratio  The output signal is the same data type as the input signal. 
Dependencies
This parameter applies when you set Output
type to Integer
or when you
set Output
type to Bit
and Decision type to Hard
decision
.
Simulate using — Type of simulation to run
Interpreted execution
(default)  Code generation
Type of simulation to run, specified as Interpreted
execution
or Code generation
.
Interpreted execution
— Simulate the model by using the MATLAB^{®} interpreter. This option requires less startup time, but the speed of subsequent simulations is slower than with theCode generation
option. In this mode, you can debug the source code of the block.Code generation
— Simulate the model by using generated C code. The first time you run a simulation, Simulink generates C code for the block. The model reuses the C code for subsequent simulations unless the model changes. This option requires additional startup time, but the speed of the subsequent simulations is faster than with theInterpreted execution
option.
For more information, see Simulation Modes (Simulink).
Block Characteristics
Data Types 

Multidimensional Signals 

VariableSize Signals 

More About
MILSTD188110
MILSTD188110 is a US Department of Defense standard for HF communications using serial PSK mode of both data and voice signals.
The standard specifies physical layer modulation schemes for tactical and longhaul communications. The modulation scheme specified by the standard is a mix of QAM and APSK. For a detailed description of the modulation scheme, see [1].
MILSTD188110 QAM Hard Demodulation
The hard demodulation algorithm uses optimum decision regionbased demodulation. Since all the constellation points are equally probable, maximum a posteriori probability (MAP) detection reduces to a maximum likelihood (ML) detection. The ML detection rule is equivalent to choosing the closest constellation point to the received symbol. The decision region for each constellation point is designed by drawing perpendicular bisectors between adjacent points. A received symbol is mapped to the proper constellation point based on which decision region it lies in.
Since all MILSTD constellations are quadrantbased symmetric, for each symbol the optimum decision regionbased demodulation:
Maps the received symbol into the first quadrant
Chooses the decision region for the symbol
Maps the constellation point back to its original quadrant using the sign of real and imaginary parts of the received symbol
MILSTD188110 QAM Soft Demodulation
For soft demodulation, two softdecision loglikelihood 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 Hard vs. SoftDecision 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
orInf
if the noise variance is a very large valueNaN
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.
Tips
For faster execution of the MIL188 QAM Demodulator Baseband block, set the Simulate using parameter to:
Code generation
when using hard decision demodulation.Interpreted execution
when using soft decision demodulation.
References
[1] MILSTD188110B & C: "Interoperability and Performance Standards for Data Modems." Department of Defense Interface Standard, USA.
Extended Capabilities
C/C++ Code Generation
Generate C and C++ code using Simulink® Coder™.
Version History
Introduced in R2018b
See Also
Blocks
Functions
Open Example
You have a modified version of this example. Do you want to open this example with your edits?
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
 América Latina (Español)
 Canada (English)
 United States (English)
Europe
 Belgium (English)
 Denmark (English)
 Deutschland (Deutsch)
 España (Español)
 Finland (English)
 France (Français)
 Ireland (English)
 Italia (Italiano)
 Luxembourg (English)
 Netherlands (English)
 Norway (English)
 Österreich (Deutsch)
 Portugal (English)
 Sweden (English)
 Switzerland
 United Kingdom (English)