# BPSK and QPSK demodulation computational complexity

I wanted to ask about the real operations of BPSK and QPSK demodulation. How can we calculate it?

I mean for example if I have a received symbol +0.6, then I need to demodulate it to be 0 or 1. what's the computational complexity required for that. same for QPSK.

• Can you be more detailed in what you mean by demodulation? For example, the process is different depending on whether you're talking about going from oversampled signal to bit estimates or from sampled matched filter output to bit estimates. – Engineer Sep 2 '20 at 11:20
• @Engineer I added a notice into the question – New_student Sep 2 '20 at 11:57
• This question is rather naive. The actual computational complexity of BPSK demodulation is in computation of the decision statistic, (that $0.6$) from the actual RF signal, and not in the mapping of $0.6$ to a demodulated $1$ or $0$. – Dilip Sarwate Sep 2 '20 at 16:21

The question should be what is the complexity of taking the RF signal and producing a bit estimate for BPSK and QPSK. Read Dan's answer for more information.

For each received symbol, there is only one operation that you need to do and it is a comparison. You need to figure out which region the received symbol lies in, and that will give you a bit estimate. For BPSK, the Voronoi diagram (https://en.wikipedia.org/wiki/Voronoi_diagram) looks like this:

The operation you need to do for BPSK is if $$\text{Real}(s)>0$$, then mark the symbol estimate as Orange and if $$\text{Real}(s)<0$$, then mark the symbol estimate as Blue. This requires a single comparison operation.

For QPSK, the diagram looks like this:

The operation you need to do for QPSK involves checking both the real and imaginary parts. If $$\big(\text{Real}(s)>0\big) \text{ AND } \big(\text{Imag}(s)>0\big)$$, then mark the symbol estimate as Orange, and so on for the other symbols. This requires two comparison operations (one for real, one for imaginary).

Once you've come up with symbol estimates for each of the received symbols, now you can do the mapping from symbols to bits which will depend on your implementation. For example, using a gray mapping for QPSK, Orange $$\rightarrow$$ 00, Blue $$\rightarrow$$ 01, Yellow $$\rightarrow$$ 11, and Green $$\rightarrow$$ 10.

To demodulate BPSK and QPSK as described by the OP is to simply take the sign of the waveform (decision), which has trivial computational complexity. The real complexity lies in everything that occurs prior to decision in a practical receiver: There is typically an equalizer to remove multi-path distortion, a matched filter to optimize the signal to noise ratio at the decision locations (in the presence of white noise), an automatic gain control (AGC) loop to remove long term amplitude variation, a timing recovery loop to remove phase and frequency offsets in the timing clock (for the proper sample locations of the final decisions), and a carrier recovery loop to remove residual phase and frequency offset of the carrier frequency due to differences in the Tx and Rx clocks and Doppler due to possible motion between transmitter and receiver.

For instance, the block diagram below shows a practical receiver carrier recovery loop that also does the final decisions for QPSK; where for QPSK each decision would be a simple threshold detector on I and Q (notice the relative computational complexity of the decision block versus the rest of the loop, and this is just for carrier recovery and does not include the AGC and timing recovery operations described above that would be typical).