# Having problems with GMSK modulation

I'm trying to modulate array of bits with GMSK modulation with BT=0.3 . What I'm doing is making O-QPSK modulation for given bits, then applying Gaussian filter on I and Q arrays and after that converting it to MSK modulation. Gaussian filter seems to be applied correctly. However the resulting MSK signal does not look similar to the example from book.

Here's my code to convert O-QPSK to MSK:

def msk_mod (i,q,samples_per_symbol):
i_res=i
q_res=q
for k in range(0,int(samples_per_symbol/2)):
i_res.append(0)
q_res.insert(0,0)
for k in range(0,len(i_res)):
i_res[k]*=np.cos(np.pi*k/(samples_per_symbol)-np.pi/2)
q_res[k]*=np.sin(np.pi*k/(samples_per_symbol)-np.pi/2)
return i_res,q_res


that results in I/Q data looking like that but in the book I/Q data looks like that • Just use QPSK! It's much easier in comparison with GMSK. Aug 30, 2022 at 13:14
• Seems like moderator moved this answer to comment section. I'm gonna mention again, that is not a solution for me. I have to use GMSK in my task.
– A N
Aug 30, 2022 at 14:15

GMSK means that you treat MSK as frequency shift keying, then filter the frequency shift, then generate your signal.

It's done that way because it's almost as easy to generate and demodulate as plain old MSK, the side bands are much suppressed, and it retains the constant-envelope character of MSK.

So this is where you're going wrong:

then applying Gaussian filter on I and Q arrays and after that converting it to MSK modulation

(Note that when you do it your way, you lose the constant envelope character of GMSK -- this is important if you're transmitting with class C amplifiers).

What you should be doing is first finding the frequency deviation, as a non return to zero binary signal (i.e., $$f_{msk}(t) \in \pm \frac B 2$$ where $$B$$ is the baud rate). Then find $$f(t) = h\left(f_{msk}(t)\right)$$ where $$h(x(t))$$ is a Gaussian filter. Then generate the signal $$x(t) = \cos \left( \int f(t) dt \right).$$

• If you know the phase, how do you generate a unit-amplitude I/Q signal of that phase? If you know the frequency, how do you generate the phase? Answer those two questions, and I think your question will be answered. Aug 31, 2022 at 13:47