discuss-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Discuss-gnuradio] ATSC Magic coupling constant


From: Andrew Davis
Subject: [Discuss-gnuradio] ATSC Magic coupling constant
Date: Tue, 30 Jul 2013 17:55:46 -0400

Hello all,

I'm working on fixing up gr-atsc and I have been working on a little problem for a while now, there is a constant ( FPLL_BTLOOP_COUPLING_CONST ) that sets the reference for an AGC, the value is ( 2.5 * 3.125 ) and is literally defined as "Magic", so it seems to be a value that "just works". With that value the AGC filters the real input and then this is multiplied by a NCO part of a PLL. This puts the value of the +/- 5 timing sync levels at about +/- 5. The problem is when I pass samples though the AGC and then do 'complex' multiplication on them the +/- 5 values end up at about +/- 7. I'm not sure why but it seems like the values coming out of the complex multiply are not the same as the real multiply. The original code is: 

nco.sincos (&a_sin, &a_cos);  // compute cos and sin
float I = input * a_sin;
float Q = input * a_cos;

My code is:

nco.sincos (&a_sin, &a_cos); // compute cos and sin
gr_complex result = (gr_complex(input_real, input_imag) * gr_complex(a_cos, a_sin));
float I = result.real();
float Q = result.imag();

I is larger in my version and so the equalizer and slicer fail downstream. I built a coherent AGC into the sync timing loop but it still fails with large gain differences. 

My question is whether there is anyone around who worked on gr-atsc who could give me a hint as to how the "Magic coupling constant" was derived in the first place so I can build a new one so I don't have to rebuild the equilizer.

Thank you
Andrew Davis

reply via email to

[Prev in Thread] Current Thread [Next in Thread]