# Gardner timing sync loop quetion

**URL:** <https://www.ruby-forum.com/t/gardner-timing-sync-loop-quetion/230171>\
**Category:** GNU Radio\
**Created:** [June 3, 2014, 10:50am UTC](https://www.ruby-forum.com/t/gardner-timing-sync-loop-quetion/230171 "2014-06-03T10:50:28Z")\
**Posts on this page:** 2\
**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 3, 2014, 10:50am UTC](https://www.ruby-forum.com/t/gardner-timing-sync-loop-quetion/230171/1 "2014-06-03T10:50:28Z")

</div>

Hi all,  
I am designing a 2 order Gardner timing sync loop(with 1 order PI loop  
filter) for QAM64.  
As Best’s PLL book metioned, timing sync loop’s parameter can be  
calculated by using PLL theory.  
Now I need calculate the PI loop filter’s factor K1(P gain) and K2(I  
gain). According PLL theory, we can get them from Wn(nature freq)  
Kd(phase detector gain) Ko(NCO gain).  
I can get Kd from open loop simulate, and Ko equals to 1  
Wn can get from BL(noise bandwidth).  
My quetion is how to define BL, anyone can tell me how to calculate it  
from PPM(ADC’s freq offset)?

Thanks  
Tiankun

---

<div class="post-metadata">

**Author:** ![Tiankun\_Hu](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/46a35a/32.png) [@Tiankun\_Hu](https://www.ruby-forum.com/u/Tiankun_Hu)\
**Post date:** [June 4, 2014, 4:23pm UTC](https://www.ruby-forum.com/t/gardner-timing-sync-loop-quetion/230171/2 "2014-06-04T16:23:39Z")

</div>

On Tue, Jun 3, 2014 at 4:12 AM, Tiankun Hu [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
wrote:

> My quetion is how to define BL, anyone can tell me how to calculate it  
> from PPM(ADC’s freq offset)?
> 
> Thanks  
> Tiankun

Take a look at this:

> **[Control Loop Gain Values — Rondeau Research](http://www.trondeau.com/blog/2011/8/13/control-loop-gain-values.html)**
>
> I have recently been working on updating our digital modulation capabilities in GNU Radio. This has involved making a gr-digital namespace, moving all relevant digital modulation work over, and going through and fixing up a number of the algorithms....

I don’t think it exactly answers your question, but might be helpful.  
Also,  
we have the gr::blocks::control\_loop class that you can inherit from to  
make this easier for you to use. See the costas\_loop\_cc block for an  
example of how.

Tom
