In a previous post, we discussed about a probable first order digital PLL for tracking constant phase offset. The assumption was that as the phase offset is small and the bits gets decoded correctly, the phase difference between the ideal and actual constellation gives the initial value of phase. However, in typical scenarios it may be possible that the above assumption may not be valid, resulting in phase ambiguity.
To handle such scenario’s it may be pertinent to differentially encode the transmit signal. Quoting from Section 4.5.1 of [DIG-COMM-SKLAR] – “The term differential encoding refers to the procedure of encoding the data differentially; that is, the presence of a binary one or zero is manifested by the symbols similarity or difference compared with the previous signal.”
The encoding method for a differentially encoded binary phase shift keying (DBPSK) can be as follows:
|Bit input, x[n]||Phase change, degrees|
Table: Differentially encoded BPSK (DBPSK)
In equations, DBPSK can be represented as
is the input binary sequence and
is the modulo-2 addition.
The binary sequence is then BPSK modulated and used for transmission.
The received sequence is coherently demodulated (as explained for coherent BPSK demodulation). Then the resulting binary sequence and the delayed version of it is modulo-two subtracted for extracting the bit sequence.
Typical transmit-receiver block diagram can be as follows:
Figure: Transmit receive block diagram for coherent demodulation of DBPSK
The probability of error for a coherently detected, differentially encoded BPSK is given by (from Sec4.7.2 [DIG-COMM-SKLAR])
Notice that the bit error probability for coherent demodulation of DBPSK is typically double when compared to the bit error probability for coherent BPSK demodulation. This is because, due to differential encoding each decision error during coherent demodulation will cause two bits to be in error.
However, note that argument is not so straightforward for low SNR regions which I presume the reference [TEL-SYS-ENG-LINDSEY-SIMON] details about.
% Simple Matlab/Octave code for coherent demodulation of % differentially encoded binary phase shift keying (DBPSK) clear N = 10^6 % number of bits or symbols rand('state',100); % initializing the rand() function randn('state',200); % initializing the randn() function ip = rand(1,N)>0.5; % generating 0,1 with equal probability ipD = mod(filter(1,[1 -1],ip),2); % %differential encoding y[n]=y[n-1]+x[n] s = 2*ipD-1; % BPSK modulation 0 -> -1; 1 -> 0 n = 1/sqrt(2)*[randn(1,N) + j*randn(1,N)]; % white gaussian noise, 0dB variance Eb_N0_dB = [-3:10]; % multiple Eb/N0 values for ii = 1:length(Eb_N0_dB) y = s + 10^(-Eb_N0_dB(ii)/20)*n; % additive white gaussian noise ipDHat_coh = real(y) > 0; % coherent demodulation ipHat_coh = mod(filter([1 -1],1,ipDHat_coh),2); %differential decoding nErr_dbpsk_coh(ii) = size(find([ip - ipHat_coh]),2); % counting the number of errors end simBer_dbpsk_coh = nErr_dbpsk_coh/N; theoryBer_dbpsk_coh = erfc(sqrt(10.^(Eb_N0_dB/10))).*(1 - 0.5*erfc(sqrt(10.^(Eb_N0_dB/10)))); close all figure semilogy(Eb_N0_dB,theoryBer_dbpsk_coh,'b.-'); hold on semilogy(Eb_N0_dB,simBer_dbpsk_coh,'mx-'); axis([-2 10 10^-6 0.5]) grid on legend('theory', 'simulation'); xlabel('Eb/No, dB') ylabel('Bit Error Rate') title('Bit error probability curve for coherent demodulation of DBPSK')
Figure: Bit error curve for coherent demodulation of DBPSK
Hope this helps.
D id you like this article? Make sure that you do not miss a new article by subscribing to RSS feed OR subscribing to e-mail newsletter. Note: Subscribing via e-mail entitles you to download the free e-Book on BER of BPSK/QPSK/16QAM/16PSK in AWGN.