Simulating Minimum Shift Keying Transmitter

by Krishna Sankar on January 19, 2008

Minimum shift keying (MSK) is an important concept to learn in digital communications. It is a form of continuous phase frequency shift keying . In minimum phase shift keying, two key concepts are used.

(a) The frequency separation of the sinusoidals used for representing bits 1′s and 0′s are , where is the symbol period.

(b) It is ensured that the resulting waveform is phase continuous.

Motivation of continuous phase

In a previous post (here), we have understood that the minimum frequency separation for two sinusoidals having zero phase difference to be orthogonal is , where is the symbol period. However, it can be observed that at each symbol boundary, there is a phase discontinuity. The presence of phase discontinuities can result in large spectral side lobes outside the desired bandwidth. Hence the need for having a frequency modulated signal which is phase continuous.

Phase growth in MSK

To ensure continuous phase, the phase of the carrier of the MSK signal is, where

is the symbol period, corresponds to -1 for bit 0, +1 for bit 1 respectively.

Now I try to simulate MSK (and FSK) transmission on a rayleigh channel.
With your exemple at : BER for BPSK in Rayleigh channel, I do the same thing with the MSK /FSK modulation but the results are different from theory (There is a small gap)
Can you explain it, do you have the same gap?
Thank you again for your help!

In fact, I try to program in C + +, the MSK modulation, your Matlab model is very interesting however I have some difficulties in receiving, the convolution does not work very well. Have you an idea how to demodulate the signal by taking into account the phase change?
I think that I perform the convolution in reception is not suitable, I convolves my outgoing signal channel signals with AWGN: f1 = sqrt (2 / T) * cos (2 * PI * (k +1 / 4T ) * t) and f2 = sqrt (2 / T) * cos (2 * PI * (fc-1/4T) * t).
But the results between the two convolutions are not different enough to determine correctly received bits.

Also can you explain me, how you do to demodulate the signal, I have difficulties to demodulate correctly because I do not take into account the phase to the convolution of signal reception. It is difficult because we have 1 phase for each point (fsamp in reality) of the signal.