SSB-SC AM signal generation in Matlab

In this tutorial we will show how to generates SSB-SC AM(Single Sideband Suppressed Carrier) AM signal in Matlab. SSB-SC AM is one of three forms of amplitude modulation(AM). The other being the standard AM and DSB-SC AM. The standard AM and SSB-AM requires transmission bandwidth twice the message bandwidth because in these form of modulation both the upper and lower sideband of the modulated signal are transmitted. In SSB-AM we transmit only one sideband and hence SSB-SC AM requires transmission bandwidth equal to the message bandwidth which means that the SSB-SC AM is more bandwidth efficient than the standard AM and DSB-SC AM. In the earlier tutorial SSB-SC AM signal generation in Matlab with built-in function we showed how to generate SSB-SCAM signal using the matlab built-in function ssbmod(). Here we show how to generate SSB-SC AM signal without using built in function.

Main points:

- SSB-AM is derived from DSB-AM

- If message bandwidth is W, then SSB-AM requires transmission bandwidth of W while DSB-AM requires transmission bandwidth of 2W.

- SSB-AM is used in point to point communication

Mathematics of SSB-AM

The message signal, \(m(t)\), is given by:
m(t)=Amcos⁡(2Ï€fmt)

where  \(A_m\) is the amplitude of the message signal, and  \(f_m\) is the frequency of the message signal.

The carrier signal,  \(c(t)\), is given by:
c(t)=Accos⁡(2Ï€fct)

where  \(A_c\) is the amplitude of the carrier signal, and \(f_c\) is the frequency of the carrier signal.

 The SSB-AM signal equation can be derived which is as follows,

\(s_{SSB-AM} = \frac{Ac}{2}m(t) cos⁡(2Ï€fct) \pm \frac{Ac}{2}\hat{m(t)} sin⁡(2Ï€fct)\)

where for the lower sideband SSB-AM +ve is used and for the upper sideband -ve sign is used.

In time domain the Hilbert transform of message signal m(t) is given by,

\(\hat{m(t)} = \frac{m(t)}{\pi t}\)

In frequency domain the Hilbert transform of the message signal m(t) is,

\(\hat{M(f)} = -j sgn(f) M(f)\)

 The Hilbert transformer is a all frequency phase shifter.

The upper and lowsr sideband SSB-SC signal is,

\(s_u = \frac{A_m A_c}{2}cos⁡[2Ï€(f_c+f_m)t] \)

and, \(s_l = \frac{A_m A_c}{2}cos⁡[2Ï€(f_c-f_m)t] \)

In SSB-SC AM we either transmit the upper or the lower sideband SSB signal.

Circuit Diagram of SSB-SC AM

The following shows circuit diagram of SSB-SC AM.

circuit diagram for generating upper sideband SB-SC AM signal

 Matlab code

The following matlab code to generate SSB-SC AM signal in Matlab.

% SSB-SC AM without built-in function
% % SSB-AM modulation parameters
Ac = input('Enter carrier signal amplitude: ');
Am = input('Enter message signal amplitude(Am < Ac): '); 
fc = input('Enter carrier frequency: ');
fm = input('Enter message frequency(fm < fc): ');

% Time domain parameters
fs = 2 * fc; % sampling frequency
ts = 1 / fs; % sampling time
t = 0 : ts : 100*ts; % time vector

% Generate message signal
m = Am * cos(2 * pi * fm * t); % message signal

% Generate carrier signal
c = Ac * cos(2 * pi * fc * t); % carrier signal

% SSB-AM modulation using frequency domain method
% Generate Hilbert transform of message signal
mh = hilbert(m);

% Generate upper and lower sideband signals
u = real(mh) .* c;
l = imag(mh) .* [diff(c) 0];

% Add upper and lower sidebands to obtain SSB-AM signal
sl = u + l;
su = u - l;

% Plot the signals
subplot(4, 1, 1);
plot(t, m);
title('Message signal');
xlabel('Time (s)');
ylabel('Amplitude');

subplot(4, 1, 2);
plot(t, c);
title('Carrier signal');
xlabel('Time (s)');
ylabel('Amplitude');

subplot(4, 1, 3);
plot(t, sl);
title('Lower Sideband SSB-AM signal');
xlabel('Time (s)');
ylabel('Amplitude');

subplot(4, 1, 4);
plot(t, su);
title('Upper Sideband SSB-AM signal');
xlabel('Time (s)');
ylabel('Amplitude');



Post a Comment

Previous Post Next Post