# PSK Demod block

**URL:** <https://www.ruby-forum.com/t/psk-demod-block/232863>\
**Category:** GNU Radio\
**Created:** [October 31, 2014, 11:20pm UTC](https://www.ruby-forum.com/t/psk-demod-block/232863 "2014-10-31T23:20:38Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![addis\_a](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/c4cdca/32.png) [@addis\_a](https://www.ruby-forum.com/u/addis_a)\
**Post date:** [October 31, 2014, 11:20pm UTC](https://www.ruby-forum.com/t/psk-demod-block/232863/1 "2014-10-31T23:20:38Z")

</div>

Hi,  
do you know if the default PSK Demodulation block does any frecuency  
correction or time recovery?  
After running some tests, I have noticed that when I use a Channel Model  
between PSK mod and PSK demod, I successfully decode my data even I  
have a small frecuency offset or time offset (Epsilon)!

---

<div class="post-metadata">

**Author:** ![danielb](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/c57346/32.png) [@danielb](https://www.ruby-forum.com/u/danielb)\
**Post date:** [November 1, 2014, 12:11am UTC](https://www.ruby-forum.com/t/psk-demod-block/232863/2 "2014-11-01T00:11:19Z")

</div>

I believe so; see  
gnuradio/gr-digital/python/digital/generic\_mod\_demod.py:

…  
# symbol timing recovery with RRC data filter  
taps = filter.firdes.root\_raised\_cosine(nfilts,  
nfilts\*self.\_samples\_per\_symbol,  
1.0, self.\_excess\_bw,  
ntaps)  
self.time\_recov =  
digital.pfb\_clock\_sync\_ccf(self.\_samples\_per\_symbol,  
self.\_timing\_bw,  
taps,  
nfilts, nfilts//2,  
self.\_timing\_max\_dev)  
…

On Fri, Oct 31, 2014 at 3:16 PM, Daniel B. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)

---

<div class="post-metadata">

**Author:** ![danielb](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/c57346/32.png) [@danielb](https://www.ruby-forum.com/u/danielb)\
**Post date:** [November 1, 2014, 12:16am UTC](https://www.ruby-forum.com/t/psk-demod-block/232863/3 "2014-11-01T00:16:05Z")

</div>

Thank you Karl!

On Saturday, November 1, 2014 12:25 AM, Karl Koscher  
[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

I believe so; see  
gnuradio/gr-digital/python/digital/generic\_mod\_demod.py:

…  
# symbol timing recovery with RRC data filter  
taps = filter.firdes.root\_raised\_cosine(nfilts,  
nfilts\*self.\_samples\_per\_symbol,  
1.0, self.\_excess\_bw,  
ntaps)  
self.time\_recov =  
digital.pfb\_clock\_sync\_ccf(self.\_samples\_per\_symbol,  
self.\_timing\_bw,  
taps,  
nfilts, nfilts//2,  
self.\_timing\_max\_dev)  
…

On Fri, Oct 31, 2014 at 3:16 PM, Daniel B. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
wrote:

Hi,
