Skip to content

Latest commit

 

History

History
65 lines (49 loc) · 3.47 KB

07_Demodulation.md

File metadata and controls

65 lines (49 loc) · 3.47 KB

Demodulating the N-PSK modulated signal

Back to the README Previous step: QPSK modulation

Phase modulation is the most efficient modulation scheme [1] but also the most complex to demodulate since an exact copy of the transmitted carrier must be generated on the receiver. The classical means for cancelling the N-PSK phase modulation is to consider the N-th power of the received signal. Indeed, complex baseband signal s(t)=exp(j*2pi*df*t+j*phi(t)) with df the frequency difference between emitter and receiver frequencies (to be cancelled for phase demodulation) and the phase phi(t)=2*pi*k/N, k=[0:N-1], carrying the time-dependent information, becomes after computing the N-th power: s^N(t)=exp(j*2*pi*N*df*t+j*N*phi(t)) and since N*pi is N*2*pi*k/N=k*2*pi=0 since k is an integer, we end up with a clean carrier at N*df: s^N(t)=exp(j*2*pi*N*df*t)

Either cancelling df or dividing the frequency of s^N(t) reproduces a clear copy of the carrier and mixing with the incoming signal cancels the time varying argument of the trigonometric function to only yield exp(j*phi(t)). These operations are achieved with GNU Radio using the Costas loop whose bandwidth is advised in the documentation to be about 2*pi/100 and whose order is the N in N-PSK, i.e. the number of possible phase values encoding the signal. The GNU Radio Companion flowchart is

Following the Costas loop, the Symbol Synchronization block avoids sampling the signal on the transitions of the signal connecting stable phase values but only samples a single phase estimate synchronized on the sharp transitions. In the following charts, from top to bottom are displayed the time-domain I and Q samples, middle-top is the spectrum of the signal, the signal squared and its fourth power, in the middle-bottom the resulting constellation plot after Costas loop and Symbol Synchronization with N clearly separated point clouds, and on the bottom the output of the Costas loop prior to Symbol Synchronization with the lines linking the point clouds.

BPSK modulation (N=2) with a Costas loop set to the second order:

Notice on the top chart how the imaginary part (red) was cancelled by the Costas loop, leaving only a real part equal to exp(j*pi)=-1 or exp(j*0)=1, and on the middle-top chart how the squared (red) and fourth power (green) both exhibit a clean carrier while the raw spectrum (blue) has been spread by the modulation.

BPSK modulation (N=2) with a Costas loop (erroneously) set to the fourth order:

This time considering the N=4 with a BPSK modulation prevents the Costas loop from cancelling the imaginary part and both I and Q still carry some information.

QPSK modulation (N=4) with a Costas loop set to the fourth order:

This time, only the fourth power of the signal (green spectrum) cancels the modulation while both the raw and squared signal remain spread over the modulation bandwidth.

Using GNU/Octave, the N-th power of the signal s is computed with s.^N, again leading to a clean carrier located at N*df when plotting abs(fftshift(fft(s.^N))). The X-axis of this plot can be graduated with a frequency generated as linspace(-fs/2,fs/2,length(s)) with fs the sampling frequency.