Está en la página 1de 38

Simulating Communication Systems

with MATLAB : An Introduction

Aniruddha Chandra
ECE Department, NIT Durgapur, WB, India.
aniruddha.chandra@ieee.org

September 23, 2010

NIT DGP Student Branch


Presentation Outline Sep. 23, 2010

Objective of the Lecture

Expected Background

Simulating Analog Communication Systems


Amplitude Modulation (AM)

Simulating Digital Communication Systems


Binary Phase Shift Keying (BPSK)

A. Chandra, ECE Deptt., NITD Simulating Communication Systems with MATLAB 2


Presentation Outline Sep. 23, 2010

Objective of the Lecture

Expected Background

Simulating Analog Communication Systems


Amplitude Modulation (AM)

Simulating Digital Communication Systems


Binary Phase Shift Keying (BPSK)

A. Chandra, ECE Deptt., NITD Simulating Communication Systems with MATLAB 3


Objective of the Lecture Sep. 23, 2010

After the Lecture Youll be able to

Write your own Matlab Script

Make a Analog/ Digital Communication Link

Compare your Results with Theoretical Values

A. Chandra, ECE Deptt., NITD Simulating Communication Systems with MATLAB 4


Presentation Outline Sep. 23, 2010

Objective of the Lecture

Expected Background

Simulating Analog Communication Systems


Amplitude Modulation (AM)

Simulating Digital Communication Systems


Binary Phase Shift Keying (BPSK)

A. Chandra, ECE Deptt., NITD Simulating Communication Systems with MATLAB 5


Expected Background Sep. 23, 2010

I assume that You understand

Basic MATLAB Operations (function, matrix)

Basics of Communication (modulation)

Performance Metrics (BER)

A. Chandra, ECE Deptt., NITD Simulating Communication Systems with MATLAB 6


Presentation Outline Sep. 23, 2010

Objective of the Lecture

Expected Background

Simulating Analog Communication Systems


Amplitude Modulation (AM)

Simulating Digital Communication Systems


Binary Phase Shift Keying (BPSK)

A. Chandra, ECE Deptt., NITD Simulating Communication Systems with MATLAB 7


Analog Communication Systems Sep. 23, 2010

Source Modulator

Channel

Destination Demodulator

A. Chandra, ECE Deptt., NITD Simulating Communication Systems with MATLAB 8


Simulate a Source Sep. 23, 2010

Source Modulator

Channel

Destination Demodulator

Produces message signal e.g. a simple Sine wave

A. Chandra, ECE Deptt., NITD Simulating Communication Systems with MATLAB 9


Simulate a Source Sep. 23, 2010

Generate message signal (simple sine wave)


mt Vm sin 2f mt

Define time instants (1000 sample points)


tmin = 0; tmax = 10^(-3); step = (tmax-tmin)/1000;
t = tmin:step:tmax;

Define amplitude and frequency (initial phase is zero)


Vm = 1; % Amplitude
fm = 2*10^3; % Frequency

Construct the Signal


m = Vm*sin(2*pi*fm*t);

View the Signal


plot(t,m,'r');

A. Chandra, ECE Deptt., NITD Simulating Communication Systems with MATLAB 10


Simulate a Source Sep. 23, 2010

Complete MATLAB Script [Prog1.m]

tmin = 0; tmax = 10^(-3); step = (tmax-tmin)/1000;


t = tmin:step:tmax;
fm = 2*10^3;
Vm = 1;
m = Vm*sin(2*pi*fm*t);
plot(t,m,'r');

A. Chandra, ECE Deptt., NITD Simulating Communication Systems with MATLAB 11


Simulate a Source Sep. 23, 2010

A. Chandra, ECE Deptt., NITD Simulating Communication Systems with MATLAB 12


Simulate a Source Sep. 23, 2010

Assignment #1 [Prog2.m], [Prog3.m]

What happens if there is an initial phase?


phi_deg = 45;
phi_rad = phi_deg*pi/180;
m = Vm*sin(2*pi*fm*t+phi_rad);

What happens if the message is not sinusoidal?


