ECS 701 Communication Theory Lab Session: Wireless Communication Systems Simulation Using MATLAB
ECS 701 Communication Theory Lab Session: Wireless Communication Systems Simulation Using MATLAB
1, 0 t
t
0
3
2,
t
0
3
< t
2t
0
3
0, otherwise
This message is modulated by carrier signal c(t) = cos2f
c
t. It is assumed that t
0
= 0.15s and f
c
= 250Hz.
During the experiment you will:
Modulate the baseband signal with carrier signal.
Observe the baseband analog signal, the carrier signal, and the modulated signal.
Observe these signal in frequency domain.
Demodulate the received signal and apply a low-pass lter to the mixed signal.
observe the mixed signal, the frequency response of the lter and the demodulated signal in frequency
domain.
compare the original analog signal and the demodulated signal.
1
1.2 Experiment Process
1.2.1 Initilizing the parameters
Open a new MATLAB description le, and insert the following code.
%% initializing basic parameters
t0 = 0.15; % signal duration in seconds
ts = 1/1500; % sampling interval in seconds
fc = 250; % carrier frequency in Hz
fs = 1/ts; % sampling frequency in Hz
df = 0.3; % desired minimum frequency resolution
After that, save the script and name it as DSB AM.m. Run the script by entering DSB-AM in the
MATLAB command window. Observe that in the workspace, the variables are created and initialized.
1.2.2 Simulate DSB-AM Transmitter
In the same script le insert the following code under previous code.
%% At transmitter side
t= 0:ts:t0; % time vector
% Generate base band analog signal
base_band_signal = [ones(1,t0/(3*ts)),-2*ones(1,t0/(3*ts)),zeros(1,t0/(3*ts)+1)];
% Generate carrier signal
carrier = cos(2*pi*fc.*t);
% Modulation
modulated_signal = base_band_signal .* carrier;
Save the script and run it again.
1.2.3 Observe the signals in Time Domain
To observe the signals we have by now, enter the following commands in the command window.
2
figure
subplot(3,1,1)
plot(t, base_band_signal);
title('Baseband analog signal');
xlabel('Time');
subplot(3,1,2)
plot(t, carrier);
title('Carrier signal');
xlabel('Time');
subplot(3,1,3)
plot(t, modulated_signal);
title('Modulated signal');
xlabel('Time');
1.2.4 Observe the signals in Frequency Domain
To observe the same signals in frequency domain, we need to rstly convert the time domain signal to
frequency domain expression using FFT (Fast Fourier Transform), a function already provided by MATLAB.
In the same script le insert the following code under previous code, and run it again.
%% Frequency analysis at transmitter side
% Calculate the length of FFT
n = 2^(max(nextpow2(length(t)), nextpow2(fs/df)));
df = fs / n; % actual frequency resolution
f = (0 : df : df*(n-1)) - fs/2; % frequency vector
% FFT for base band analog signal
base_band_signal_f = fft(base_band_signal, n)/fs;
% FFT for modulated signal
modulated_signal_f = fft(modulated_signal, n)/fs;
To observe the signals in frequency domain, enter the following commands in the command window.
figure
subplot(2,1,1)
plot(f, fftshift(abs(base_band_signal_f)));
title('Baseband analog signal');
xlabel('Frequency');
subplot(2,1,2)
plot(f, fftshift(abs(modulated_signal_f)));
title('Modulated signal');
xlabel('Frequency');
1.2.5 Simulate the DSB-AM Receiver
In the same script le insert the following code under previous code, and run it again.
3
%% At receiver side
% Locally generated reference carrier signal (same as carrier)
carrier_reference = carrier;
% coherrent detection
mixed_signal = modulated_signal .* carrier_reference;
% design ideal low pass filter to mixed_signal
cut_off_frequency = 150; % cut off frequency of the filter in Hz
cut_off_frequency_n = floor(cut_off_frequency / df); %cut off frequency index
low_pass_filter_f = zeros(1, length(f)); % frequency response of the filter
low_pass_filter_f(1:cut_off_frequency_n) = 2*ones(1, cut_off_frequency_n);
low_pass_filter_f(length(low_pass_filter_f)-
cut_off_frequency_n+1:length(low_pass_filter_f)) = 2*ones(1, cut_off_frequency_n);
% apply the low pass filter to mixed signal in frequency domain
mixed_signal_f = fft(mixed_signal, n)/fs;
demodulated_signal_f = mixed_signal_f .* low_pass_filter_f;
demodulated_signal = real(ifft(demodulated_signal_f))*fs;
1.2.6 Observe the signals at the receiver
We will observe the following signals in frequency domain:
Mixed signal
Frequency response of the low-pass lter
Demodulated signal
Enter the following commands in the command window
subplot(3,1,1)
plot(f, mixed_signal_f)
plot(f, fftshift(abs(mixed_signal_f)))
subplot(3,1,2)
plot(f, fftshift(abs(low_pass_filter_f)))
subplot(3,1,3)
plot(f, fftshift(abs(demodulated_signal_f)))
1.2.7 Comparison of original signal and demodulated signal
To compare the original signal with the demodulated signal, enter the following commands in the command
window. Note the dierence between the two, why?
figure
subplot(2,1,1)
plot(t, base_band_signal)
subplot(2,1,2)
plot(t, demodulated_signal(1:length(t)))
The simulation of the DSB-AM communication system is completed.
4
2 LSSB-AM analog Modulation
The purpose of this experiment is to simulate the communication system with lower single side band
amplitude modulation, and observe and analyze signals at dierent points in the system.
A LSSB-AM system is illustrated in Figure 1. Note the dierence between LSSB-AM system and
DSB-AM system.
Analog
Baseband Signal
X
Carrier Signal
Transmission
Channel
X
Local Generated
Carrier Signal
Lowpass Filter
mixed
signal
LSSB
Signal
demodulated
signal
Lowpass Filter
LSSB
Signal
DSB
Signal
Figure 2: LSSB-AM communication system block diagram
2.1 Problem Description
We want to use LSSB-AM system to transmit an analog signal M(t) dened as
m(t) =
1, 0 t
t
0
3
2,
t
0
3
< t
2t
0
3
0, otherwise
This message is modulated by carrier signal c(t) = cos2f
c
t. It is assumed that t
0
= 0.15s and f
c
= 250Hz.
During the experiment you will:
Simulate transmitter of LSSB-AM system.
Observe the baseband analog signal, the carrier signal, and the LSSB-AM signal.
Observe these signal in frequency domain.
Demodulate the received signal and apply a low-pass lter to the mixed signal.
observe the mixed signal, the frequency response of the lter and the demodulated signal in frequency
domain.
compare the original analog signal and the demodulated signal.
2.2 Experiment Process
2.2.1 Initilizing the parameters
Open a new MATLAB description le, and insert the following code.
%% initializing basic parameters
t0=.15; % signal duration
ts=1/1500; % sampling interval
fc=250; % carrier frequency
fs=1/ts; % sampling frequency
df=0.25; % desired freq.resolution
5
After that, save the script and name it as LSSB AM.m. Run the script by entering LSSB-AM in the
MATLAB command window.
2.2.2 Simulate LSSB-AM Transmitter
In the same script le insert the following code under previous code.
%% at Transmitter side
% time vector
t=0:ts:t0;
% Generate base band analog signal
base_band_signal = [ones(1,t0/(3*ts)),-2*ones(1,t0/
(3*ts)),zeros(1,t0/(3*ts)+1)];
% Generate carrier signal
carrier = cos(2*pi*fc.*t);
% Modulate signal as DSB-AM first
dsb_signal = base_band_signal.*carrier;
% Apply low pass filter to the DSB-AM signal
% Calculate the length of FFT
n = 2^(max(nextpow2(length(t)), nextpow2(fs/df)));
% Actual frequency resolution
df = fs / n;
% Frequency Vector
f = (0 : df : df*(n-1)) - fs/2;
% FFT on the DSB_signal
dsb_signal_f = fft(dsb_signal, n)/fs;
% calculate the location of the carrier frequency in the
frequency vector
fc_index = ceil(fc/df);
% design ideal low pass filter for transmitter
low_pass_filter_f = zeros(1, length(f));
low_pass_filter_f(1:fc_index) = ones(1, fc_index);
low_pass_filter_f(length(low_pass_filter_f)-
fc_index+1:length(low_pass_filter_f)) = ones(1, fc_index);
% pass the DSB-AM signal through the filter
lssb_signal_f = dsb_signal_f .* low_pass_filter_f;
% calculate the time domain LSSB signal
lssb_signal = real(ifft(lssb_signal_f))*fs;
Save the script and run it again.
2.2.3 Observe frequency response of LPF and compare DSB-AM signal and LSSB-AM signal
We want to observe the process of converting a DSB-AM signal to a LSSB-AM signal using a Low Pass
Filter. Note by doing this how the spectrum occupation is reduced.
To do this, enter the following commands in the command window.
6
subplot(3,1,1)
plot(f, fftshift(abs(dsb_signal_f)));
title('DSB-AM signal');
xlabel('Frequency');
subplot(3,1,2)
plot(f, fftshift(abs(low_pass_filter_f)))
title('Frequency Response of Low-Pass Filter');
xlabel('Frequency');
subplot(3,1,3)
plot(f, fftshift(abs(lssb_signal_f)));
title('LSSB-AM signal');
xlabel('Frequency');
2.2.4 Observe the base band signal, carrier signal, and the modulated LSSB-AM signal in
time domain
We want to see these signals in time domain. Note the dierence of DSB and LSSB signals in time domain.
Enter the following commands in the command window.
figure
subplot(3,1,1)
plot(t, base_band_signal)
title('Baseband analog signal');
xlabel('Time');
subplot(3,1,2)
plot(t, carrier)
title('Carrier signal');
xlabel('Time');
subplot(3,1,3)
plot(t, lssb_signal(1:length(t)))
title('LSSB-AM signal');
xlabel('Time');
2.2.5 Simulation of the receiver side for LSSB
In the script le LSSB-AM.m, insert the following code under previous code. After that, save the script
le and run it again.
7
%% At the Receiver Side
% Locally generated reference carrier signal (length must be the same as
% the received LSSB-AM signal
carrier_reference = cos(2*pi*fc*(0:ts:ts*(length(lssb_signal)-1)));
% coherent receiving
mixed_signal = lssb_signal .* carrier_reference;
% design ideal low pass filter to mixed_signal
% cut off frequency of the filter in Hz
cut_off_frequency = 150;
%cut off frequency index
cut_off_frequency_n = floor(cut_off_frequency / df);
% frequency response of the filter
low_pass_filter_f = zeros(1, length(f));
low_pass_filter_f(1:cut_off_frequency_n) = 4*ones(1, cut_off_frequency_n);
low_pass_filter_f(length(low_pass_filter_f)-cut_off_frequency_n+1:length(low_pass_filter_f)) =
4*ones(1, cut_off_frequency_n);
% apply the low pass filter to mixed signal in frequency domain
mixed_signal_f = fft(mixed_signal, n)/fs;
demodulated_signal_f = mixed_signal_f .* low_pass_filter_f;
% calculate time domain demodulated signal
demodulated_signal = real(ifft(demodulated_signal_f))*fs;
2.2.6 Observe the signals at the receiver
We will observe the following signals in frequency domain:
Mixed signal
Frequency response of the low-pass lter
Demodulated signal
Note how these signals are dierent from the DSB case.
Enter the following commands in the command window
subplot(3,1,1)
plot(f, mixed_signal_f)
plot(f, fftshift(abs(mixed_signal_f)))
subplot(3,1,2)
plot(f, fftshift(abs(low_pass_filter_f)))
subplot(3,1,3)
plot(f, fftshift(abs(demodulated_signal_f)))
8
2.2.7 Comparison of original signal and demodulated signal
To compare the original signal with the demodulated signal, enter the following commands in the command
window.
figure
subplot(2,1,1)
plot(t, base_band_signal)
subplot(2,1,2)
plot(t, demodulated_signal(1:length(t)))
The simulation of the LSSB-AM communication system is completed.
9
3 FM Analog Modulation
The purpose of this experiment is to simulate the communication system with frequency modulation, and
observe and analyze signals at dierent points in the system.
An analog FM system is illustrated in Figure 3.
Analog Signal
Matched
Filter
Recovered
Data
Carrier Signal
Integrator
Phase
Modulator
Differenciator
Figure 3: Analog frequency modulation system block diagram
3.1 Problem Description
We want to transmit , using a FM commnication system, short piece of triangular analog signal.
The the carrier used to modulate the data has frequency f
c
= 200Hz. And the frequency modulation
index equals to 160.
During the experiment you will:
Simulate the transmitter for FM communication.
Examine what a signal looks like when it is frequency modulated.
Examine the spectrum of the modulated signal.
3.2 Experiment Process
3.2.1 Initilizing the parameters
Open a new MATLAB description le, and insert the following code.
%% Initialize parameters
fs = 10e3; %sampling frequency
ts = 1./fs; %sampling intervals
t = -0.04:ts:0.04; % Time vector
Ta = 0.01; %Time period of source signal
fc = 200; %Carrier Freqneucy
After that, save the script and name it as FM.m. Run the script by entering FM in the MATLAB
command window.
3.2.2 Simulation of FM transmitter
At a FM transmitter, you will rstly need to generate a baseband analog signal. In this case we are
generating a triangular wave signal. Here we use the indirect method to modulate the original baseband
signal into a FM signal. The baseband signal is rstly integrated over time using an integrator, and then
10
the output of the integrator is used to control the phase of the carrier signal, with a phase modulator. The
FM equation used in here is:
f(t) = Acos
c
+ k
f
v () d
.
Insert the following code to the MATLAB script and save and run it.
%% genetate message signal
t1 = -0.02:ts:0; t2 = 0:ts:0.02;
m1 = 1 - abs((t1 + Ta)/Ta); % plot(t1, m1), peak of the triangular pulse at t = -Ta = -0.01
m1 = [zeros([1 200]), m1, zeros([1 400])];
m2 = 1 - abs((t2 - Ta)/Ta); % plot(t2, m2), peak of the triangular pulse at t = Ta = 0.01
m2 = [zeros([1 400]), m2, zeros([1 200])];
msg = m1 - m2; % message signal, total 801 points, plot(t, msg)
%% MODULATION
kf = 160*pi; %modulation index
m_int = ts*cumsum(msg); % Integrating Msg
fm = cos(2*fc*pi*t + kf*m_int); % fm = cos(2*pi*fc*t + integral(msg))
3.2.3 Examine the baseband signal and modulated signal
We will rstly look at the signal in time domain.
%% Plotting signal in time domain
figure;
subplot(2,1,1);
plot(t, msg);
title('Message Signal');
xlabel('{\it t} (sec)');
ylabel('m(t)');
grid;
subplot(2,1,2);
plot(t, fm);
title('FM');
xlabel('{\it t} (sec)');
ylabel('FM');
grid;
Now we will examine the spectrum characteristics of a frequency modulated analog signal. Enter the
following commands in the command window.
11
%% Finding frequency Response of Signals
NFFT = length(t);
NFFT = 2^ceil(log2(NFFT));
f = (-NFFT/2:NFFT/2-1)/(NFFT*ts);
mF = fftshift(fft(msg, NFFT));
% Frequency Response of Message Signal
fmF = fftshift(fft(fm, NFFT));
% Frequency Response of FM Signal
%% Plotting Freq Response of Signals
figure;
subplot(2,2,1);
plot(f, abs(mF));
title('Freq Response of MSG');
xlabel('f(Hz)');
ylabel('M(f)');
grid;
axis([-600 600 0 200]);
subplot(2,2,2);
plot(f, abs(fmF));
title('Freq Response of FM');
grid;
xlabel('f(Hz)');
ylabel('C(f)');
axis([-600 600 0 300]);
3.3 Simulation of FM receiver
Insert the following code to the Matlab script.
%% DEMODULATION
% step1: Using Differentiator
dem = diff(fm);
dem = [0, dem]; % make length(dem) = length(fm)
rect_dem = abs(dem); % obtain positive frequency part
% step2: low pass filter
N = 80; % Order of Filter
Wn = 0.01; % Pass Band Edge Frequency.
b = fir1(N, Wn); % Return Numerator of Low Pass FIR filter
a = 1; % Denominator of Low Pass FIR Filter
rec = filter(b, a, rect_dem);
3.4 Comparing recovered signal with the original signal
Now we will plot the recovered signal together with the original signal to compare the them. Enter the
following commands in the command window.
12
figure;
subplot(2,1,1);
plot(t, msg);
title('Message Signal');
xlabel('{\it t} (sec)');
ylabel('m(t)');
grid;
subplot(2,1,2);
plot(t, rec);
title('Recovered Signal');
hold on; yLim = get(gca, 'ylim');
plot([t(N/2) t(N/2)], yLim, 'r:',
'LineWidth', 2); hold off;
xlabel('{\it t} (sec)');
ylabel('m(t)');
grid;
First Draft
B. Zhong. Dec 2012.
Revision
B. Zhong. Oct 2013.
13