I am working on MSK simulation. I have read the Chapter 5 of book entitled Digital Modulation Techniques by Fuqin Xiong. It is said that MSK can be viewed as a Sinusoidal Weighted OQPSK or CPFSK. If we write the MSK signal as

$$ s(t)=A\cos\left(2\pi f_c t + d_k \frac{\pi t}{2T} + \phi_k\right), \quad kT\leq t\leq (k+1)T $$

From the first perspective (MSK as a Sinusoidal Weighted OQPSK), we have $$ d_k=I_kQ_k , \quad \phi_k=\frac{\pi}{2}(1-I_k) $$

From the second perspective (MSK as CPFSK), we have $$ d_k=d_{k-1}\newcommand*\xor{\mathbin{\oplus}}a_k, \quad \phi_k=\frac{\pi}{2}\left(\sum_{i=0}^{k-1}d_i-kd_k\right) $$ where $\{a_k\}$ represents the original data stream and $\newcommand*\xor{\mathbin{\oplus}}$ is XOR. I have the following question:

  • Are the two methods for computing MSK and specifically $\phi_k$ equivalent?
  • Do they result in the same MSK signal?

In my simulations, the two MSK signals that I get from these two perspectives don't have the same phase.

  • $\begingroup$ I might try to formulate an answer later on; in the meantime have a look at this post explaining the relation between MSK and OQPSK. $\endgroup$
    – Matt L.
    Aug 24, 2016 at 9:04
  • 1
    $\begingroup$ One of the best tutorials on MSK as OQPSK with sinusoidal pulse shapes or as CPFSK is by S. Pasupathy in the IEEE Communications Magazine August 1979. Unfortunately, it is presumably behind IEEE's paywall and thus inaccessible to many, but a readable copy can be found on the Researchgate website. $\endgroup$ Aug 24, 2016 at 14:54

1 Answer 1


The answer to your question is yes, these two representations are equivalent. The first important thing to note is that in your formula, $d_k$ must be either $1$ or $-1$, because the frequency difference for MSK must be $\Delta f=1/2T$.

I'll add some information showing the equivalence of the two representations. Expanding your first formula gives

$$\begin{align}s(t)&=A\cos\left(2\pi f_ct+d_k\frac{\pi t}{2T}+\phi_k\right)\\&=A\left[\cos(2\pi f_ct)\cos\left(d_k\frac{\pi t}{2T}+\phi_k\right)-\sin(2\pi f_ct)\sin\left(d_k\frac{\pi t}{2T}+\phi_k\right)\right]\\&=A\left[\cos(2\pi f_ct)\cos\left(d_k\frac{\pi t}{2T}\right)\cos(\phi_k)-\sin(2\pi f_ct)\sin\left(d_k\frac{\pi t}{2T}\right)\cos(\phi_k)\right]\\&=A\left[\cos(2\pi f_ct)\cos\left(\frac{\pi t}{2T}\right)\cos(\phi_k)-\sin(2\pi f_ct)\sin\left(\frac{\pi t}{2T}\right)d_k\cos(\phi_k)\right]\\&=A\left[\cos(2\pi f_ct)\cos\left(\frac{\pi t}{2T}\right)I_k-\sin(2\pi f_ct)\sin\left(\frac{\pi t}{2T}\right)Q_k\right]\tag{1}\end{align}$$


$$I_k=\cos(\phi_k)\quad\text{and}\quad Q_k=d_k\cos(\phi_k)\tag{2}$$

where I've used $\cos(a+b)=\cos(a)\cos(b)-\sin(a)\sin(b)$, $\sin(a+b)=\cos(a)\sin(b)+\sin(a)\cos(b)$, the fact that $\sin(\phi_k)=0$ (because $\phi_k\in\{0,\pi\})$, and the fact that $d_k\in\{1,-1\}$.

Equation $(1)$ shows that the MSK signal $s(t)$ can be represented as a QPSK signal with in-phase component $I_k$ and quadrature component $Q_k$ with sinusoidal pulse shaping. In this blog post, it is shown that $I_k$ and $Q_k$ can never change at the same time, and both of them change with a rate $1/2T$. That's why this type of modulation is called offset QPSK (OQPSK). All this is related to the phase recursion shown in Eq. $(3)$ below.

