Using Track, Demodulation, and MATLAB to Demodulate FM signals

The LeCroy XStream oscilloscopes have several methods for demodulating frequency Modulated (FM) waveforms. The techniques for demodulating FM signals include using the JitterKit track of the frequency@level parameter, Use of the optional demodulate (Demod) math function, or using MATLAB via the XDEV customization option. Figure 1 shows an example.

Figure 1:

Examples of three methods for demodulating an FM signal. Trace F1 uses the optional demodulation math function, trace F3 uses the XDEV customization option and MATLAB., and trace F5 demodulated the signal using the track of frequency@level

The input signal is a 100 MHz carrier frequency modulated by a 10 kHz square wave. The FM deviation is 200 kHz. Trace F1, in figure 1, uses the optional demodulation math function to demodulate the signal. Figure 2 shows the setup for this operation:

Figure 2:

Setup for the optional demodulation math function

The second demodulation technique used employed LeCroy’s XDEV math customization option. This option allows third party programs, like MATLAB, to be incorporated in the oscilloscope’s processing path. The MATLAB setup is shown in Figure 3.

Figure 3:

The setup for using MATLAB in the oscilloscope’s processing path

Figure 4 is the MATLAB code for demodulating the waveform in trace C1:

Figure 4:

The MATLAB code for demodulating and filtering the signal in trace C1

Analog demodulation of the FM signal is accomplished using MATLAB’s ‘fmdemod’ function shown in the first line of Figure 4. This function takes as arguments the source waveform, carrier frequency, sampling frequency, fm deviation, and initial phase respectively.

The output from the fmdemod function has to be filtered and a 1 MHz, second order Butterworth low pass filter is implemented in MATLAB by the next two lines of code. The vertical output from MATLAB is not scaled properly. In our example we chose to do the rescaling in the rescale math function. The rescale setup is shown in Figure 5.

Figure 5:

The setup of the rescale function which rescales the MALAB output to read vertical units in Hz

The final method used to demodulate the fm signal is to use the JitterKit option’s Track function. The track function creates a waveform from the accumulated readings of the frequency @level parameter. This waveform is time synchronous with the measurements source. In Figure 6 we show the setup for the track function in trace F4 which plots the frequency of each cycle of the input waveform. This waveform has to be filtered, just like the MATLAB fmdemod function. The filter is created in trace F5.

Figure 6:

Using the track of the frequency@level parameter and a low pass filter to demodulate C1

The filter is a Butterworth low pass filter with a cutoff frequency of 100 kHz with a transition region width of 100 kHz and a stop band attenuation of 40 dB. The filter setup is shown in Figures 7 and 8.

Figure 7:

The low pass Butterworth filter setup

Figure 8:

The low pass filter frequency parameters

Of the three methods shown above the demodulate function is the easiest to use. This is because it requires the minimum amount of setup from the user. The user does not have to explicitly setup a filter in addition to entering the demodulation parameters. MATLAB offers the most flexible setup and allows the user the most freedom in selecting the parameters.

It also requires the most information about the signal, some of which the user might not have if analyzing an unknown source.

LeCroy oscilloscopes offer multiple methods to analyze waveforms. This is a hallmark of LeCroy’s approach to oscilloscope design. Users are free to approach a problem like demodulating a signal in the manner that best suits their experience and needs.