How to soft decode DQPSK?

I'm successfully soft-decoding D-BPSK by taking the dot-product of the constellation-position of the symbol and of the previous symbol. If the result is >= 1, then the symbol phase hasn't changed and the bit is a zero. If the result is <= -1 then the phase has shifted and the result is a one. In between -1 and 1 the result is a soft 0 or soft 1.

I can't figure out how to do the same thing with D-QPSK. I can use just the phase, but this throws away a lot of information that could help the soft-decoder.

This paper explains how to do it and gives a formula (10):

$b_1 = \mathrm{Re}\{s_n s^*_{n-1}\}, b_2 = \mathrm{Im}\{s_n s^*_{n-1}\}$

But I don't understand the notation — what does a * floating above mean? I tried just multiplying the complex numbers and taking the real and imaginary parts but this didn't work.

Since the constellation can rotate, how can the two axes be teased apart?

• Can you add the math you are using for the "dot-produce of the constellation of the symbol and of the previous symbol". Mar 1 '13 at 12:36
• Sure, it's: last_symbol.realcur_symbol.real+last_symbol.imagcur_symbol.imag Mar 1 '13 at 12:46
• Regrettably, the data bits $b_1$ and $b_2$ cannot be estimated using the formula (10) given above. In DQPSK, one of $\mathrm{Re}\{s_n s^*_{n-1}\}$ and $\mathrm{Im}\{s_n s^*_{n-1}\}$ is large in magnitude, and the other is small in magnitude. Which one has the large magnitude tells you whether the data bits are going to work out to be one of $\{00, 11\}$ or one of $\{01,10\}$. The sign of the large magnitude tells you which of one of the two choices is the right one. That is, the large magnitude tells you which pair of dibits, and the sign tells you which one of the two dibits. Mar 4 '13 at 22:10
• @DilipSarwate, I got the formula above working, but I had to precode the data in some seemingly arbitrary way to get the correct results. The way I precoded it may or may not be equivalent to: shf.de/communication/support/application_notes/getfile/230/269 If I only use the larger magnitude I don't end up with information appropriate for soft-decoding -- since 00 and 11 are opposite (rather than adjacent codes) it is not helpful to have a soft measure between the two. Perhaps I have missed something? Should I start a new question about DQPSK precoders? Mar 5 '13 at 10:03

Two successive symbols in the demodulator are $$Z_1 = (X_1,Y_1)$$ and $$Z_2 =(X_2,Y_2)$$ where $$X$$ is the output of the I branch and $$Y$$ the output of the Q branch of the receiver. The hard-decision DBPSK decision device considers the question:

Is the new symbol $$Z_2$$ closer to the old symbol $$Z_1$$ or to the negative $$-Z_1$$ of the old symbol?

and thus compares

$$(X_2-X_1)^2 + (Y_2-Y_1)^2 \gtrless (X_2+X_1)^2 + (Y_2+Y_1)^2$$

which can be simplified to a sign comparison on $$\langle Z_1,Z_2\rangle = X_1X_2+Y_1Y_2$$. Note that this is essentially asking

Are the two vectors $$Z_1$$ and $$Z_2$$ are pointing in roughly the same direction (in which case the inner product or dot product is positive) or in roughly opposite direction (in which case the dot product is negative)?

A third viewpoint thinks of $$Z_1$$ and $$Z_2$$ as complex numbers and asks

Is $$\text{Re}(Z_1Z_2^*) = X_1X_2+Y_1Y_2$$ positive or negative?

The soft decision decision device simply passes on the exact value of the dot product to the soft decision decoder which may opt to quantize dot products that are very large in magnitude into hard decisions and continue waffling on the rest. This is what the decision rule stated in the OP's question is, where large is taken as exceeding $$1$$ in magnitude.

In DQPSK, the encoding uses one of two conventions:

• the signal phase is delayed by $$0, \pi/2, \pi, 3\pi/2$$ according as the dibit to be transmitted is $$00, 01, 11, 10$$

• the signal phase is advanced by $$0, \pi/2, \pi, 3\pi/2$$ according as the dibit to be transmitted is $$00, 01, 11, 10$$

Note that a DQPSK signal is not the sum of two DBPSK signals modulated on phase-orthogonal carriers, but the I and Q bits jointly affect the net carrier phase.

