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.
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');