# Phase demodulation

**URL:** <https://www.ruby-forum.com/t/phase-demodulation/230650>\
**Category:** GNU Radio\
**Created:** [June 27, 2014, 8:52pm UTC](https://www.ruby-forum.com/t/phase-demodulation/230650 "2014-06-27T20:52:51Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![jason\_sam](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/7993a0/32.png) [@jason\_sam](https://www.ruby-forum.com/u/jason_sam)\
**Post date:** [June 27, 2014, 8:52pm UTC](https://www.ruby-forum.com/t/phase-demodulation/230650/1 "2014-06-27T20:52:51Z")

</div>

Hello,

This question is not strictly GNURadio related, but I hope to find  
people more knowledgeable than me here…

I have a signal x(t) at a carrier frequency fc which is phase modulated.  
The phase modulation itself is modulated at a modulation frequency fmod:

x(t) = Eo cos(2 pi fc t + m(t))

m(t) = Ao cos(2 pi fmod + phi)

I know exactly fmod (it is a coherent modulation/demodulation  
experiment), and I have a good estimate of fc. I need to, extract  
amplitude Ao and phase phi of that modulation.

I use an USRP to obtain the in-phase and quadrature component of the  
x(t) signal at the carrier frequency. The naive approach would be then  
to extract the phase of x(t) from that and simply demodulate it  
multiplying by a complex sine wave ans low pass filtering.

However, the fact that I only have an estimate of the carrier frequency  
(and some low Fourier frequency noise on the carrier frequency) means  
that I have a linear phase evolution. This can be taken care with  
unwrapping but I quickly end up with a very large phase.

I thought for a while about this but I cannot come up with a solution  
that avoids extracting the phase from the I and Q components and doing  
unwrapping. I’m sure I’m missing something.

What’s the best approach to solve this problem?

Thanks. Cheers,  
Daniele

---

<div class="post-metadata">

**Author:** ![Daniele\_N](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/74df32/32.png) [@Daniele\_N](https://www.ruby-forum.com/u/Daniele_N)\
**Post date:** [July 1, 2014, 6:34pm UTC](https://www.ruby-forum.com/t/phase-demodulation/230650/2 "2014-07-01T18:34:27Z")

</div>

On 27/06/2014 20:51, Daniele N. wrote:

> I know exactly fmod (it is a coherent modulation/demodulation  
> experiment), and I have a good estimate of fc. I need to, extract  
> amplitude Ao and phase phi of that modulation.

Hello,

the solution that I found (and that works very well) is to track the  
carrier frequency with a digital PLL. With the tracking PLL block in  
GNURadio it is easy. GNURadio is fun! 🙂

Cheers,  
Daniele

---

<div class="post-metadata">

**Author:** ![Daniele\_N](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/74df32/32.png) [@Daniele\_N](https://www.ruby-forum.com/u/Daniele_N)\
**Post date:** [July 3, 2014, 6:19pm UTC](https://www.ruby-forum.com/t/phase-demodulation/230650/3 "2014-07-03T18:19:22Z")

</div>

On Tue, Jul 1, 2014 at 12:33 PM, Daniele N. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
wrote:

> > 
> 
> Cheers,  
> Daniele

Yep, that’s a pretty classic way to do it. Glad you figured it out!

Tom
