Main Content

Modulate signal using FM method

The `comm.FMModulator`

System object™ applies baseband frequency modulation to a signal. For
more information, see the Algorithms section.

To modulate a signal using the FM method:

Create the

`comm.FMModulator`

object and set its properties.Call the object with arguments, as if it were a function.

To learn more about how System objects work, see What Are System Objects?

creates an FM
modulator System object.`fmmodulator`

= comm.FMModulator

sets properties using one or more name-value arguments. For example,
`fmmodulator`

= comm.FMModulator(`Name`

,`Value`

)`'SampleRate,400e3'`

specifies a sample rate of 400 kHz.

sets properties based on the configuration of the input `fmmodulator`

= comm.FMModulator(`fmdemodulator`

)`comm.FMDemodulator`

System object, `fmdemodulator`

.

To use an object function, specify the
System object as the first input argument. For
example, to release system resources of a System object named `obj`

, use
this syntax:

release(obj)

A frequency-modulated passband signal, *Y*(*t*), is
given as

$$Y(t)=A\mathrm{cos}\left(2\pi {f}_{\text{c}}t+2\pi {f}_{\text{\Delta}}{\displaystyle {\int}_{0}^{t}x(\text{\tau})d\text{\tau}}\right)\text{\hspace{0.17em}},$$

where:

*A*is the carrier amplitude.*f*_{c}is the carrier frequency.*x*(τ) is the baseband input signal.*f*_{Δ}is the frequency deviation in Hz.

The frequency deviation is the maximum shift from
*f*_{c} in one direction, assuming |*x*(τ)| ≤ 1.

A baseband FM signal can be derived from the passband representation by downconverting the
passband signal by *f*_{c} such that

$$\begin{array}{c}{y}_{\text{s}}(t)=Y(t){e}^{-j2\pi {f}_{\text{c}}t}=\frac{A}{2}\left[{e}^{j\left(2\text{\pi}{f}_{\text{c}}t+2\text{\pi}{f}_{\text{\Delta}}{\displaystyle {\int}_{0}^{t}x(\text{\tau})d\text{\tau}}\right)}+{e}^{-j\left(2\text{\pi}{f}_{\text{c}}t+2\text{\pi}{f}_{\text{\Delta}}{\displaystyle {\int}_{0}^{t}x(\text{\tau})d\text{\tau}}\right)}\right]{e}^{-j2\text{\pi}{f}_{\text{c}}t}\\ =\frac{A}{2}\left[{e}^{j2\text{\pi}{f}_{\text{\Delta}}{\displaystyle {\int}_{0}^{t}x(\text{\tau})d\text{\tau}}}+{e}^{-j4\text{\pi}{f}_{\text{c}}t-j2\text{\pi}{f}_{\text{\Delta}}{\displaystyle {\int}_{0}^{t}x(\text{\tau})d\text{\tau}}}\right]\text{\hspace{0.17em}}.\end{array}$$

Removing the component at -2*f*_{c} from *y*_{S}(*t*)
leaves the baseband signal representation, *y*(*t*), which
is given as

$$y(t)=\frac{A}{2}{e}^{j2\pi {f}_{\Delta}{\displaystyle {\int}_{0}^{t}x(\tau )d\tau}}.$$

The expression for *y*(*t*) can be rewritten as $$y(t)=\frac{A}{2}{e}^{j\varphi (t)}\text{\hspace{0.17em}},$$, where $$\varphi (t)=2\text{\pi}{f}_{\Delta}{\displaystyle {\int}_{0}^{t}x(\tau )d\tau}$$. Expressing *y*(*t*) this way implies
that the input signal is a scaled version of the derivative of the phase,
*ϕ*(*t*).

To recover the input signal from *y*(*t*), use a
baseband delay demodulator, as this figure shows.

Subtracting a delayed and conjugated copy of the received signal from the signal itself results in this equation.

$$w(t)=\frac{{A}^{2}}{4}{e}^{j\varphi (t)}{e}^{-j\varphi (t-T)}=\frac{{A}^{2}}{4}{e}^{j\left[\varphi (t)-\varphi (t-T)\right]}\text{\hspace{0.17em}},$$

where *T* is the sample period. In discrete terms,

$$\begin{array}{l}{w}_{\text{n}}=w(\text{n}T),\\ {w}_{\text{n}}=\frac{{A}^{2}}{4}{e}^{j\left[{\varphi}_{\text{n}}-{\varphi}_{\text{n}-1}\right]}\text{\hspace{0.17em}}\text{,and}\\ {v}_{\text{n}}={\varphi}_{\text{n}}-{\varphi}_{\text{n}-1}\text{\hspace{0.17em}}.\end{array}$$

The signal *v*_{n} is the
approximate derivative of *ϕ*_{n} such that *v*_{n} ≈
*x*_{n}.

[1] Hatai, I., and I. Chakrabarti. “A New High-Performance Digital
FM Modulator and Demodulator for Software-Defined Radio and Its FPGA Implementation.”
*International Journal of Reconfigurable Computing* (December 25,
2011): 1-10. https://doi.org/10.1155/2011/342532.

[2] Taub, H., and D. Schilling. *Principles of
Communication Systems*. McGraw-Hill Series in Electrical Engineering. New York:
McGraw-Hill, 1971, pp. 142–155.