You are on page 1of 15

Bit Error Rate (BER) for BPSK modulation

by Krishna Sankar on August 5, 2007 In this post, we will derive the theoretical equation for bit error rate (BER) with Binary Phase Shift Keying (BPSK) modulation scheme in Additive White Gaussian Noise (AWGN) channel. The BER results obtained using Matlab/Octave simulation scripts show good agreement with the derived theoretical results. With Binary Phase Shift Keying (BPSK), the binary digits 1 and 0 maybe represented by the analog levels and respectively. The system model is as shown in the Figure below.

Figure: Simplified block diagram with BPSK transmitter-receiver

Channel Model
The transmitted waveform gets corrupted by noise Gaussian Noise (AWGN). , typically referred to as Additive White

Additive : As the noise gets added (and not multiplied) to the received signal White : The spectrum of the noise if flat for all frequencies. Gaussian : The values of the noise with follows the Gaussian probability distribution function, and .

Computing the probability of error


Using the derivation provided in Section 5.2.1 of [COMM-PROAKIS] as reference: The received signal,

when bit 1 is transmitted and when bit 0 is transmitted. The conditional probability distribution function (PDF) of for the two cases are:

Figure: Conditional probability density function with BPSK modulation Assuming that and are equally probable i.e. the optimal decision boundary.

, the threshold 0 forms

if the received signal is if the received signal is transmitted.

is greater than 0, then the receiver assumes

was transmitted. was

is less than or equal to 0, then the receiver assumes

i.e. and .

Probability of error given

was transmitted
is transmitted is (the area in blue region):

With this threshold, the probability of error given , where,

is the complementary error function.

Probability of error given

was transmitted
is transmitted is (the area in green region):

Similarly the probability of error given .

Total probability of bit error


. Given that we assumed that error probability is, and are equally probable i.e. , the bit

Simulation model
Matlab/Octave source code for computing the bit error rate with BPSK modulation from theory and simulation. The code performs the following: (a) Generation of random BPSK modulated symbols +1s and -1s (b) Passing them through Additive White Gaussian Noise channel (c) Demodulation of the received symbol based on the location in the constellation (d) Counting the number of errors (e) Repeating the same for multiple Eb/No value.

Figure: Bit error rate (BER) curve for BPSK modulation theory, simulation
% % % % % % % % % % % % % % % % % % % % % % % % % % Creative Commons Attribution-Noncommercial 2.5 India You are free: to Share to copy, distribute and transmit the work to Remix to adapt the work Under the following conditions: Attribution. You must attribute the work in the manner specified by the author or licensor (but not in any way that suggests that they endorse you or your use of the work). Noncommercial. You may not use this work for commercial purposes. For any reuse or distribution, you must make clear to others the license terms of this work. The best way to do this is with a link to this web page. Any of the above conditions can be waived if you get permission from the copyright holder. Nothing in this license impairs or restricts the author's moral rights. http://creativecommons.org/licenses/by-nc/2.5/in/ Script for simulating binary phase shift keyed transmission and reception and compare the simulated and theoretical bit error probability Checked for proper operation with Octave Version 3.0.0 Author : Krishna Email : krishna@dsplog.com Version : 1.0 Date : 5 August 2007 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

clear N = 10^6 % number of bits or symbols rand('state',100); % initializing the rand() function randn('state',200); % initializing the randn() function % Transmitter ip = rand(1,N)>0.5; % generating 0,1 with equal probability s = 2*ip-1; % BPSK modulation 0 -> -1; 1 -> 1 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) % Noise addition y = s + 10^(-Eb_N0_dB(ii)/20)*n; % additive white gaussian noise % receiver - hard decision decoding ipHat = real(y)>0; % counting the errors nErr(ii) = size(find([ip- ipHat]),2); end simBer = nErr/N; % simulated ber theoryBer = 0.5*erfc(sqrt(10.^(Eb_N0_dB/10))); % theoretical ber % plot close all figure semilogy(Eb_N0_dB,theoryBer,'b.-'); hold on semilogy(Eb_N0_dB,simBer,'mx-'); axis([-3 10 10^-5 0.5]) grid on legend('theory', 'simulation'); xlabel('Eb/No, dB'); ylabel('Bit Error Rate'); title('Bit error probability curve for BPSK modulation');

BPSK modulation and Demodulation


April 8, 2010 in Digital Modulations, Matlab Codes, Signal Processing

BPSK Modulation:

