Documentation

comm.DPSKDemodulator

Demodulate using M-ary DPSK method

Description

The `DPSKDemodulator` object demodulates a signal that was modulated using the M-ary differential phase shift keying method. The input is a baseband representation of the modulated signal. The input and output for this object are discrete-time signals. This object accepts a scalar-valued or column vector input signal.

To demodulate a signal that was modulated using differential phase shift keying:

1. Define and set up your DPSK modulator object. See Construction.

2. Call `step` to demodulate a signal according to the properties of `DPSKDemodulator`. The behavior of `step` is specific to each object in the toolbox.

Note

Starting in R2016b, instead of using the `step` method to perform the operation defined by the System object™, you can call the object with arguments, as if it were a function. For example, ```y = step(obj,x)``` and `y = obj(x)` perform equivalent operations.

Construction

`H = comm.DPSKDemodulator` creates a demodulator System object, `H`. This object demodulates the input signal using the M-ary differential phase shift keying (M-DPSK) method.

`H = comm.DPSKDemodulator(Name,Value)` creates an M-DPSK demodulator object, `H`, with each specified property set to the specified value. You can specify additional name-value pair arguments in any order as (`Name1`,`Value1`,...,`NameN`,`ValueN`).

`H = comm.DPSKDemodulator(M,PHASE,Name,Value)` creates an M-DPSK demodulator object, `H`. This object has the `ModulationOrder` property set to `M`, the `PhaseRotation` property set to `PHASE`, and the other specified properties set to the specified values.

Properties

 `ModulationOrder` Number of points in signal constellation Specify the number of points in the signal constellation as a positive, integer scalar value. The default is `8`. `PhaseRotation` Additional phase shift Specify the additional phase difference between previous and current modulated symbols in radians as a real scalar value. The default is `pi/8`. This value corresponds to the phase difference between previous and current modulated symbols when the input is zero. `BitOutput` Output data as bits Specify whether the output consists of groups of bits or integer symbol values. The default is `false`. When you set this property to `true` the `step` method outputs a column vector of bit values. The length of this column vector is equal to log2(`ModulationOrder`) times the number of demodulated symbols. When you set this property to `false`, the `step` method outputs a column vector. The length of this column vector is equal to that of the input data vector. The output contains integer symbol values between `0` and `ModulationOrder`-`1`. `SymbolMapping` Constellation encoding Specify how the object maps an integer or group of log2(`ModulationOrder`) bits to the corresponding symbol as one of `Binary` | `Gray`. The default is `Gray`. When you set this property to `Gray`, the object uses a Gray-encoded signal constellation. When you set this property to `Binary`, the input integer m, between ($0\le m\le$ `ModulationOrder`–1) maps to the current symbol. This mapping uses exp(j$×$`PhaseRotation` + j$×$$2×\pi ×$m/ModulationOrder)$×$(previously modulated symbol). `OutputDataType` Data type of output Specify the output data type as one of `Full precision` | ```Smallest unsigned integer``` | `double` | `single` | `int8` | `uint8` | `int16` | `uint16` | `int32` | `uint32`. The default is `Full precision`. When you set this property to ```Full precision```, the input data type is single or double precision, the output data is the same as that of the input. When you set the `BitOutput` property to true, `logical` data type becomes a valid option.

Methods

 reset Reset states of M-DPSK demodulator object step Demodulate using M-ary DPSK method
Common to All System Objects
`release`

Allow System object property value changes

Examples

expand all

Create a DPSK modulator and demodulator pair. Create an AWGN channel object having three bits per symbol.

```dpskmod = comm.DPSKModulator(8,pi/8,'BitInput',true); dpskdemod = comm.DPSKDemodulator(8,pi/8,'BitOutput',true); channel = comm.AWGNChannel('EbNo',10,'BitsPerSymbol',3);```

Create an error rate calculator. Set the `ComputationDelay` property to `1` to account for the one bit transient caused by the differential modulation

`errorRate = comm.ErrorRate('ComputationDelay',1);`

Main processing loop steps:

• Generate 50 3-bit frames

• 8-DPSK modulate

• Pass through AWGN channel

• 8-DPSK demodulate

• Collect error statistics

```for counter = 1:100 txData = randi([0 1],150,1); modSig = dpskmod(txData); rxSig = channel(modSig); rxData = dpskdemod(rxSig); errorStats = errorRate(txData,rxData); end```

Display the error statistics.

`ber = errorStats(1)`
```ber = 0.0098 ```
`numErrors = errorStats(2)`
```numErrors = 147 ```
`numBits = errorStats(3)`
```numBits = 14999 ```

Algorithms

This object implements the algorithm, inputs, and outputs described on the M-DPSK Demodulator Baseband block reference page. The object properties correspond to the block parameters.