tmin = 0; tmax = 1; step = (tmax-tmin)/1000;
t = tmin:step:tmax;
f = 2;
m = sawtooth(2*pi*f*t);
plot(t,m,'r');

A. Chandra, ECE Deptt., NITD Simulating Communication Systems with MATLAB 13


Simulate Modulation Sep. 23, 2010

Source Modulator

Channel

Destination Demodulator

Built-in functions are available (ammod, amdemod etc.)


WYSIWYG?? No

A. Chandra, ECE Deptt., NITD Simulating Communication Systems with MATLAB 14


Amplitude Modulation Sep. 23, 2010

Simulate with built-in functions [Prog4.m]


fs = 8000; % Sampling rate is 8000 samples per second
fc = 300; % Carrier frequency in Hz
t = [0:0.1*fs]'/fs; % Sampling times for 0.1 second
m = sin(20*pi*t); % Representation of the signal
v = ammod(m,fc,fs); % Modulate m to produce v

figure(1)
subplot(2,1,1); plot(t,m); % Plot m on top
subplot(2,1,2); plot(t,v); % Plot v below

mr = amdemod(v,fc,fs); % Demodulate v to produce m

figure(2);
subplot(2,1,1); plot(t,m); % Plot m on top
subplot(2,1,2); plot(t,mr); % Plot mr below

Source: Introduction to Communications Toolbox in MATLAB 7.6.0 (R2008) by Amit Degada


Available: http://amitdegada.weebly.com/download.html

A. Chandra, ECE Deptt., NITD Simulating Communication Systems with MATLAB 15


Amplitude Modulation Sep. 23, 2010

A. Chandra, ECE Deptt., NITD Simulating Communication Systems with MATLAB 16


Amplitude Modulation Sep. 23, 2010

A. Chandra, ECE Deptt., NITD Simulating Communication Systems with MATLAB 17


Amplitude Modulation Sep. 23, 2010

Dont have the feel??? . Try this

Define message signal, mt Vm sin 2f mt (as done earlier)

tmin = 0; tmax = 10^(-3); step = (tmax-tmin)/1000;


t = tmin:step:tmax;
Vm = 1;
fm = 2*10^3;
m = Vm*sin(2*pi*fm*t);

Define carrier, ct Vc sin 2f c t

Vc = 2; % Amplitude
fc = 10^4; % Frequency
c = Vc*sin(2*pi*fc*t); % Carrier signal

A. Chandra, ECE Deptt., NITD Simulating Communication Systems with MATLAB 18


Amplitude Modulation Sep. 23, 2010

Continued .

Modulate the Signal, vt Vc 1 sin 2f mt sin 2f ct
Vm

Vc
v = (1+m/Vc).*c; % DSB-FC modulation

View Modulated Wave

plot(t,v); % Modulated Wave


hold on;
plot(t,Vc*(1+m/Vc),'r:'); % Upper Envelope
hold on;
plot(t,-Vc*(1+m/Vc),'r:'); % Lower Envelope
hold off ;

A. Chandra, ECE Deptt., NITD Simulating Communication Systems with MATLAB 19


Amplitude Modulation Sep. 23, 2010

Complete MATLAB Script [Prog5.m]


clear all; close all; clc;
tmin = 0; tmax = 10^(-3); step = (tmax-tmin)/1000;
t = tmin:step:tmax; % Time
Vm = 1; Vc = 2; % Amplitude
fm = 2*10^3; fc = 10^4; % Frequency

m = Vm*sin(2*pi*fm*t); % Message
c = Vc*sin(2*pi*fc*t); % Carrier
v = (1+m/Vc).*c; % Modulated Wave

plot(t,v); hold on;


plot(t,Vc*(1+m/Vc),'r:'); hold on; % Upper Envelope
plot(t,-Vc*(1+m/Vc),'r:'); hold off % Lower Envelope

A. Chandra, ECE Deptt., NITD Simulating Communication Systems with MATLAB 20


Amplitude Modulation Sep. 23, 2010

A. Chandra, ECE Deptt., NITD Simulating Communication Systems with MATLAB 21


Amplitude Modulation Sep. 23, 2010

