There isn’t muchin this.
Here is a brief explanation.
Consider a signal
f(t)
which represents an instantaneous frequency of a sinusoid
and which carries some information.
Then you can generate the signal
phi(t) = 2 * pi* K * int_0^t f(tau) dtau
which is the instantaneous phase (since it is an integral of f(t))
with some frequency gain K.
Now you can form the complex exponential baseband signal
s(t) = exp( j phi(t) )
and transmit it. This is the basis of FM modulation.
Now imagine doing the above in discrete time.
You would have something like
f_k = f(k Ts)
phi_k = phi(k Ts) ~= 2 * pi* K * sum_i=0^k f(i Ts) Ts
= phi_{k-1} + 2 * pi * K * Ts * f_k (1)
and finally
s_k = exp(j phi_k) (2)
The FM modulator block in GNURADIO does exactly that,
ie
equations (1) and (2) with
sensitivity = 2 * pi * K * Ts
The quadrature demodulator block in GNURADIO extracts
phi_k from s_k (or from any complex signal for that matter) and
multiplies
with some irrelevant gain M so you get
M * phi_k
I hope this help,
Achilleas