RF Wireless World

Browse articles, tutorials, tools, and vendors.

GMSK Modulation Implementation in MATLAB

By RF Wireless Expert Team

This page provides MATLAB source code for GMSK (Gaussian Minimum Shift Keying) modulation. GMSK is a modulation technique commonly used in wireless systems.

A key advantage of GMSK modulation is that it can achieve continuous or zero phase shift between consecutive data symbols. This addresses a limitation of QPSK and OQPSK techniques, which can have 180-degree to 90-degree phase shifts between symbols. These abrupt phase shifts necessitate the use of linear power amplifiers in the wireless transmitter chain.

Refer to our page on [MSK GMSK modulation](your_link_here - placeholder, you’ll need to provide the actual link) for a complete, step-by-step guide on MSK and GMSK modulation.

The following is the basic GMSK modulation MATLAB code:

clear all;
close all;
clc;

nrz_data = [1 1 1 1 1 1 1 1];  % Sample data
Tb = 1;                           % Bit duration
BT = 0.3;                          % BT product of filter
sps = 32;                         % Samples per symbol
Ts = Tb/sps;                      % Sample period
t=(-2*Tb:Ts:2*Tb);

alpha = 2*pi*BT/(sqrt(log(2)));
gauss = Q(alpha*(2*t-0.5)) - Q(alpha*(2*t+0.5));
K=pi/2/sum(gauss);
gauss = K*gauss;

nrz = upsample(nrz_data,sps);
nrz_gauss = conv(gauss,nrz);

subplot(2,1,1);
stem(nrz_data);
title('NRZ bits');
xlabel('Time');
ylabel('Amplitude');

subplot(2,1,2);
plot(nrz_gauss);
title('NRZ bits, after Gaussian Filtering');
xlabel('Time');
ylabel('Amplitude');

nrz_gauss1 = cumsum(nrz_gauss);
nrz_gauss2 = exp(1i*nrz_gauss1);

noisy_real1 = real(nrz_gauss2);
noisy_imag1 = imag(nrz_gauss2);

filter_noisy_real1 = matched_filter(noisy_real1,Tb,sps);
filter_noisy_imag1 = matched_filter(noisy_imag1,Tb,sps);

GMSK Demodulation

Deconvolution is performed in GMSK demodulation using the same Gaussian filter coefficients generated during GMSK modulation.

Explore MATLAB Wireless Communications & Modulation

Continue Learning Modulation Types

Continue Learning MATLAB

Keep Reading