In order for the MSK signal to have a continuous phase, the phase $\phi_k$ must satisfy the following recurrence relation:

$$\phi_k=\phi_{k-1}+(d_{k-1}-d_k)\frac{k\pi}{2}\qquad(\text{mod } 2\pi)\tag{3}$$

This relation is also derived in the above mentioned post (Eq. $(7)$). Note that the formula for $\phi_k$ in your question satisfies $(3)$. However, it's probably easier to directly use the recursion $(3)$. From $(3)$ it follows that

$$\phi_k=\begin{cases}\phi_{k-1}\pm\pi,&k\text{ odd and }d_k\neq d_{k-1}\\\phi_{k-1},&\text{otherwise}\end{cases}\tag{4}$$

From $(4)$ it is clear that $\phi_k$ changes with a rate $1/2T$.

Finally, inverting $(2)$, i.e., expressing $d_k$ and $\phi_k$ in terms of $I_k$ and $Q_k$, is straightforward:


because $\cos(\phi_k)$ can only be $1$ or $-1$. Furthermore, $1-\cos(\phi_k)$ equals $0$ for $\phi_k=0$ and $2$ for $\phi_k=\pi$. Consequently,


Both Equations $(5)$ and $(6)$ are correctly stated in your question.

In sum, all your formulas appear to be correct. You haven't shown your formulas for $I_k$ and $Q_k$; they should be equivalent to Eq. $(2)$. I have the suspicion that your $d_k$ are either $1$ or $0$. As mentioned above, they should be either $1$ or $-1$, otherwise $s(t)$ is no valid MSK signal. Also note that the mapping between the information bits and $d_k$ is totally irrelevant for all derivations shown above.

EDIT: In analogy with Eq. $(4)$, you can derive recursions for $I_k$ and $Q_k$ from Eqs. $(2)$ and $(3)$:

$$I_k=\begin{cases}-I_{k-1},&k\text{ odd and }d_k\neq d_{k-1}\\I_{k-1},&\text{otherwise}\end{cases}\tag{7}$$

$$Q_k=\begin{cases}-Q_{k-1},&k\text{ even and }d_k\neq d_{k-1}\\Q_{k-1},&\text{otherwise}\end{cases}\tag{8}$$

Choosing an initial phase $\phi_0=0$ results in the initial values $I_0=1$ and $Q_0=d_0$. From $(7)$ and $(8)$ it is obvious that $I_k$ and $Q_k$ never change at the same time, hence offset QPSK.

  • $\begingroup$ Thank you Matt for your comprehensive response. I would like to say that I have $d_k$ as 1 or -1. In Matlab, I have used $I_k=d_k$(2:2:end) and $Q_k=d_k$(1:2:end). I still don't know why the signals generated from two methods do not have the same phase always. Moreover, they also have a different phase compared with the MSK signal generated by Matlab's ${comm.MSKModulator }$ object and ${step}$ function. $\endgroup$
    – Cror2014
    Aug 24, 2016 at 19:33
  • $\begingroup$ @Cror2014: You must define $I_k$ and $Q_k$ according to Eq. $(2)$; they also depend on the phase $\phi_k$. If you implement it as shown in my answer you should get the same result for CPFSK and OQPSK. $\endgroup$
    – Matt L.
    Aug 24, 2016 at 20:44
  • $\begingroup$ Based on what you are saying, I should first compute $\phi_k$ and then $I_k$ and $Q_k$; You're right. This way the results should be the same. But, I think it should be possible to get $I_k$ and $Q_k$ directly from $d_k$ and then delay $Q_k$ one bit time. Because this is one of the modulator implementations shown in the book ${Digital Modulation Techniques}$ by Fuqin Xiong. In that, the data stream is converted to parallel and then $I_k$ and $Q_k$ is extracted. Other than this, as I said, the signal that I generate by either approaches, does not match the one generated by Matlab!! $\endgroup$
    – Cror2014
    Aug 25, 2016 at 12:40
  • $\begingroup$ @Cror2014: I've added recursion formulas for $I_k$ and $Q_k$ to my answer. As for the comparison with Matlab, you need to figure out how they map the information bits to $d_k$. $\endgroup$
    – Matt L.
    Aug 25, 2016 at 20:14

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.