In digital modulation techniques a set of basis functions are chosen for a particular modulation scheme.Generally the basis functions are orthogonal to each other. Basis functions can be derived using Gram Schmidt orthogonalization procedure.Once the basis function are chosen, any vector in the signal space can be represented as a linear combination of the basis functions. In Binary Phase Shift Keying (BPSK) only one sinusoid is taken as basis function modulation. Modulation is achieved by varying the phase of the basis function depending on the message bits. The following equation outlines BPSK modulation technique.

The constellation diagram of BPSK will show the constellation points lying entirely on the x axis. It has no projection on the y axis. This means that the BPSK modulated signal will have an in-phase component (I) but no quadrature component (Q). This is because it has only one basis function. A BPSK modulator can be implemented by NRZ coding the message bits (1 represented by +ve voltage and 0 represented by -ve voltage) and multiplying the output by a reference oscillator running at carrier frequency .

BPSK Modulator

BPSK Demodulation:
For BPSK demodulator , a coherent demodulator is taken as an example. In coherent detection technique the knowledge of the carrier frequency and phase must be known to the receiver. This can be achieved by using a Costas loop or a PLL (phase lock loop) at the receiver. A PLL essentially locks to the incoming carrier frequency and tracks the variations in frequency and phase. For the following simulation , neither a PLL nor a Costas loop is used but instead we simple use the output of the PLL or Costas loop. For demonstration purposes we simply assume that the carrier phase recovery is done and simply use the generated reference frequency at the receiver (cos(t)). In the demodulator the received signal is multiplied by a reference frequency generator (assuming the PLL/Costas loop be present). The multiplied output is integrated over one bit period using an integrator. A threshold detector makes a decision on each integrated bit based on

a threshold. Since an NRZ signaling format is used with equal amplitudes in positive and negative direction, the threshold for this case would be 0.

BPSK Demodulator

Matlab Code: File 1: NRZ_Encoder.m


% NRZ_Encoder Line codes e % [time,output,Fs]=NRZ_Encod % NRZ_Encoder NRZ encoder % Author: Mathuranathan for h

1 % NRZ_Encoder Line codes encoder 2 % [time,output,Fs]=NRZ_Encoder(input,Rb,amplitude,style) 3 % NRZ_Encoder NRZ encoder 4 % Author: Mathuranathan for http://www.gaussianwaves.com 5 % License: Creative Commons : CC-BY-NC-SA 3.0 6 % Input a stream of bits and specify bit-Rate, amplitude of the output signal and the style of 7 encoding 8 % Currently 3 encoding styles are supported namely 'Manchester','Unipolar'and 'Polar' 9 % Outputs the NRZ stream 10 function [time,output,Fs]=NRZ_Encoder(input,Rb,amplitude,style) 11 %For debug 12 %clear all; 13 %input=[1 0 1 0 0 1 1];

14 %Tb = 0.01; % bit period (s) 15 %Fs = 400; % Sampling Freq Fs >=1/T (Hz) 16 Fs=16*Rb; %Sampling frequency , oversampling factor= 32 17 Ts=1/Fs; % Sampling Period 18 Tb=1/Rb; % Bit period 19 output=[]; 20 switch lower(style) 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 case {'manchester'} %disp('Method is ,manchester') for count=1:length(input), for tempTime=0:Ts:Tb/2-Ts, output=[output (-1)^(input(count))*amplitude]; end for tempTime=Tb/2:Ts:Tb-Ts, output=[output (-1)^(input(count)+1)*amplitude]; end end case {'unipolar'} %disp('Method is unipolar') for count=1:length(input), for tempTime=0:Ts:Tb-Ts, output=[output input(count)*amplitude]; end end case {'polar'}

39 40 41 42 43 44 45 46 47 48 end

%disp('Method is polar') for count=1:length(input), for tempTime=0:Ts:Tb-Ts, output=[output amplitude*(-1)^(1+input(count))]; end end otherwise, disp('NRZ_Encoder(input,Rb,amplitude,style)-Unknown method given as ''style'' argument'); disp('Accepted Styles are ''Manchester'', ''Unipolar'' and ''Polar''');

49 time=0:Ts:Tb*length(input)-Ts; 50

File 2: BPSK_Mod_Demod.m
% Demonstration of BPSK Modu % This scheme uses a simple % random binary stream is rep % signal is multiplied by refere

1 2 3 4 5 6 7 8

% Demonstration of BPSK Modulation and Demodulation % This scheme uses a simple BPSK modulation scheme in which a % random binary stream is represented in NRZ format and the resulting % signal is multiplied by reference carrier frequency. % AWGN channel noise generated according to the desired noise variance % is added with the BPSK modulated signal. % The noise added signal is demodulated by multiplying it with the % reference frequency and integrated over one bit period.

