FREQUENCY MODULATION (FM)

Table of Contents

Intro

Frequency Modulation can be created by modifying the frequency of a radiofrequent carrier according to an information signal of a lower frequency. The depth of an FM signal can be described by the
modulation index .
If η < 1 (usually <<1) we talk about narrowband FM which has about the same bandwidth as AM. Otherwise (1) we obtain wideband FM and its bandwith can be calculated with Carson's bandwidth rule:
where is the highest frequency component of the information signal.

Time Domain

A calculation of an FM-signal on the basis of two sinusoidal signals can be found here:
Since the angular frequency changes permanently, the formular is not valid and the current phase has to calculated by integration:
where modulation indexfrequency deviation and the unit of the frequency sensitivity
The FM signal can be written as:

Frequency Domain

It can be shown (refer to the link section of this page) that the FM signal has to be composed as an infinite Fourier-series containing Bessel-functions to get the frequeny components:
disp('time and frequency domain of an FM-signal');
time and frequency domain of an FM-signal
init_FM;
eta=2.2
eta = 2.2000
TX_signal=u_i*cos(2*pi*f_i*t); %u_LF
carrier=u_c*cos(2*pi*f_c*t); %u_RF
MOD_signal=u_c*cos(2*pi*f_c*t+eta*sin(2*pi*f_i*t));
plot_MOD(t,TX_signal,carrier,MOD_signal)

Spectrum

% plot spectrum
n=length(MOD_signal);
F_MOD_Signal=abs(fftshift(fft(MOD_signal)))/n; % FFT and frequency-pins for double sided spectrum
dF=fs/n;
F = (-n/2:n/2-1)*dF; % frequency range
figure
plot(F,F_MOD_Signal)
title('double sided spectrum')
grid on
% show frequency pins using the bessel functions
nr=round(eta+1); % Carson´ rule
fpi=-nr:nr;
X1=f_c+fpi*f_i; % upper sideband
X2=-f_c+fpi*f_i; % lower sideband
Y=abs(u_c*besselj(fpi,eta))/2; % frequency pins
hold on
plot([X1,X2],[Y,Y],'o');

Audio

% play audio of the FM-signal
if (play_sound)
PCM=repmat(MOD_signal',f_i/np,1);
sound(PCM,fs);
end

Modulator and Demodulator

Modulation is done with a Voltage Controlled Oscillator (VCO) controlled by the information signal. A simple form of demodulation can be obtained by converting the FM signal to an AM signal with the help of a filter slope at first. The further demodulation process is equivalent to the method described in the AM-section.
file2sim='FM_MODEM';
if (do_sim)
convert_model(file2sim); % create HTML-version of simulinkfile
disp(get_link('-> create FM in Simulink',file2sim));
[TX_signal,carrier,MOD_signal,RX_signal,t]=sim_model(file2sim);
figure
disp('FM in Simulink - results of simulation');
titles={'information';'FM-signal';'AM-signal';'demodulated signal'};
ylabels={'u_{iTX}';'u_{FM}';'u_{AM}';'u_{iRX}'};
plot_MOD(t,TX_signal,carrier,MOD_signal,RX_signal,'titles',titles,'ylabels',ylabels)
end
FM in Simulink - results of simulation
pic_file=strcat(file2sim,pic_ext,'.jpg');
if exist(pic_file,'file')
disp('FM in Simulink - block diagram');
figure
image(imread(pic_file))
end
FM in Simulink - block diagram

Links

Frequency Domain of FM