# comm.DPSKModulator

Modulate using M-ary DPSK method

## Description

The `DPSKModulator` object modulates using the M-ary differential phase shift keying method. The output is a baseband representation of the modulated signal.

To modulate a signal using differential phase shift keying:

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

2. Call `step` to modulate a signal according to the properties of `comm.DPSKModulator`. 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.DPSKModulator` creates a modulator System object, `H`. This object modulates the input signal using the M-ary differential phase shift keying (M-DPSK) method.

`H = comm.DPSKModulator(Name,Value)` creates an M-DPSK modulator 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.DPSKModulator(M,PHASE,Name,Value)` creates an M-DPSK modulator 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. `BitInput` Assume bit inputs Specify whether the input is bits or integers. The default is `false`. When you set this property to `true`, the `step` method input must be a column vector of bit values whose length is an integer multiple of log2(`ModulationOrder`). This vector contains bit representations of integers between `0` and `ModulationOrder`–`1`. When you set this property to `false`, the `step` method input requires a column vector of integer symbol values between `0` and `ModulationOrder`–`1`. `SymbolMapping` Constellation encoding Specify how the object maps an integer or group of log2(`ModulationOrder`) input 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) shifts the output phase. This shift is (`PhaseRotation` + $2×\pi ×$m/`ModulationOrder`) radians from the previous output phase. The output symbol uses exp(j$×$`PhaseRotation` + j$×$$2×\pi ×$m/ModulationOrder)$×$(previously modulated symbol). `OutputDataType` Data type of output Specify output data type as one of `double` | `single`. The default is `double`.

## Methods

 step Modulate using M-ary DPSK method
Common to All System Objects
`release`

Allow System object property value changes

`reset`

Reset internal states of System object

## Examples

collapse 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 Modulator Baseband block reference page. The object properties correspond to the block parameters.

## Version History

Introduced in R2012a