10 % Author: Mathuranathan Viswanathan for http://www.gaussianwaves.com 11 % License : creative commons : Attribution-NonCommercial-ShareAlike 3.0 12 % Unported 13 clear; %clear all stored variables 14 N=100; %number of data bits 15 noiseVariance = 0.5; %Noise variance of AWGN channel 16 data=randn(1,N)>=0; %Generate uniformly distributed random data 17 Rb=1e3; %bit rate 18 amplitude=1; % Amplitude of NRZ data 19 [time,nrzData,Fs]=NRZ_Encoder(data,Rb,amplitude,'Polar'); 20 Tb=1/Rb; 21 subplot(4,2,1); 22 stem(data); 23 xlabel('Samples'); 24 ylabel('Amplitude'); 25 title('Input Binary Data'); 26 axis([0,N,-0.5,1.5]); 27 subplot(4,2,3); 28 plotHandle=plot(time,nrzData); 29 xlabel('Time'); 30 ylabel('Amplitude'); 31 title('Polar NRZ encoded data'); 32 set(plotHandle,'LineWidth',2.5); 33 maxTime=max(time);

34 maxAmp=max(nrzData); 35 minAmp=min(nrzData); 36 axis([0,maxTime,minAmp-1,maxAmp+1]); 37 grid on; 38 Fc=2*Rb; 39 osc = sin(2*pi*Fc*time); 40 %BPSK modulation 41 bpskModulated = nrzData.*osc; 42 subplot(4,2,5); 43 plot(time,bpskModulated); 44 xlabel('Time'); 45 ylabel('Amplitude'); 46 title('BPSK Modulated Data'); 47 maxTime=max(time); 48 maxAmp=max(nrzData); 49 minAmp=min(nrzData); 50 axis([0,maxTime,minAmp-1,maxAmp+1]); 51 %plotting the PSD of BPSK modulated data 52 subplot(4,2,7); 53 h=spectrum.welch; %Welch spectrum estimator 54 Hpsd = psd(h,bpskModulated,'Fs',Fs); 55 plot(Hpsd); 56 title('PSD of BPSK modulated Data'); 57 %------------------------------------------58 %Adding Channel Noise

59 %------------------------------------------60 noise = sqrt(noiseVariance)*randn(1,length(bpskModulated)); 61 received = bpskModulated + noise; 62 subplot(4,2,2); 63 plot(time,received); 64 xlabel('Time'); 65 ylabel('Amplitude'); 66 title('BPSK Modulated Data with AWGN noise'); 67 %------------------------------------------68 %BPSK Receiver 69 %------------------------------------------70 %Multiplying the received signal with reference Oscillator 71 v = received.*osc; 72 %Integrator 73 integrationBase = 0:1/Fs:Tb-1/Fs; 74 for i = 0:(length(v)/(Tb*Fs))-1, 75 y(i+1)=trapz(integrationBase,v(int32(i*Tb*Fs+1):int32((i+1)*Tb*Fs)));

76 end 77 %Threshold Comparator 78 estimatedBits=(y>=0); 79 subplot(4,2,4); 80 stem(estimatedBits); 81 xlabel('Samples'); 82 ylabel('Amplitude'); 83 title('Estimated Binary Data');

84 axis([0,N,-0.5,1.5]); 85 %-----------------------------------------86 %Bit Error rate Calculation 87 BER = sum(xor(data,estimatedBits))/length(data); 88 %disp(BER); 89 %Constellation Mapping at transmitter and receiver 90 %constellation Mapper at Transmitter side 91 subplot(4,2,6); 92 Q = zeros(1,length(nrzData)); %No Quadrature Component for BPSK 93 stem(nrzData,Q); 94 xlabel('Inphase Component'); 95 ylabel('Quadrature Phase component'); 96 title('BPSK Constellation at Transmitter'); 97 axis([-1.5,1.5,-1,1]); 98 %constellation Mapper at receiver side 99 subplot(4,2,8); 100 Q = zeros(1,length(y)); %No Quadrature Component for BPSK 101 stem(y/max(y),Q); 102 xlabel('Inphase Component'); 103 ylabel('Quadrature Phase component'); 104 title(['BPSK Constellation at Receiver when AWGN Noise Variance =',num2str(noiseVariance)]); 105 axis([-1.5,1.5,-1,1]); 106 107 108

109 110 111 112 113 114 115

Simulation Results
The output of the Matlab code provides more insight into the modulation techniques. Apart from plotting the modulated and demodulated signal it also shows the constellation at transmitter/receiver and Power Spectral Density of the BPSK modulated signal.

BPSK Modulation and Demodulation Characteristics

You might also like