For demodulating a DQPSK signal, the decision device needs to ask

Which of the four symbols $$Z_1,\quad jZ_1 = (-Y_1,X_1),\quad -Z_1,\quad -jZ_1 = (Y_1,-X_1)$$ is $$Z_2$$ closest to?

Thus, in addition to the comparison

$$(X_2-X_1)^2 + (Y_2-Y_1)^2 \gtrless (X_2+X_1)^2 + (Y_2+Y_1)^2$$

it is necessary to compare

$$(X_2+Y_1)^2 + (Y_2-X_1)^2 \gtrless (X_2-Y_1)^2 + (Y_2+X_1)^2$$

which works out to looking at $$\text{Im}(Z_1Z_2^*)$$ in addition to $$\text{Re}(Z_1Z_2^*)$$ and making the decision according as which quantity has the largest magnitude and the sign of the largest magnitude. The details of how the soft-decision decoder uses the decision statistic $$Z_1Z_2^* = (\text{Re}(Z_1Z_2^*), \text{Im}(Z_1Z_2^*))$$ will determine how these numbers are further massaged.

• Thanks for the very complex answer Dilip. Is $\langle Z_1,Z_1\rangle$ a typo? Should it be $\langle Z_1,Z_2\rangle$? And does the $\langle A,B\rangle$ notation mean dot-product? Mar 2 '13 at 9:50
• Hah, I meant the very thorough answer! :) Mar 2 '13 at 9:56
• Yes, it is a typo, and I have corrected it. $\langle A,B\rangle$ notation is commonly used to denote inner product in general of which dot product is a special case. Mar 2 '13 at 12:27
• if I only look at which quantity has the largest magnitude it seems that I am throwing away information. As an example, the imaginary part determines whether the rotation is 0 or 180 degrees. But a soft measure between these two is not meaningful since they are not adjacent rotations (like 0 and 90). Any idea how to get a more useful soft decoding? The paper seems misleading since it claims that the first bit is the Real part and the second bit is the imaginary part. Mar 3 '13 at 20:53

The asterisk refers to a complex conjugate. One typical method for soft decoding of differential modulations is the delay, conjugate, multiply technique:

$$S_i = D_i D_{i-1}^*$$

where $D_i$ and $D_{i-1}$ are two consecutive differentially-encoded symbols and $S_i$ is the differentially-decoded result. This general formula will work for DBPSK or DQPSK (since BPSK signals are real, the conjugate just drops out). The resulting signal stream $S_i$ lies on the same constellation as the input, so you can make hard decisions using the same rules you would for normal BPSK or QPSK.

• Thanks Jason. I did try multiplying by the complex conjugate before posting but I didn't now how to interpret the result. Since I don't know the rotation of the constellation, how do I get to a mapping like I mentioned in the question for DBPSK? Mar 1 '13 at 14:10
• I looked at the results of your suggestion and it seems like the imaginary part maps to either a 0 degree or 180 degree rotation while the real part maps to a 90 or 270 degree rotation. When the data is clean (no noise) one part (real or imaginary) is 0 while the other is -1 or 1. How do I soft-decode this to bits when the data isn't clean and the mappings aren't so ideal? Mar 1 '13 at 14:22
• @JasonR I don't think that the $S_i=D_iD_{i-1}^*$ "lies on the same constellation as the input" and the hard decisions for DQPSK do not follow the same rules as hard decisions for QPSK. Mar 1 '13 at 17:19
• @DilipSarwate: I could have been more detailed in my answer, but if your differential encoder has the function of yielding an output symbol with a phase that is the sum of the phases of its previous two inputs, then the analagous operation at the decoder is to form the differences in phase of successively-received differentially-encoded symbols. I could explain this better, but I haven't had a chance to revisit the answer, and may not, since your answer is more detailed. Mar 1 '13 at 17:45
• @JasonR Your answer is detailed enough to follow, and I have no quarrel with the computation of the decision statistic. What I am questioning is the implicit assertion that the two data bits in DQPSK can be demodulated independently of each other from $\text{Re}(S_i)$ and $\text{Im}(S_i)$ respectively just as in plain QPSK with coherent demodulation, the data bits are just the signs of $\text{Re}(D_i)$ and $\text{Im}(D_i)$. Mar 2 '13 at 0:24