Assignment #2 [Prog6.m]

How to view effect of changing modulation index?


tmin = 0; tmax = 10^(-3); step = (tmax-tmin)/1000;
t = tmin:step:tmax;
Vm = 1; mu = 1.5; Vc = Vm/mu;
fm = 2*10^3; fc = 10^4;

m = Vm*sin(2*pi*fm*t);
c = Vc*sin(2*pi*fc*t);
v = (1+m/Vc).*c;

plot(t,v); hold on;


plot(t,Vc*(1+m/Vc),'r:'); hold on;
plot(t,-Vc*(1+m/Vc),'r:'); hold off

A. Chandra, ECE Deptt., NITD Simulating Communication Systems with MATLAB 22


Amplitude Modulation Sep. 23, 2010

Assignment #2 (Contd) [Prog7.m]

How to simulate DSB-SC modulation?


tmin = 0; tmax = 10^(-3); step = (tmax-tmin)/1000;
t = tmin:step:tmax;
Vm = 2; Vc = 1;
fm = 2*10^3; fc = 10^4;

m = Vm*sin(2*pi*fm*t);
c = Vc*sin(2*pi*fc*t);
v = m.*c;

plot(t,v); hold on;


plot(t,m,'r:'); hold on;
plot(t,-m,'r:'); hold off

A. Chandra, ECE Deptt., NITD Simulating Communication Systems with MATLAB 23


Demodulation Sep. 23, 2010

Demodulate DSB-SC with filter [Prog8.m]


clear all; close all; clc;
tmin = 0; tmax = 1; step = (tmax-tmin)/(10^3);
t = tmin:step:tmax;
Vm = 2; Vc = 1;
fm = 2; fc = 10^2;

m = Vm*sin(2*pi*fm*t);
c = Vc*sin(2*pi*fc*t);
v = m.*c;

r = v.*c;

[b a] = butter(1,0.01);
mr = filter(b,a,r);

figure(1)
subplot(2,1,1); plot(t,m);
subplot(2,1,2); plot(t,mr);

A. Chandra, ECE Deptt., NITD Simulating Communication Systems with MATLAB 24


Demodulation Sep. 23, 2010

A. Chandra, ECE Deptt., NITD Simulating Communication Systems with MATLAB 25


Demodulation Sep. 23, 2010

Ideal Demodulation of DSB-SC [Prog9.m]


clear all; close all; clc;
fs = 10^5; N = 10^5;
t = 1/fs:1/fs:N/fs;
fm = 2; fc = 10^3;
m = sin(2*pi*fm*t);
c = sin(2*pi*fc*t);
v = m.*c;

r = zeros(1,N); n =f s/fc;
for k = 1:fc
mr((k-1)*n+1:k*n) = 2*v((k-1)*n+1:k*n)*c((k-1)*n+1:k*n)'/n;
end

figure(1)
subplot(2,1,1); plot(t,m);
subplot(2,1,2); plot(t,mr);

A. Chandra, ECE Deptt., NITD Simulating Communication Systems with MATLAB 26


Demodulation Sep. 23, 2010

A. Chandra, ECE Deptt., NITD Simulating Communication Systems with MATLAB 27


Analog Communication Systems Sep. 23, 2010

Source Modulator

Channel

Destination Demodulator

Introduces noise Additive White Gaussian Noise

A. Chandra, ECE Deptt., NITD Simulating Communication Systems with MATLAB 28


Simulate Channel Sep. 23, 2010

Introducing AWGN [Prog10.m]


fs = 10^5; N = 10^5;
t = 1/fs:1/fs:N/fs;
fm = 2; fc = 10^3;
m = sin(2*pi*fm*t);
c = sin(2*pi*fc*t);
v = m.*c;

SNRdB = 10; SNR = 10^(SNRdB/10);


vn = var(v)/SNR;
n = sqrt(vn)*randn(1,N);
v = v + n;

r=zeros(1,N); n=fs/fc;
for k=1:fc
mr((k-1)*n+1:k*n)=2*v((k-1)*n+1:k*n)*c((k-1)*n+1:k*n)'/n;
end

