FREQUENCY MODULATION (FM)
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 index
frequency 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
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
F_MOD_Signal=abs(fftshift(fft(MOD_signal)))/n; % FFT and frequency-pins for double sided spectrum
F = (-n/2:n/2-1)*dF; % frequency range
title('double sided spectrum')
% show frequency pins using the bessel functions
nr=round(eta+1); % Carson´ rule
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
Audio
% play audio of the FM-signal
PCM=repmat(MOD_signal',f_i/np,1);
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.
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);
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');
end
FM in Simulink - block diagram
Links