figure(1)
subplot(2,1,1); plot(t,m);
subplot(2,1,2); plot(t,mr); axis([0 1 -1 1])

A. Chandra, ECE Deptt., NITD Simulating Communication Systems with MATLAB 29


Simulate Channel Sep. 23, 2010

A. Chandra, ECE Deptt., NITD Simulating Communication Systems with MATLAB 30


Presentation Outline Sep. 23, 2010

Objective of the Lecture

Expected Background

Simulating Analog Communication Systems


Amplitude Modulation (AM)

Simulating Digital Communication Systems


Binary Phase Shift Keying (BPSK)

A. Chandra, ECE Deptt., NITD Simulating Communication Systems with MATLAB 31


Digital Communication Systems Sep. 23, 2010

Source Modulator

Channel

Destination Demodulator

A. Chandra, ECE Deptt., NITD Simulating Communication Systems with MATLAB 32


Simulate BPSK Sep. 23, 2010

Simulation [Prog11.m]

%This program simulates BER of BPSK in AWGN channel%


clear all; close all; clc;
num_bit=100000; %Signal length
max_run=20; %Maximum number of iterations for a single SNR
Eb=1; %Bit energy
SNRdB=0:1:9; %Signal to Noise Ratio (in dB)
SNR=10.^(SNRdB/10);

hand=waitbar(0,'Please Wait....');
for count=1:length(SNR) %Beginning of loop for different SNR
avgError=0;
No=Eb/SNR(count); %Calculate noise power from SNR

A. Chandra, ECE Deptt., NITD Simulating Communication Systems with MATLAB 33


Simulate BPSK Sep. 23, 2010

Simulation (Contd.) [Prog11.m]


for run_time=1:max_run %Beginning of loop for different runs
waitbar((((count-1)*max_run)+run_time-1)/(length(SNRdB)*max_run));
Error=0;

data=randint(1,num_bit); %Generate binary data source


s=2*data-1; %Baseband BPSK modulation

N=sqrt(No/2)*randn(1,num_bit); %Generate AWGN

Y=s+N; %Received Signal

for k=1:num_bit %Decision device taking hard decision and deciding error
if ((Y(k)>0 && data(k)==0)||(Y(k)<0 && data(k)==1))
Error=Error+1;
end
end

Error=Error/num_bit; %Calculate error/bit


avgError=avgError+Error; %Calculate error/bit for different runs
end %Termination of loop for different runs

A. Chandra, ECE Deptt., NITD Simulating Communication Systems with MATLAB 34


Simulate BPSK Sep. 23, 2010

Simulation (Contd.) [Prog11.m]


BER_sim(count)=avgError/max_run; %Calculate BER for a particular SNR
end %Termination of loop for different SNR
BER_th=(1/2)*erfc(sqrt(SNR)); %Calculate analytical BER
close(hand);

semilogy(SNRdB,BER_th,'k'); %Plot BER


hold on
semilogy(SNRdB,BER_sim,'k*');
legend('Theoretical','Simulation',3);
axis([min(SNRdB) max(SNRdB) 10^(-5) 1]);
hold off

A. Chandra, ECE Deptt., NITD Simulating Communication Systems with MATLAB 35


Simulate BPSK Sep. 23, 2010

A. Chandra, ECE Deptt., NITD Simulating Communication Systems with MATLAB 36


References Sep. 23, 2010

[1] http://www.mathworks.com/matlabcentral/

[2] http://www.freewebs.com/acwebpage/teaching.htm

[3] B.P. Lathi and Z. Ding, Modern Digital and Analog


Communication Systems, Oxford University Press,
International 4th edition, 2010.

[4] J.G. Proakis, M. Salehi, and G. Bauch, Contemporary


Communication Systems using MATLAB, Thomson/ CL-
Engineering, 2nd edition, 2003.

A. Chandra, ECE Deptt., NITD Simulating Communication Systems with MATLAB 37


Sep. 23, 2010

Thank You!

Questions???
aniruddha.chandra@ieee.org

A. Chandra, ECE Deptt., NITD Simulating Communication Systems with MATLAB 38

También podría gustarte